![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
构造
wind__whisper
qwq
展开
-
P3226 [HNOI2012]集合选数(状压、构造)
耳目一新的构造原创 2022-04-26 11:57:01 · 147 阅读 · 0 评论 -
CF1616F Tricolor Triangles(构造、高斯消元)
解析 关键性质:三元环合法等价于边权和模3等于0。 还有一个常识:三元环的级别是O(mm)O(m\sqrt m)O(mm)。 证明: 三个点度数都大于 m\sqrt mm 的点不超过Cm3=mmC_{\sqrt m}^3=m\sqrt mCm3=mm 个。 如果含有度数小于m\sqrt mm 的点,考虑从这样的点伸出去的每条边,最多和 m\sqrt mm 条边配对成环,所以也不超过 mmm\sqrt mmm 个。 所以本题暴力找出所有的三元环高斯消元就行了,常数很小。 看题解学会了一直因原创 2022-04-05 23:37:55 · 254 阅读 · 0 评论 -
# CF1572B Xor of 3(构造)
巧妙的构造原创 2022-03-21 17:32:40 · 2762 阅读 · 0 评论 -
洛谷P7515:矩阵游戏(差分约束)
差分约束原创 2022-02-27 10:15:33 · 3529 阅读 · 0 评论 -
CF819E:Mister B and Flight to the Moon(构造、归纳法)
解析 本题也算看了一半题解吧 看到“数学归纳法”退出来自己推的 这题想到归纳法后面也就简单了 首先,n=3和n=4的时候显然有解,可以打表 然后考虑在获得n-2的答案时,如何获得n的答案 如果n为奇数,我们可以把(1,n-1,2,n)、(3,n-1,4,n)…(n-4,n-1,n-3,n)各连两次,最后连两个(n-2,n-1,n) 如果n为奇数,我们可以把(1,n-1,2,n)、(3,n-1,4,n)…(n-5,n-1,n-4,n)各连两次,最后连一个(n-3,n-1,n-2,n)、(n-3,n-1,n)和原创 2021-11-15 14:43:06 · 253 阅读 · 0 评论 -
CF453C:Little Pony and Summer Sun Celebration(dfs、构造)
解析 比较巧妙的一道题 首先左一棵dfs生成树出来 尝试把它的欧拉序列作为答案 但是这样可能会有的地方不符合条件 如果x点的奇偶性不符合,就在序列中加入一个(x,fa) 同时改变x和fa的奇偶性 显然不会超过4*n 如果根需要改奇偶性怎么办? 最后一次回溯删掉就行了 代码 #include<bits/stdc++.h> using namespace std; const int N=4e5+100; const int mod=1e9+7; double eps=1e-10; #define原创 2021-11-12 11:03:29 · 86 阅读 · 0 评论 -
兰道定理(竞赛图)
所谓兰道定理,就是兰道定下的道理 (逃) 解析 每条边被规定了方向的完全图叫做竞赛图 竞赛图中,设每个点的出度为uiu_iui 显然有: ∑ui=n×(n−1)2\sum u_i=\dfrac{n\times(n-1)}{2}∑ui=2n×(n−1) 而兰道定理的内容是: 若n个点的出度序列升序排序后为sis_isi,那么其能构成竞赛图的充要条件是,对于任意的k属于[1,n],都有: ∑i=1ksi>=k×(k−1)2\sum_{i=1}^ks_i>=\dfrac{k\times(k.原创 2021-11-12 10:31:32 · 914 阅读 · 2 评论 -
CF1406E:Deleting Numbers(构造、根号分块)
解析 打表发现1e5以内的质因子是9592个 就是它没错了 容易想到枚举因子判断答案是否异常来判断是否包含该质因子 但是这个方法在最小质因子处是不奏效的 那么如何找到最小的质因子呢? 考虑把所有的质因子分成m\sqrt mm块 然后每扫完一块,问一下 (A,1)(A,1)(A,1) 如果异常,那么最小质因子就在这块里 暴力扫一遍找出来即可 代码 #include<bits/stdc++.h> using namespace std; const int N=3e5+100; const int原创 2021-11-11 23:53:11 · 83 阅读 · 0 评论 -
CF1406D:Three Sequences(贪心、构造)
解析 本题说明了样例的重要性 完全可以通过仔细观察样例得出一些结论 首先最大值显然就是max(b1,cn)\max(b_1,c_n)max(b1,cn) 考虑最优策略 如果a上升了,就让b上升 因为假设前面都拼的严丝合缝了,让c上升前面全得上升,肯定会对答案有影响,而修改b则不一定 如果a下降了,就让c下降 类似的原因,如果让b下降,就会影响到b1,那么b1小了,c1就会大,对答案产生影响 想到这些,后面维护差分就较为简单了 代码 #include<bits/stdc++.h> using原创 2021-11-11 22:38:13 · 101 阅读 · 1 评论 -
CF720C Homework(构造)(暴力)
解析 本题的关键是暴力与构造结合的思想 本题一排排往上填的想法不难得出,但是在列数较小的时候就会GG 所以考虑在n>=5,m<5时,交换n,m,显然问题还是等价的 如果nm均小于5,就直接暴力dfs解决 在最后的边界需要打亿个小表 还有一个特殊情况需要特判 3100岂是浪得虚名 代码 #include<bits/stdc++.h> using namespace std; const int N=2e5+100; const int mod=1e9+7; #define ll lon原创 2021-11-11 15:30:28 · 79 阅读 · 0 评论 -
CF600F:Edge coloring of bipartite graph(二分图、构造)
解析 首先大胆猜结论:答案就是最大的点度数 考虑如何构造 设一个点联通的边的颜色集合为S,由题意得S中的元素不可重 假设新加入一条边(u,v) 设c1=mex(Su),c2=mex(Sv)c1=mex(S_u),c2=mex(S_v)c1=mex(Su),c2=mex(Sv) 如果c1等于c2,直接连就行了 否则,把这条边连成c1,看SvS_vSv中是否有c1,也就是是否产生矛盾 如果产生矛盾,v有一条连向x的颜色c1的边,就把这条边染成c2,再递归的看SxS_xSx中是否有c2… 一种类似于匈牙利原创 2021-11-11 09:27:58 · 160 阅读 · 0 评论 -
CF183C:Diverse Permutation(构造)
解析 首先考虑如何构造k=n-1的情况 发现令排列为1,n,2,n-1…即可 那么在k不等于n-1时 只需要让前k项与上面的序列相同,后面公差为1即可 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long const int N=2e5+100; ll read() { ll x=0,f=1;char c=getchar(); while(!isd原创 2021-11-10 11:44:54 · 224 阅读 · 0 评论