暑假集训csp提高模拟8
赛时rank 19,T1 100,T2 20,T3 10,T4 0
T2
淦
题目名称看着就离谱
T1 基础的生成函数练习题(gf)
签到题。
考虑有几个奇偶性相同的。
若最多的有三个,输出(2*c-b-a)/2;
反之,若奇数多,将所有的奇数加一后,输出(2*c-b-a)+1;
反之,若偶数多,将所有的偶数加一后,输出(2*c-b-a)+1;
点此查看代码
#include<bits/stdc++.h> #include<bits/extc++.h> // using namespace __gnu_pbds; // using namespace __gnu_cxx; using namespace std; #define infile(x) freopen(x,"r",stdin) #define outfile(x) freopen(x,"w",stdout) #define errfile(x) freopen(x,"w",stderr) using ll=long long;using ull=unsigned long long;using db = double; #ifdef LOCAL FILE *InFile = infile("in.in"),*OutFile = outfile("out.out"); // FILE *ErrFile=errfile("err.err"); #else FILE *Infile = stdin,*OutFile = stdout; //FILE *ErrFile = stderr; #endif ll a[4]; signed main(){ cin.tie(nullptr)->sync_with_stdio(false); cout.tie(nullptr)->sync_with_stdio(false); cin>>a[1]>>a[2]>>a[3]; sort(a+1,a+1+3); int tot1 = 0,tot2 = 0; for(int i = 1;i <= 3; ++i){ tot1 += (a[i] & 1); tot2 += !(a[i] & 1); } if(tot1 == 3 || tot2 == 3){ cout<<(a[3]-a[2])/2+(a[3]-a[1])/2; } else{ int ans = 0; if(tot1 == 2){ for(int i = 1;i <= 3; ++i){ if(a[i]&1) a[i]++; } ans++; } else{ for(int i = 1;i <= 3; ++i){ if(!(a[i]&1)) a[i]++; } ans++; } cout<<(a[3]-a[2])/2+(a[3]-a[1])/2+1<<'\n'; } }
T2 简单的拉格朗日反演练习题(lagrange)
简单题。
考虑求出最小生成树,求出最小生成树上
并查集一定要路径压缩啊!!
点此查看代码
#include<bits/stdc++.h> #include<bits/extc++.h> // using namespace __gnu_pbds; // using namespace __gnu_cxx; using namespace std; #define infile(x) freopen(x,"r",stdin) #define outfile(x) freopen(x,"w",stdout) #define errfile(x) freopen(x,"w",stderr) using ll=long long;using ull=unsigned long long;using db = double; #ifdef LOCAL FILE *InFile = infile("in.in"),*OutFile = outfile("out.out"); FILE *ErrFile=errfile("err.err"); #else FILE *Infile = stdin,*OutFile = stdout; //FILE *ErrFile = stderr; #endif const int N = 2e5 + 10; int fa[N],u[N],v[N],n,m,q,tim[N],siz[N]; vector<pair<int,int> > edge[N]; #define pii pair<int,int> #define mk make_pair int get_fa(int x){return (x==fa[x]?x:fa[x]=get_fa(fa[x]));} inline void merge(int x,int y,int i){ int fx = get_fa(x),fy = get_fa(y); if(fx == fy) return; if(siz[fx] > siz[fy]) swap(x,y),swap(fx,fy); fa[fx] = fy; siz[fy] += siz[fx]; edge[fy].push_back(mk(fx,i)); edge[fx].push_back(mk(fy,i)); } int a[N],ans[N],st[18][N]; inline void pre(){ int t = log2(n)+1; // memset(st,0,sizeof st); for(int i = 1;i <= n; ++i) st[0][i] = a[i]; for(int j = 1;j <= t; ++j){ for(int i = 1;i + (1<<j) - 1 <= n; ++i){ st[j][i] = max(st[j-1][i],st[j-1][i+(1<<(j-1))]); } } } inline void pre1(){ int t = log2(n)+1; // memset(st,0,sizeof st); for(int i = 1;i <= n; ++i) st[0][i] = ans[i]; for(int j = 1;j <= t; ++j){ for(int i = 1;i + (1<<j) - 1 <= n; ++i){ st[j][i] = max(st[j-1][i],st[j-1][i+(1<<(j-1))]); } } } inline int query(int l,int r){ if(l > r) return 0; int k = log2(r-l+1); return max(st[k][l],st[k][r-(1<<k)+1]); } namespace TCS{ int dfn[N],siz[N],fa[N],son[N],top[N],tot,ori[N],dep[N]; void dfs1(int x){ siz[x] = 1; dep[x] = dep[fa[x]] + 1; for(auto i : edge[x]){ int y = i.first; if(y == fa[x]) continue; fa[y] = x; dfs1(y); siz[x] += siz[y];ori[y] = i.second; if(siz[son[x]] < siz[y]) son[x] = y; } } void dfs2(int x,int t){ dfn[x] = ++tot; a[tot] = ori[x]; top[x] = t; if(son[x]) dfs2(son[x],t); else return; for(auto i:edge[x]){ int y = i.first; if(y == fa[x] || y == son[x]) continue; dfs2(y,y); } } inline int Query(int x,int y){ int fx = top[x],fy = top[y],ans = 0; while(fx != fy){ if(dep[fx] < dep[fy]) swap(x,y),swap(fx,fy); ans = max(ans,query(dfn[fx],dfn[x])); x = fa[fx]; fx = top[x]; } if(dep[x] > dep[y]) swap(x,y); ans = max(ans,query(dfn[x]+1,dfn[y])); return ans; } } signed main(){ cin.tie(nullptr)->sync_with_stdio(false); cout.tie(nullptr)->sync_with_stdio(false); cin>>n>>m>>q; for(int i = 1;i <= n; ++i) fa[i] = i; for(int i = 1,u,v;i <= m; ++i){ cin>>u>>v; merge(u,v,i); } int s = get_fa(1); TCS::dfs1(s);TCS::dfs2(s,s); pre(); for(int i = 1;i < n; ++i) ans[i] = TCS::Query(i,i+1); pre1(); int l,r; for(int i = 1;i <= q; ++i){ cin>>l>>r; if(l == r){cout<<0<<'\n';continue;} cout<<query(l,r-1)<<'\n'; } }
T3 容易的多元拉格朗日反演练习题(multi)
大难题,谁家出题人往csp模拟赛里放AGC的D题啊
不会啊,防AK题,跳了
T4 朴素的抽象代数题(algebra)
难题,找循环节,懒得打了。
总结:唐。
__________________________________________________________________________________________
本文来自博客园,作者:CuFeO4,转载请注明原文链接:https://www.cnblogs.com/hzoi-Cu/p/18325849
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】