摘要: namespace BFZ{ int k=1,ssz,rt,tot; int h[N],dep[N],sz[N],vis[N]; vector<pair<int,int> > G[N]; struct AB{ int a,b,c,n; }d[N*2]; void cun(int x,int y,in 阅读全文
posted @ 2023-12-26 22:00 hubingshan 阅读(45) 评论(0) 推荐(0)
摘要: 我们考虑暴力咋做,每次得到一个森林之后,必定是从最大的树上摘一棵子树,挪到最小的树上,所以此时的答案为 \(max(siz_{mx}-x,siz_{mn}+x,siz_{次大值} )\),于是发现 \(x=\frac{siz_{mx}-siz_{mn}}{2}\) 时答案最优,所以只需找到这个值的前 阅读全文
posted @ 2023-12-26 11:00 hubingshan 阅读(36) 评论(0) 推荐(0)
摘要: HNOI2017 影魔 对于两种贡献,都只用考虑左边第一个比自己大的,和右边第一个比自己大的数,分别记为 \(l_i、r_i\) 对于询问一,每个数对 \((l_i,r_i)\) 构成全部情况 对于询问二,可以拆分成 \(x=l_i\) 时,\(y \in [i+1,r_i-1]\) ,以及 \(y 阅读全文
posted @ 2023-12-25 21:42 hubingshan 阅读(20) 评论(0) 推荐(0)
摘要: CF1178H题解 分成两个问题解决 问题一:最小时间 发现具有单调性,于是二分,考虑怎么 \(check\) ,画几个函数图像之后看出,在最终时刻最大的\(n\) 个点,在 \(0\) 时刻必然要可以取到 问题二:最小交换次数 正常费用流建图,初始,终止时各一个,前缀和优化建边 具体的,是在排过序 阅读全文
posted @ 2023-12-24 17:19 hubingshan 阅读(23) 评论(0) 推荐(0)
摘要: \(mxb\) 为历史最大值,\(tg1,tg2,tg3,tg4\) 分别对应最大值真实 \(tag\) ,其他值真实 \(tag\) ,最大值最大 \(tag\) ,其它值最大 \(tag\) #include<bits/stdc++.h> using namespace std; #define 阅读全文
posted @ 2023-12-21 21:45 hubingshan 阅读(27) 评论(0) 推荐(0)
摘要: 题目大意 你需要对每一个长度的区间,求出以他为长度的区间的 \(mex\) 构成集合的 \(mex\) \(n\le10^5\) 大致思路 有一个神奇的结论:对于点 \((l,r)\) 为 \(mex_{l,r}\) 的矩形,其中按颜色分割得到的矩形数是 \(O(n)\) 级别的 证明&实现:我们考 阅读全文
posted @ 2023-12-21 16:01 hubingshan 阅读(167) 评论(0) 推荐(0)
摘要: 性质 性质一: 竞赛图的强连通分量构成一个链状结构(任意两\(SCC\)间都有边) 性质二: 一个竞赛图如果是强连通的,那么必然存在一条哈密顿回路,并且可以在 \(O(V^2)\) 的时间内找到 证明:数学归纳法 只有一个点时肯定成立 拆掉多的那个点,由于强连通,这个点必然能把剩下的哈密顿路径接起来 阅读全文
posted @ 2023-12-20 19:38 hubingshan 阅读(192) 评论(0) 推荐(0)
摘要: 区间区间并 对于区间区间并这类问题,可以枚举某个段看是否被统计 但存在类问题不好统计 我们考虑转化为求和形式: 即在范围内包含这个段的区间个数-相邻两个都在范围内且包含这个区间的个数 ,这样可以用类似扫描线、差分的方式来统计 几道类似题: 差分+双指针维护 扫描线+树状数组 阅读全文
posted @ 2023-12-20 14:52 hubingshan 阅读(34) 评论(0) 推荐(0)
摘要: struct ZXS{ int tot=0; TREE tr[N*32]; int xin(int p){ tot++,tr[tot]=tr[p]; return tot; } void up(int p){ int ls=tr[p].ls,rs=tr[p].rs; tr[p].val=tr[ls] 阅读全文
posted @ 2023-12-20 11:45 hubingshan 阅读(30) 评论(0) 推荐(0)
摘要: struct TRIE{ int tot; int ch[N*31][2]; TRIE(){memset(ch,0,sizeof(ch));tot=1;} void insert(int x){ int p=1; for(int i=29;i>=0;i--){ int c=(x>>i)&1; if( 阅读全文
posted @ 2023-12-20 11:44 hubingshan 阅读(20) 评论(0) 推荐(0)