构造
小菜鸡加油
菜鸡
什么都能折磨
展开
-
C. Nastia and a Hidden Permutation(构造)
https://codeforces.com/contest/1521/problem/C思路:开始找到最大值,令x=n-1,然后第一个max{min(),min()}的嵌套就可以O(n/2)找到最值然后t=2,令x=1,然后O(n)扫一遍可以找到其他值。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#in原创 2021-05-08 10:57:52 · 305 阅读 · 2 评论 -
F. Phoenix and Earthquake(结论+模拟+启发式合并)
https://codeforces.com/contest/1515/problem/F思路:证明参考:https://www.luogu.com.cn/blog/_post/331276我开始想的是,每次都选最大的ai之后将他与跟他相连的且不在他集合中的点合并,尝试用优先队列 + 并查集可以轻松实现。然后wa了。发现有个很重要的问题没有处理。如果按照下面这样去处理。每次当前连通块合并了新的,但是原来之前合并到这个连通块里的,其siz并没有更新,显然一个连通块里的每个点的s..原创 2021-05-06 20:01:22 · 216 阅读 · 1 评论 -
Tolik and His Uncle(构造)
https://codeforces.com/contest/1179/problem/B又被吊打了。先考虑一行的时候,怎么构造,肯定是先走到头,然后再回来,再过去。考虑n行的时候也这样,类似于中心对称去构造。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#inclu原创 2021-04-29 10:33:42 · 126 阅读 · 0 评论 -
B. Domino for Young(二分图)
https://codeforces.com/contest/1268/problem/B思路:很神仙。二分图染色后取两个颜色后小的就是答案。据说是网络流建模经典...(麻了网络流又没补完)#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>原创 2021-04-27 20:22:51 · 202 阅读 · 2 评论 -
A. Long Beautiful Integer(构造+模拟)
https://codeforces.com/contest/1268/problem/A要不+1,要不不加就好#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<algo原创 2021-04-27 19:50:59 · 117 阅读 · 0 评论 -
Add on a Tree: Revolution(思维+构造)
https://codeforces.com/contest/1188/problem/A2思路:注意找的是当前节点的两个儿子的叶子,不全是一个儿子下的叶子参考:https://blog.csdn.net/yopilipala/article/details/95652210?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.control&dist_原创 2021-04-26 21:10:10 · 107 阅读 · 0 评论 -
A1. Add on a Tree(证明)
https://codeforces.com/contest/1188/problem/A1思路:证明参考:https://blog.csdn.net/Emm_Titan/article/details/99857428?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.control&dist_request_id=&depth_1-utm_原创 2021-04-25 23:50:34 · 126 阅读 · 0 评论 -
D. Numbers on Tree(思维+构造)
https://codeforces.com/contest/1287/problem/D参考:https://blog.csdn.net/weixin_43826249/article/details/103855447首先证明:n个节点一定可以用1-n的数字去放。因为1-n的数字都是不同的,那么不会有相对大小的问题,不会有节点之间相互影响而导致答案错误。放相同值的节点也就是少一个差值,我们完全可以用放的方式去避免,比如小的放在大的上面。其次证明:如果节点的C值小于节点的size,那么一.原创 2021-04-21 16:37:48 · 143 阅读 · 0 评论 -
D - Miracle Tree(思维+构造+树的直径)
https://atcoder.jp/contests/arc117/tasks/arc117_d思路:比较明显的是树的直径把。然后构造:先从树的直径开始1,2,3...如果有分枝,先跑完分枝,然后到叶子了+1#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#i原创 2021-04-20 23:39:01 · 176 阅读 · 0 评论 -
B. TMT Document(思维)
https://codeforces.com/contest/1509/problem/B思路:对于一个M,要保证左边的L大于等于M的数量。剩下右边的再从右边往左边扫,保证右边的L大于等于M的数量。自然能构造出一种和合法解。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>原创 2021-04-17 23:16:52 · 392 阅读 · 0 评论 -
C. Multiples of Length(构造)
https://codeforces.com/contest/1397/problem/C思路:一次[1,n-1],一次[2,n],一次[1,n]对于每次在(n-1)的基础上凑成n的倍数,最后一次下来就好。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include原创 2021-04-16 20:00:24 · 131 阅读 · 0 评论 -
B. Array Sharpening(思维+构造)
https://codeforces.com/contest/1291/problem/B思路:单纯思维题,构造到最后一步了却还想着优化..可以发现,不管最后的峰在哪,我们最好就是把开头设置0,然后1 2 3....这样不难想。但是如果去枚举结果的点,再去这么想,就会发现下降的峰受到一些本身不在这个高度的限制。但这其实说明了已经到了贪心的最优了。比如0 1 2 3 4 ...这样去构造,当a[i]>x的时候,说明不能再往后了。也就说明前面最多可以这么多。对于后面也是一样。加起来原创 2021-04-16 19:55:30 · 122 阅读 · 0 评论 -
1349B - Orac and Medians(思维)
https://codeforces.com/problemset/problem/1349/B思路:长度为2/3的区间满足其一定可以满足。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#i原创 2021-04-15 14:39:39 · 152 阅读 · 0 评论 -
D. Two Divisors(数学+构造)
https://codeforces.com/problemset/problem/1366/D思路:ai分解成质因子形式。对于其中一个pi,取到pi^k1满。那么此时对于a的所有质因子来说,不管取啥, 其b1+b2的公共因子只有一边能满足。此时互质了。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#inc原创 2021-04-14 13:44:21 · 205 阅读 · 0 评论 -
D. Dreamoon and Sets(构造+数论)
https://codeforces.com/problemset/problem/476/D思路:面向样例编程。1 2 3 57 8 9 1113 14 15 17...#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>.原创 2021-04-13 21:35:08 · 108 阅读 · 0 评论 -
D. Min Cost String(构造+欧拉回路)
https://codeforces.com/contest/1511/problem/D思路:题意其实是想构造出尽可能多的相邻不同字母的排放。每个字符画出来其实就是一笔画问题了。其实猜的话也可以猜一下,aaabacadbc这样的分配。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<原创 2021-04-13 20:51:12 · 428 阅读 · 0 评论 -
D. Design Tutorial: Inverse the Problem(思维+构造+最小生成树判定树合法)
https://codeforces.com/problemset/problem/472/D思路:对于一个成环的三点,我们可以令其任意挑两边作为边,另外两个没有直接相连的点作为第三边的答案,若答案合法,无论怎样其较小两边之和等于第三边。于是我们每次在环中挑较小边,然后构成树,最后在新的树上跑完所有两点间距离来check原图任意两点距离O(n^2).可以的话可以上LCA(nLogn+mlogn) #include<iostream>#include<vector>#原创 2021-04-12 21:39:26 · 712 阅读 · 0 评论 -
E. Archaeology(思维)
https://codeforces.com/problemset/problem/1178/E思路:由于相邻字母不同且只有abc,鸽巢原理可得四个中必有两个同。如此构造即可#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#inclu原创 2021-04-12 13:15:24 · 92 阅读 · 0 评论 -
E. Permutation by Sum(思维+构造)
https://codeforces.com/contest/1512/problem/E思路:首先考虑-1,那么我们把1+2+3....这种和n,n-1,n-2...这种,看一下是不是分别>s,<s。不然就能构造出来。因为答案在范围里嘛。然后先拿最小的1 2 3 4 5..去构造,然后修正差值。每次从后面的这个最大的'5'开始,先减了,然后算>=和s的总差值的数,然后更新上去。n=500嘛..O(n)再去找总共也就O(n^2)。问题不大。二分总复杂度O(nlogn)。原创 2021-04-11 12:26:05 · 520 阅读 · 0 评论 -
1428D - Bouncing Boomerangs(思维+构造+贪心)
https://codeforces.com/problemset/problem/1428/D思路:从前往后会发现前面的状态会影响后面的情况。从后往前构造。而且此时从后往前构造可以发现:1、弹射两次的飞镖,肯定需要右边弹射一次飞镖的列作为最后一次弹射。2、弹射三次的飞镖既可以利用右边弹射一次的列又可以利用右边弹射两次的列。因此再结合从下往上构造。然后就再分三种情况考虑:对于弹射一次的列,我们每次都放到(i,i),即放在主对角线上,然后将该点的行列坐标存入que1。对于原创 2021-04-10 20:56:52 · 309 阅读 · 1 评论 -
C. Marco and GCD Sequence(思维+构造)
https://codeforces.com/problemset/problem/894/C题意:构造出一个数组,使得任取i,j i--j中间的所有数的gcd 都要在S中出现。思路:所有数的gcd一定是S中最小的数。不然一定-1。把最小数插到S集合中每两个数之间。那么这一定是一个可能的解。刚好n*2个#include<iostream>#include<vector>#include<queue>#include<cstrin..原创 2021-04-10 16:17:33 · 180 阅读 · 0 评论 -
E. Pavel and Triangles(思维+构造)
https://codeforces.com/problemset/problem/1119/E思路:对于区间异或,其实可以前缀异或。转化成枚举每段前缀的值,对于当段前缀的值,查找其^x是否出现过,或者是否出现0,等价于区间异或为x和0注意题目说了ai<2^n#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath&原创 2021-04-09 15:00:21 · 72 阅读 · 0 评论 -
D - Strange Device(思维+构造)
https://codeforces.com/contest/1270/problem/D思路:n>=k,答案可能与k有关参考:https://blog.csdn.net/qq_41997978/article/details/103769455因为数组两两不相同,第一次先询问 1 ,…,k,得到第一组答案,设返回的是 a[x]。接下来每次用 k + 1依次换掉1,…,k。设当前换掉的是 i,若返回的答案和第一组相同,说明a[k + 1] 和 a[i] 在 a[x]的同一边,否则原创 2021-04-08 22:15:38 · 112 阅读 · 0 评论 -
D - Print a 1337-string(思维+构造)
https://codeforces.com/contest/1202/problem/D思路:1337777...肯定不够。13333777跑了一下发现不一定能出n。考虑1337777....333337其3对答案的贡献是num3*(num3-1)/2,剩下的靠第一组的7来凑1。跑完发现3数量最多跑e4级别。所以再多加几个1和7放得下#include<iostream>#include<vector>#include<queue>#i原创 2021-04-08 19:52:00 · 105 阅读 · 0 评论 -
1213E - Two Small Strings(思维+构造)
https://codeforces.com/problemset/problem/1213/E思路:直接搞不好构造阿..画画图大致是这样的情况,两种构造,一种全排列,一种同样的先放满。然后12种暴力判断。O(12*3n)#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>原创 2021-04-07 20:13:31 · 143 阅读 · 0 评论 -
1207E - XOR Guessing(思维+构造)
https://codeforces.com/problemset/problem/1207/E思路:14位,第一个集合,后7为全放0.第二个集合,前7位放0.对于询问得到的答案,取第一个的后7位,第二个的前7位。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#i原创 2021-04-06 19:14:40 · 98 阅读 · 0 评论 -
1228D - Complete Tripartite(思维+三分图染色+构造细节)
https://codeforces.com/problemset/problem/1228/D思路:将1号点定为1,然后找一个直连的作为2。此时遍历所有点,找一个和1,2有链接的,作为3.这样先分成三组。然后就继续构造,遍历所有点,如果该点只有和前面两个点相连,即ok。并且对应染色。最后答案出来的时候要检查一个和题目的边数相等,另一个再扫一遍构造好的集合,对于集合里的每个点,扫一下另外两个集合里面是不是有自己颜色的。#include<iostream>#incl原创 2021-04-05 17:51:31 · 116 阅读 · 0 评论 -
D. 3-Coloring(思维+构造)
https://codeforces.com/contest/1504/problem/D思路:类似黑白染色。如果给1,那么2和3空闲。优先把2放到棋盘的(i+j)的偶位。如果2满了,那就放3,注意此时3的位置其实是占了本该给1的位置的。如果给2,那么1和3空闲。优先把1放到棋盘的(i+j)的奇位。如果1满了,那就放3,注意此时3的位置其实是占了本该给2的位置的。如果给3,那么1和2空闲,如果1还可以放,放1,如果1不能放了,放2,2不能放了。结束。关于交互题的输出问题。endl直接原创 2021-04-04 16:50:24 · 424 阅读 · 0 评论 -
Balance the Bits(思维+括号序列构造)
https://codeforces.com/contest/1504/problem/C觉得大佬讲得很好:引自@mutsuki合法括号序列也就是无论何时'('的出现次数次数总≥')'把括号和括回理解为分数括号得一分括回扣一分。目标是使任何时候两个序列的分数都>=0。这么构造可以使两个序列交替加分和扣分,从而满足条件。而如果原本构造成一个合法,由于有0的存在,必然会导致原来的有一个地方不合法。需要纠正回来那么就要偶数个0.考虑构造:两端首先要1.其次将前n/2个1定...原创 2021-04-04 16:45:29 · 778 阅读 · 0 评论 -
1264B - Beautiful Sequence(枚举+欧拉通路性质)
https://codeforces.com/problemset/problem/1264/B思路:讨论很麻烦阿..开始是想着01先,23后,多了跑21,然后挂在16想着可以暴力。每次开头的点确定下来了,第二个点要不就是比他小一个,要不就是比他大一个。并且比如1 2 ,后面不会先跑3的,一定是先把1 2 1 2跑完了再跑3或者就是先跑1 0,同样是1 0 1 0跑完了再跑到2.然后讨论这两个进行暴力。原文链接:https://blog.csdn.net/qq_41730082/原创 2021-04-04 10:28:33 · 120 阅读 · 0 评论 -
D. Fill The Bag(思维+二进制贪心+模拟)
https://codeforces.com/problemset/problem/1303/D思路:平时大到小贪心,这次小到大。一个变量记录此时的剩余总量。看能否给与当前位。>=必然是可以给与的。假设当前位为2^pj,剩余总量的p^i(i<=j) ,如果存在==j的,肯定能给。假设全部i<j,剩余总量还能构造出这个2^j吗?肯定可以。第一个都是二进制。第二个 2^pi1+2^pi2+2^pi3+......>=2^pj; 对这个不等式不断/2;最后等式右边必..原创 2021-04-02 20:31:47 · 163 阅读 · 1 评论 -
459C - Pashmak and Buses(思维+构造k进制数加法)
https://codeforces.com/problemset/problem/459/C思路:这题愣是看错题意搞了1小时不对。题意就是两个人不要在同一辆车上就好了,虽然可以还是一辆车,但是不是同一辆车就好。列出二维数组可以发现,其就是一个从下到上(上面高位)的k进制数,每次枚举进位模拟就好了。#include<iostream>#include<vector>#include<queue>#include<cstring>#in原创 2021-04-02 17:28:10 · 207 阅读 · 0 评论 -
G. A/B Matrix(规律构造+均分)
https://codeforces.com/problemset/problem/1360/G思路:n*a!=m*b一定无解。不然按照每行先给a个1,然后下一行从上一行的最后一个位置进行给1.没有%m的时候是个均分的过程,%m后同样是每个位置上均分。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#incl原创 2021-03-31 20:05:51 · 233 阅读 · 0 评论 -
C. Gargari and Bishops(思维+维护对角线和)
https://codeforces.com/problemset/problem/463/C思路:类似八皇后,每一条左对角线和右对角线有统一的标识符左往上的:i+j右往下的:i-j+n#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>原创 2021-03-31 14:03:52 · 148 阅读 · 0 评论 -
216B - Forming Teams(构造+判奇环)
https://codeforces.com/problemset/problem/216/B思路:往环上思考#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<algor原创 2021-03-28 21:53:47 · 130 阅读 · 0 评论 -
540B - School Marks(贪心+构造)
https://codeforces.com/problemset/problem/540/B思路:贪心先满足其中一个条件,中位数的条件。我们发现n是奇数,也就是小于中位数的数最多有n/2个,于是我们把输入的数先sort统计一下小于中位数的个数。剩下的再补。补完之后尽量放最小的不超过总和,也就是放中位数#include<iostream>#include<vector>#include<queue>#include<cstring>#in原创 2021-03-28 09:59:08 · 116 阅读 · 0 评论 -
1227C - Messy(思维+构造)
https://codeforces.com/problemset/problem/1227/C思路:给n^2很友善阿。不难想到,对于结果我们是能提前构造出答案序列的。()()((((()))))....就是一个k=3的状态。于是每次拿给的串和答案串check,不同的就去后面找一个有的位置然后暴力交换一个串。#include<iostream>#include<vector>#include<queue>#include<cstrin原创 2021-03-27 21:38:55 · 114 阅读 · 0 评论 -
C. Crazy Diamond(思维+构造)
https://codeforces.com/problemset/problem/1148/C思路:发现1和n比较特殊,通过1和n作为中转站每次把数字在这里转。<=n/2的要在左边的数字先和n换,再换到1. <=n/2的在右边的先和1换,再和n换,再和i换。>=n/2+1同理#include<iostream>#include<vector>#include<queue>#include<cstring>#incl原创 2021-03-25 21:54:20 · 154 阅读 · 0 评论 -
B. Fix a Tree(思维+判环构造+细节)
https://codeforces.com/problemset/problem/698/B题意:修复一棵树,给出一棵树的父节点,然后他可能存在环而变成了图,或者根节点不为1.思路:考虑环的影响,需要dfs判环。然后把环上的端点存下来。如果没有环就随便放一个。然后把不同连通块的连起来。很细节的一个地方有单个点的联通的时候要把边连到单点上#include<iostream>#include<vector>#include<queue&g.原创 2021-03-25 18:33:56 · 139 阅读 · 0 评论 -
C. Basic Diplomacy(思维+均分贪心+细节)
https://codeforces.com/contest/1484/problem/C思路:昨晚贪心了5次都是wa。原本思路:处理当前每个数已经拿了几次,还能拿几次。代码细节问题:一层扫完后再更新。中午上课讨论了一下发现有一个hack36312331233123111111原因在于后面只能拿1导致均分不对了。于是我们先处理1天的。更新每个数的已经拿的状态和还能拿的状态,然后回到上面的均分,每一次层拿当前已经拿的人数中最少的。如果一样看...原创 2021-03-22 15:31:27 · 322 阅读 · 0 评论