摘要: struct BIT{ int sz; vector<int> c; void build(int s){ c.resize(s+1); sz=s; } int lowbit(int x){ return x&(-x); } void add(int x,int y){ x++; for(;x<=s 阅读全文
posted @ 2023-12-20 11:43 hubingshan 阅读(15) 评论(0) 推荐(0)
摘要: struct Lca{ int tot=0; int dep[N],pos[N],lca[N*2][20],lg[N*2]; void pre(int x,int fa){ dep[x]=dep[fa]+1,pos[x]=++tot,lca[tot][0]=x; for(int i=h[x];i;i 阅读全文
posted @ 2023-12-20 11:39 hubingshan 阅读(39) 评论(0) 推荐(0)
摘要: int summu(int n){ if(n<=maxn) return mu[n]; if(smu.find(n)!=smu.end()) return smu[n]; int sh=1; for(int l=2,r;l<=n;l=r+1){ r=n/(n/l); sh-=(r-l+1)*summ 阅读全文
posted @ 2023-12-20 11:37 hubingshan 阅读(19) 评论(0) 推荐(0)
摘要: void pre(){ vis[1]=g[1]=f[1]=mu[1]=phi[1]=d[1]=1; for(int i=2;i<=n;i++){ if(!vis[i]){ pri[++tot]=i;//质数 phi[i]=i-1;//欧拉函数 mu[i]=-1;//莫比乌斯 d[i]=2;//约数个 阅读全文
posted @ 2023-12-20 11:36 hubingshan 阅读(16) 评论(0) 推荐(0)
摘要: ull shift(ull x){ x^=sui,x^=x<<13,x^=x>>7,x^=x<<17,x^=sui; return x; } void dfs1(int x,int fa){//算哈希值 hs[x]=1; for(int i=h[x];i;i=d[i].n){ int y=d[i]. 阅读全文
posted @ 2023-12-20 11:35 hubingshan 阅读(32) 评论(0) 推荐(0)
摘要: Organizing Colored Sheets 结论:如果每种型号的矩形无法完成覆盖,那么一定死于某些边界点 于是对各个方向枚举边界点,求矩形面积并一样的东西即可 Mission Impossible: Grand Theft Auto 首先有一个贪心的选法,按照dfs序,从中间向外匹配,但发现 阅读全文
posted @ 2023-12-20 11:31 hubingshan 阅读(54) 评论(0) 推荐(0)
摘要: [AGC010E] Rearranging 先思考给一个序列,如何求出交换后的最大字典序 显然,不互质的数之间的相对顺序不会改变,于是可以用拓扑排序求出最大字典序 那考虑先手策略,第一次时找出最小的数,向所有和他不互质的数连有向边,并将这些数向比他小的不互质的数连边,第若干次操作选的必须是已经和第一 阅读全文
posted @ 2023-12-19 20:38 hubingshan 阅读(26) 评论(0) 推荐(0)
摘要: [ARC107F] Sum of Abs 发现点数比较少,考虑最小割 我们最大可能的答案为 \(\sum|b_i|\) ,现在考虑减去多余答案 首先点可以不选,于是拆点,之间边权为 \(a_i+|b_i|\) 钦定割完之后,和 \(S\) 连通的点最终取正数,和 \(T\) 连通的点最终取负数,于是 阅读全文
posted @ 2023-12-19 20:31 hubingshan 阅读(26) 评论(0) 推荐(0)
摘要: P7446 [Ynoi2007] rfplca 可以用分块维护,记 $ b_i $ 表示这个块中第一个 \(a_i\) 不在块中的值 区间修改: 对于散块,直接暴力重构 对于整块,发现 \(b_i\) 所属点最多只会改变 \(\sqrt n\) 次,所以也暴力重构 查询: 考虑像倍增一样的过程,先把 阅读全文
posted @ 2023-12-19 20:14 hubingshan 阅读(30) 评论(0) 推荐(0)
摘要: 递归版 #include<bits/stdc++.h> using namespace std; #define N 4000005 int n,m; const double Pi=acos(-1); int tr[N]; struct CP{ double x,y; }f[N],g[N]; CP 阅读全文
posted @ 2023-09-21 21:50 hubingshan 阅读(54) 评论(0) 推荐(0)