讲几个笑话

· · 个人记录

灵感来源于一年前这段时间发的一个帖子《讲几个笑话》

void Tarjan(int u,int from)
{
  dfn[u]=low[u]=++dfscnt;
  for(int e=head[u];e;e=nxt[e]){
    int v=to[e];
    if(v==from) continue;
    if(!dfn[v]){
      Tarjan(v,e);
      low[u]=min(low[u],low[v]);
    }
    else{
      low[u]=min(low[u],dfn[v]);
    }
  }
}
#define int unsigned long long
int pw[70];
for(int i=63;i>=0;i--) pw[i]=1ull<<i;
int ans,n;
void dfs(int d)
{
  if(d==n){
    ans++;
  }
  dfs(d+1);
}
int p[N],cnt,vis[N];
for(int i=2;i<=1000000;i++){
  if(!vis[i]){
    p[++cnt]=i;
    for(int j=i+i;j<=1000000;j++) vis[j]=1;
  }
}
int n,tot;
cin>>n;
while(n--){
  int x;
  cin>>x;
  tot+=x;
}
cout<<tot/n<<endl;
string s="";
for(int i=0;i<=s.size()-1;i++){
  cout<<s[i];
}
int f[N][20];
for(int j=1;j<=20;j++){
  for(int i=1;i<=n-(1<<j)+1;i++){
    f[i][j]=max(f[i][j-1],f[i+(1<<j)][j-1]);
  }
}
const int N=1005,M=1e6+5;
int n,m; //n<=1000,m<=1000000
int head[N],nxt[N],to[N],edge[N],tot;
cin>>n>>m;
for(int i=1;i<=m;i++){
  int x,y,z;
  cin>>x>>y>>z;
  add_edge(x,y,z);
  add_edge(y,x,z);
}
const int N=1000005;
int vis[N];
for(int i=1;i<=N;i++) vis[i]=1;
int n,cnt;
cin>>n;
for(int i=2;i<=n;i++){
  if(n%i==0){
    cnt++;
    while(n%i==0) n/=i;
  }
}
printf("%d has %d prime factors\n",n,cnt);
#define int long long
int n;
scanf("%d",&n);
printf("%d\n",n); //Try this in Linux!
#define int long long
int pw2[70];
for(int i=0;i<=63;i++) pw2[i]=1<<i;
#include <bits/stdc++.h>
using namespace std;
const int N=100005;
int head[N],next[N],to[N],tot;
for(int i=1;i<=n;i++){
  for(int j=1;j<=n;j++){
    for(int k=1;k<=n;k++){
      dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
    }
  }
}
int f[N][21];
for(int i=1;i<=n;i++){
  for(int j=1;j<=20;j++){
    f[i][j]=max(f[i][j-1],f[i+(1<<j)][j-1]);
  }
}
#include <bits/stdc++.h>
using namespace std;
int x1,y1,x2,y2;
const int PI=acos(-1.0);
const int N=2e3+5;
int n=1200;
int a[N];
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) a[i+n]=a[i];

感谢 @听取MLE声一片

for(int i=0;i<=21;i++)
  if(book[dis[x]^(1<<i)])
    ans[x]=max(ans[x],book[dis[x]^(i<<i)]-dep[x]);

感谢 @dajuanlaoliuhongqian

#define inf 0x7fffffff
priority_queue<int>q;//利用取相反数实现小根堆
for(int i=1;i<=n;++i)if(a[i]=-1)a[i]=inf;
for(int i=1;i<=n;++i)q.push(-a[i]);
while(q.size()>1){
    int b,c;
    b=-q.top();q.pop();
    c=-q.top();q.pop();
    q.push(-b-c);
}
printf("%d",-q.top());

感谢 @lyx20070301

void dfs(int x,int y)
{
    if(x<1||y<1||x>n||y>m)return;
    kk++;
    for(int i=1;i<=8;i++)
    {
        int tx=x+dx[i];
        int ty=y+dy[i];
        if(sky[tx][ty]==true)
        {
            sky[tx][ty]=false;
            dfs(tx,tx);
        }
    }
}

感谢 @aleph_blanc

#define N 1000010
int pri[N], mu[N], cnt;
bitset <N> is;
inline void phigros (int n) {
    mu[1] = 1;
    for (int i = 1; i <= n; i++) {
        (! is[i]) and (pri[++cnt] = i, mu[i] = -1);
        for (int j = 1; j <= cnt and i * pri[j] <= n; j++) {
            pri[i * pri[j]] = 1;
            if (i % pri[j] == 0) break;
            mu[i * pri[j]] = -mu[i];
        }
    }
}

感谢 @dajuanlaoliuhongqian (2)

if(tmp)for(int i=1;i<=n;++i)if(map_[i][x])++ans;
else for(int i=1;i<=n;++i)if(map_[x][i])++ans;

感谢 @qwq自动机

struct vertex
{
    ...
} ver[MAXN]; // 节点,
int rnk[MAXN], dfntot = 0;
void decomp(int cur, int top) // 剖
{
    ver[cur].top = top;
    ver[cur].dfn = ++dfntot;
    rnk[dfntot] = cur;
    if (!ver[cur].hson)
        return;
    decomp(ver[cur].hson, top);
    for (auto i : ver[cur].to)
        if (i == ver[cur].hson && i == ver[cur].pre)
            decomp(i, i);
}

感谢 @qwq自动机(2)

long long duGetSum(long long n)
{
    if (n <= MAXN)
        return sum[n];
    if (duSumMap.count(n))
        return duSumMap[n];
    long long res = 0, l = 1, r;
    while (l <= n)
    {
        r = n / (n / l);
        res += (gSum[r] - gSum[l]) * duGetSum(n / l);
        l = r + 1;
    }
    return res;
}

感谢 @cmk666

for(int i=1;i<=n;i++){
  for(int j=1;j<=n;i++){
    f[i][j]=f[i][j-1]+f[i-1][j-1];
  }
}

感谢 @baiABC

int m = (int)sqrt(n+.5);
for(int i = 2; i < m; ++i)
    if(n % i == 0)
    {
        int t = 0;
        while(n % i == 0){++t; n /= i;}
        cout << i << t << endl;
    }
return 0;

感谢 @JY

for(int minm=1;i<=maxm;i++){/*do sth*/}

感谢 @ tgyyds

for(int i=n;i<=1;i++) ;

感谢 @int1

fac[0] = 1; for(int i = 1; i <= n; ++i) fac[i] = fac[i - 1] * i % Mod;
invf[n] = qpow(n, Mod - 2); for(int i = n - 1; i >= 0; --i) invf[i] = invf[i + 1] * (i + 1) % Mod;

感谢 @int1 (2)

LL qpow(LL a, LL p) {
    LL res = 0;
    while(p % 1) {}
    return res;
    /**/
}

欢迎大家在评论里面投稿hh
题解(写了一半实在不想写了)