讲几个笑话
灵感来源于一年前这段时间发的一个帖子《讲几个笑话》
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
题解(写了一半实在不想写了)