牛客網暑期ACM多校訓練營(第十場)

2021-08-25 08:24:35 字數 3196 閱讀 7764

jls場

a 簽到

#include 

using namespace std;

const long

long

mod=998244353;

int n,m,t,c,l,r;

long

long a[100007],sum[100007];

long

long cal(long

long a, long

long b)

return

sum;

}int main()

for (int i=1;i<=m;i++)}}

return

0;}

d

差分,暴力

#include 

using namespace std;

typedef long long ll;

const ll mod=998244353;

ll power(ll n,ll p)

return ans;

}ll fac[200007];

ll inv[200007];

inline ll c(ll x,ll y)

void debugc()rec[100003];

ll tot;

ll t,n,q;

int main()

// debugc();

scanf("%lld",&t);

while(t--);

}else

if(typ==2);

}else

}ans1=(ans1-ans2+mod)%mod;

printf("%lld\n",ans1);}}

}}

e

數論,容斥,暴力卡常

#include 

using

namespace

std;

typedef

long

long ll;

const ll mod=998244353;

ll power(ll n,ll p)

p>>=1;

base=base*base%mod;

}return ans;

}ll t,n,m;

ll a[200003];

ll b[200003];

ll cnt[200003];

ll g[200003];

ll res[200003];

ll inv[200003];

ll tot;

int main()

scanf("%lld",&t);

while(t--)

for(ll i=1;i<=100000;i++)

}ll ans=0;

for(ll m=1;m<=m;m++)

}sort(g+1,g+1+tot);

for(ll i=tot;i>=1;i--)

}tmp=(tmp+res[i]*inv[m/g[i]])%mod;

}ans^=tmp;

}printf("%lld\n",ans);

}}

f

floyd一遍,列舉一條邊歸併d陣列

#include 

using namespace std;

typedef long

long ll;

const ll mod=998244353;

ll power(ll n,ll p)

return ans;

}int t;

int n;

ll g[505][505];

struct noderec[505][505];

bool vis[505];

bool cmp(node a,node b)

}sum=sum*(n-2)%mod*(n+1)%mod;

sum=sum*power(4,mod-2)%mod;

ans=sum;

for(int k=1;k<=n;k++)}}

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

}sort(rec[i]+1,rec[i]+1+n,cmp);

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

else }}

}printf("%lld\n",ans);

}}

h

類歐幾里德

#include

using namespace std;

#define ll long long

int t;

ll a,b,c,d,n;

__int128 f(__int128 a, __int128 b, __int128 c, __int128 n)

else

if(a>=c || b>=c)

else

}void print(__int128 x)

}int main()

if(a*d

*c) n=d*(a+b)/(a*d-b*c);

//cout

<<(ll)f(c,d,d,c)<<" "

<<(ll)f(a,0,b,n-1)<0,b,n-1);

assert(ans>=2);

print((ans-1)%998244353);

putchar('\n');

}return

0;}

j

上香

#include 

using

namespace

std;

int t,n;

char s[1000003];

int len;

int nxt[1000003][26];

char t[1000003];

void insert(char c)

}int main()

k=nxt[k][t[j+1]-'a'];}}

for(int i=1;i<=len;i++)printf("%c",s[i]);

printf("\n");

}}

託牛客睿智積分計算公式的福,竟然苟到了總排名第十。。。

牛客網暑期ACM多校訓練營(第九場)

做法 看到下標 xor 這種情況就想 fwt 可是半天沒思路,於是放棄了。其實這個 n 瘋狂暗示啊。設未知數向量為 x 列一下方程組就可以發現有 b k sum a i x j 做法就顯然了吧,把 a 和 b 分別 fwt 對應相除然後反變換即可。表示前天才學的 fwt 就不會使了。include ...

牛客網暑期ACM多校訓練營(第五場)

二分答案,然後就轉化為是否滿足 frac d sum s i c i sum s i d sum s i c i d 0 顯然科目越少gpa越高,於是去掉最小的k個判斷即可。include define rep i,a,b for int i a i b i define per i,a,b for...

牛客暑期多校訓練營B Boundary

給定n個點,然後確定乙個過原點的圓,要使這n個點盡可能多的存在與圓上,最後輸出最多的存在於圓上的點的個數 三點確定乙個圓,我們已知這個圓必定經過原點,所以再依次利用三點求圓心的公式列舉每兩個點與原點 三點不共線 確定的圓心,最後選擇確定次數最多的圓心構成的圓 include include incl...