![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
构造
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【CodeForces468】C. Hack it!(构造)
传送门题解:由于我校模拟考的时候 l,r,al,r,al,r,a 的限制为 1e16,所以这里讲一种把 l,rl,rl,r 往小了放的方法。首先问题转化为找到两个前缀使得答案 %a\%a%a 相等,根据抽屉原理问题一定有解。容易注意到 f(x+y)=f(x)+f(y)f(x+y)=f(x)+f(y)f(x+y)=f(x)+f(y) 当且仅当 x+yx+yx+y 没有进位。容易想到把其中...原创 2020-04-16 15:18:20 · 289 阅读 · 0 评论 -
【Atcoder Grand Contest 043】【AGC043】E - Topology(构造)
传送门题解:首先简单说一下题意,我因为英文不好还理解错了半天。。。给出 nnn 个点,其中第 iii 个点为 (i+0.5,0.5)(i+0.5,0.5)(i+0.5,0.5),同时给出所有 2n2^n2n 个点集的合法性,请你构造一条闭合曲线,使得该合法的点集合法,不合法的点集不合法。一个点集合法当且仅当你能够移动该曲线使得其整体处于 xxx 轴下方,且移动过程中其不与该点集相交。好...原创 2020-03-24 20:22:15 · 687 阅读 · 0 评论 -
【CF618F】Double Knapsack(抽屉原理)(前缀和)
传送门题解:注意到题目给了一个很诡异的限制,每个元素的大小不超过集合大小。冷静分析。。。感觉一定有解。把总和较大的集合设为S1S_1S1,另一个设为S2S_2S2,计算两个序列的前缀和(从000开始)记为{s1},{s2}\{s_1\},\{s_2\}{s1},{s2},考虑s2s_2s2中的每个元素,我们在s1s_1s1中找到它的lower_bound(即大于等于它的最小数...原创 2019-11-04 10:04:52 · 219 阅读 · 0 评论 -
【CF1208C】Magic Grid(构造)
传送门电脑刚才重启了,来水一道构造题解:小水题,考虑如果有两个相同的出现可以让异或和为0,问题在于我们需要找一个替代品。注意到0,1,2,3的异或和是0,那么考虑每次加上4往后放就行了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constint n;...原创 2019-11-01 18:53:49 · 208 阅读 · 0 评论 -
【校内模拟】送分题(构造)
简要题意:你有一张无向图,每个节点有颜色,每一轮变换中你需要为每一个点决定它在下一轮的颜色,可选颜色集合为它的颜色和它的所有邻居在这一轮中的颜色。你需要用不超过20000轮操作来将100个节点的图的颜色从初始状态变为目标状态。题解:发现变换操作实际上非常强大,猜想对于一个连通块,只要初始颜色集合把目标态颜色集合包含了就不会有问题。然后先找路径暴力调整颜色数,然后找路径暴力调整颜色位置。...原创 2019-10-31 15:39:01 · 126 阅读 · 0 评论 -
【校内模拟】eugene(构造)(消环)
简要题意:给一张图,每条边有一个权值c∈{1,2}c\in\{1,2\}c∈{1,2},你需要给每条边确定一个方向,然后入点权值+c+c+c,出点权值−c-c−c,你需要使得在操作完之后每个点的权值的绝对值≤1\leq 1≤1保证对于每个点,所有与它相连的边的ccc之和为一个奇数。题解:首先可以感觉出来不存在无解的情况。证明的话,考虑如下的构造方式,只需要证明在满足上述条件下一定能够构造...原创 2019-10-23 19:29:03 · 220 阅读 · 0 评论 -
【SNOI2019】积木(构造)(回溯法)
传送门题解:构造好题啊。首先,这道题并没有要求操作数最少。感觉可能最小化操作数是一道不可做题。。。考虑其实我们不断让当前空位里该放的牌和结果相同,这样我们显然是找到了一条从初始图里空位到结果图里空位的路径,并且在过去的时候顺便把路径上所有牌摆好了。存在一个问题,不在这条路径上的位置我们还没有访问过,那么这些位置乱掉的牌我们就还没有摆正。强行把空格子挪过去,然后这个问题就和原问题相同,...原创 2019-10-17 16:43:25 · 413 阅读 · 0 评论 -
【CF1053E】Euler tour(构造)
传送门由于这道题被不知道哪个傻逼搬题人拿来给隔壁Noip组的做了,然后我被抓去口胡题解,结果标程没有丝毫可读性。。。于是我在orz yyb的题解之后 来水一篇题解。题解:首先判断无解。不可能的欧拉序只有以下几种情况:两个子树有非包含交,相同节点出现位置的奇偶性改变,首位不同。以及最后一种,只能在构造过程中判定的,离根太远无法返回。首先注意到一旦出现两个相同的数字,则中间是一些子树,...原创 2019-10-05 19:57:22 · 154 阅读 · 0 评论 -
【51nod1479】小Y的数论题(构造)(扩展欧几里得)
传送门题解:猜得到应该是没有无解的情况。令x=2pb,y=2pa,z=2(pab+1)/cx=2^{pb},y=2^{pa},z=2^{(pab+1)/c}x=2pb,y=2pa,z=2(pab+1)/c即可得到一组合法解,但是注意到可能取000就gg了。对于222的整数次幂,直接特判即可。代码:#include<bits/stdc++.h>#define ll lo...原创 2019-08-03 18:14:57 · 191 阅读 · 0 评论 -
【CF589H】Tourist Guide(构造)
不知道为什么现在这场比赛关闭了,我的代码在校内OJ上是AC了的http://codeforces.com/contest/589题解:显然随便拿一个图的生成树去做就行了。这种题。。。怎么开心怎么玩是吧。。。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_...原创 2019-07-25 19:43:45 · 158 阅读 · 0 评论 -
【SCOI2009】【洛谷P2526】【BZOJ1298】骰子的学问(基环树)(构造)
BZOJ传送门洛谷传送门解析:将iii向a[i]a[i]a[i]连边,那么我们得到一个内向基环树森林(环上点没有外向边)。显然环外的骰子直接分配极大值就行了。对于环内的骰子我们有这样一种策略:选择一个点,向父亲方向依次放下1~n的值,再选择它的父亲,向父亲方向依次放下n+1 ~ 2n。如此重复直到填满。可以证明这样的策略填出来的环内概率≥12\ge\frac{1}2≥21,而且只有...原创 2019-05-25 11:31:35 · 298 阅读 · 1 评论 -
2018.09.30【Atcoder Regular Contest103】F - Distance Sums(构造)(数学推理)
传送门解析:本次构造题大赛的最后一道。真的毒瘤啊,前面给一个那么扯的DDD题,后面又给一个这么神仙的结论题。思路:首先拿到题我整个人是方的,根本不知道如何下手。。。找重心?明显假了啊。。。到所有点距离和最小的节点?似乎没什么好用的性质。到所有点距离和最大的节点?一定是一个叶子!考虑它不是一个叶子的情况,我们一定可以将它向叶子方向移动,从而得到一个更大的距离和。那么我们考虑怎么...原创 2018-09-30 14:44:29 · 393 阅读 · 0 评论 -
2018.09.30【Atcoder Regular Contest 103】D - Robot Arms(构造)(二进制拆分)
传送门解析:我还能说什么。难道是ARCARCARC DDD题必考二进制拆分构造?101010以内的我考场上打表拆分还打错了。思路:显然每一个数都是可以用二进制凑出来的,但是这道题问题在于这里有每组两个数要凑,而且你还必须用若干个数加或减来凑。最不好做的就是,每一个数还不能不用。。。至少DDD在我看来比EEE还难。但是我们只需要{1,2,4,8,,16,32,...2k}\{...原创 2018-09-30 09:45:52 · 810 阅读 · 4 评论 -
2018.09.29【Atcoder Regular Contest 103】E - Tr/ee(构造)
传送门解析:短代码神题。如果把我打比赛习惯的头文件去掉,真的是非常短的代码量了。然而这道题并不是如此简单好想。思路:首先一棵树必然有叶子节点,也就是说s[1]s[1]s[1]必须为111,因为我们必然会有一刀能够切断该叶子节点的与其父亲的办法。而s[n]s[n]s[n]不能为1,因为无论如何切,剩下的联通块都必然会减少节点个数。对应的,我们切出了一个大小为iii的联通块,那么另一个...原创 2018-09-29 23:52:03 · 315 阅读 · 0 评论 -
2018.09.02 【Atcoder Regular Contest 102】D.All Your Paths are Different Lengths(构造算法)(二进制拆分)
传送门解析:好一道二进制拆分。。。令n=floor(log2L)n=floor(log2L)n=floor(log_2L) 其实这道题很容易考虑到二进制拆分,就是每两个点之间加边,iii和i+1i+1i+1连一条0的边和一条2i−12i−12^{i-1}的边。那么在2n−12n−12^{n}-1中的所有数都有路径满足并且唯一满足。(注意题目要求只有精确的L条路径,不能多,也不...原创 2018-09-02 09:52:48 · 306 阅读 · 0 评论