构造题
文章平均质量分 84
秦三码
石油大学
展开
-
A. Prefix Sum Primes
首先显然是先选2比较好,因为相对于2,1会更加灵活,如果耗费了1再选2,那么2就会变得“愚钝”,也就是会忽略很多质数,但是如果我们配合着1,2就变得灵活起来,是贪心的思想。另外本题非常考验细节,比如中途全部或者某个用完,最终没用完的情况都需要考虑到。...原创 2022-08-15 13:46:35 · 361 阅读 · 1 评论 -
B. Neko Performs Cat Furrier Transform
这类改变的题目,如果没有通解的话会非常混乱,加1异或某数,各个位置一会是0一会是1,我们考虑一位一位修改,每次寻找一个最高位的0,异或上某个正好在这一位上的2^n-1,那么就成功完成了修改,然后下一个加1之后接着寻找即可,寻找之前别忘了判断是否全是1即可。...原创 2022-08-15 13:03:43 · 94 阅读 · 1 评论 -
A. The Party and Sweets
然后就考虑b[n]原创 2022-08-14 22:38:42 · 176 阅读 · 0 评论 -
D. Bicolored RBS.
我们把depth/2作为第一端的极限,遇见左括号我们加,如果这时候dep原创 2022-08-14 15:41:48 · 165 阅读 · 0 评论 -
D. Vus the Cossack and Numbers
贪心一下,先都向下取整,求出来和,小于零就加1,加1的情况只在a[i]不等于b[i]的时候。原创 2022-08-14 13:31:15 · 2345 阅读 · 1 评论 -
A. Almost Equal
这种规律题目一定是线性推的,也就是从答案1一直推到答案2n。不难发现,1正对着2,3正对着4,5正对着6,并且发现这在坐标上就是+n的位置差别。且是1 2 4 3 5 6。原创 2022-08-14 11:05:02 · 91 阅读 · 1 评论 -
B. Square Filling
无限次,那就能用就用,地毯式遍历即可。原创 2022-08-14 10:29:56 · 191 阅读 · 1 评论 -
C. Paint the Digits
代码】C. Paint the Digits。原创 2022-08-13 20:24:14 · 79 阅读 · 1 评论 -
C. Swap Letters
如果两种情况都是偶数,那么一定能够置换成功,且只需要对单个情况每两个进行两两组合即可。如果两个都是奇数,那么两个各剩下一个,单独耗费两次(参考样例1)如果一奇一偶,那么显然是不可以的。首先不匹配有两种情况。...原创 2022-08-13 19:45:10 · 138 阅读 · 1 评论 -
B. Box
模拟一下,放个队列即可,每当a值不等于上一个a值,那就说明了这个位置已经确定,一旦我们遇到一个确定位置,就把上一个位置到本位置之间的数字全部加入队列,这就是小于本位置的全部可能,当该取出数字的时候队列为空则是无解。...原创 2022-08-13 19:16:22 · 251 阅读 · 1 评论 -
C. Labs
最小值最大的套路就是平均,考虑将每组都分到大小关系差不多的数,那么以n=3为例就是。,值得注意的是,为了更平均,把这些倒着来一遍。9 8 7 都是最大的三个。1 2 3组分别分到。原创 2022-08-13 18:31:42 · 166 阅读 · 1 评论 -
A. Tile Painting
还是说找规律,写2-10的样例,发现质数一定是本身数量,合数大部分是1,4是2,9是3,也就可以猜测出平方数就是其开方的结果,交上去发现WA了,又验证16,25.发现16并非如此,只有25才是这样。那就猜测质因数是1个的情况,交上去发现A了。......原创 2022-08-13 18:01:39 · 121 阅读 · 1 评论 -
C. Diverse Matrix
显然r+2..r+c是大于第一行每一个数字的,一旦我们在第一行每一列的数字基础上乘上r+2....r+c,那么该行gcd势必是r+2...r+c。那么为了使我们最大值最小,我们可以考虑第一行全部构造成 2 3 4....r+1。特判1 1 是0就OK了,一行或者一列其实也不需要特判。首先在正整数范围内,连续一段数字的gcd一定是1。接下来每一列构造 r+2,r+3....r+c。...原创 2022-08-12 16:29:10 · 119 阅读 · 0 评论 -
B. Interesting Subarray
钻牛角尖的题,k越小越好,那就取2,判断连续两个数字是否是绝对值相差2。原创 2022-08-12 15:48:21 · 121 阅读 · 1 评论 -
C. Make Good
第二步,再加一个原数组的sum+xor。还是说根据3这个限制条件来寻求通解。设原数组前缀和sum,异或和xor。第一步 加一个元素xor。原创 2022-08-12 15:37:34 · 84 阅读 · 1 评论 -
B. Snow Walking Robot
最终要求是删的数尽可能少,长度尽可能大,可以重新安排剩余的字母,这就好办了,我们可以采取“兜大弯”策略,也就是先一直上去,再右拐,再一直下去,再左拐,一定不会经过原点之外点两次,只需要记录左右最小值,上下最小值即可,当然,特判二者都是0,一者是0的情况。...原创 2022-08-12 15:05:51 · 124 阅读 · 1 评论 -
C. Friends and Gifts
很自然的思路是把没送礼的和没收礼的放在队列里进行一一配对,并且相同的不能配对,如果仅仅是这样的话由于加入队列顺序的原因,很可能造成我们最终还是配对了相同的。所以我们可以在发现配对相同的时候,交换和上一个的答案,这样就完成了完美的匹配。...原创 2022-08-12 14:42:50 · 113 阅读 · 1 评论 -
B. Kuroni and Simple Strings
从两端开始匹配是最优的,并且不会在一次完整遍历之后还留下能够配对的,剩下的都是无法进行配对的。原创 2022-08-12 13:34:19 · 131 阅读 · 1 评论 -
B. String Modification
手写一下样例不难发现,交换k次就是把原字符串的前缀后缀重新拼接,注意交换次数为奇数的时候还需要翻转前缀。原创 2022-08-12 11:33:56 · 116 阅读 · 1 评论 -
C. Ehab and Path-etic MEXs
还是说由特殊到一般,最特殊当然是链,那么怎么填都没事,然后过度到一个节点是3度的情况,发现,1 2 0 必须填在这个点上,由此猜测,全部情况都是如此。样例的时候尽量是从最特殊情况演变而来的且只有微小差别。只能说类似题目多从特殊情况一点一点扩展考虑,手玩。...原创 2022-08-12 10:39:08 · 106 阅读 · 1 评论 -
D. Anti-Sudoku
那么也就是说每行一个1,一个2,每列一个1,一个2,每个粗9格一个1,一个2,然后整个八十一格9个1,9个2,我们只需要把1改成2,那么每行两个2,每列两个2,每个粗9格两个2。脑筋急转弯,不过要先知道数独的定义,也就是每个粗9格里面是1-9无重复,每行1-9无重复,每列1-9无重复。......原创 2022-08-11 13:21:16 · 96 阅读 · 1 评论 -
B. Sorted Adjacent Differences
首先a1最小,它和an的差值绝对值一定最大,与an-1的差值绝对值不一定最大,但是一定比a2和an-1的差值绝对值大,然后以此类类推即可。再把a2 an-1放在最后, a2 an-1 a1 an。排序,先让最小和最大的放在最后,这样一定是满足的。...原创 2022-08-11 12:34:28 · 99 阅读 · 0 评论 -
B. Phoenix and Beauty
而题目并不要求长度最小,所以我们可以把整个数组都给放进去(去重)进行n次,这样就保证了每个段都包含原数组一个元素,n个段就构成了原数列。首先发现要想任意k段合都是相等的,必须是1234k1234k1234k这种排列。无解的情况是一个段超过了k种元素。...原创 2022-08-11 10:59:38 · 130 阅读 · 1 评论 -
B. Same Parity Summands
分别讨论奇数偶数情况,奇数的话,先都放上1,然后每个数字再分别填上2,保证奇偶性相同,这就要求剩下的数字必须是偶数,否则无法构造,输出的时候只需要把全部2都加在一个位置上即可。然后讨论偶数的情况,先都放上2,剩下的必须也是2的倍数。...原创 2022-08-10 18:27:24 · 233 阅读 · 1 评论 -
F. Binary String Reconstruction
本来是打算先构造0,再构造01,再构造11的,但是发现这样会有根本无法构造的情况。这样的构造就能够互不影响。剩余的01全部放在左边。剩余的11全部放在右边。接下来在两边进行扩展。原创 2022-08-10 18:08:27 · 99 阅读 · 0 评论 -
D. Game With Array
根据两个YES和一个NO猜测是m与n是大于二倍关系才能完成表示,并通过手写几个小样例发现确实是这样,而且2倍的时候也能表示。再考虑通解,抓住大于2倍的特点,我们前n-1个全部填上1,剩下全部填上m-(n-1)再把k选成m/2这样的话,无论怎么表示,要么小于m/2,要么大于m/2。样例可不是白给的,从看样例到解决问题只需五分钟。...原创 2022-08-10 16:24:39 · 87 阅读 · 1 评论 -
B. Trouble Sort
方法是 b移动到位置3,c移动到位置2,a移动到位置3,b移动到位置1,c移动到位置1,b回归位置2,完成交换。可是题目给我们限定为两个b不相同的才能交换,那么就代表我们不能两两交换了吗?反之,要是一个不同的b也没有,那么我们只能祈祷原数组是不减的了。首先如果我们能够两两之间任意交换,那么肯定,我们一定能够排序。所以只需要有一个不同的b,我们就可以完全进行交换。a与c可以在不改变b位置的情况下进行交换。我们依然能够两两交换。...原创 2022-08-10 16:00:57 · 70 阅读 · 0 评论 -
C. Rotation Matching
只对b进行平移是可以的,只对b进行右移也是可以的,那么就统计出来每个数字偏移的距离即可。原创 2022-08-10 15:12:30 · 169 阅读 · 1 评论 -
C. Social Distance
判断区间内是否有1的方法是前缀和,但本题是动态修改的,也就是当前位置前面是否有1是需要根据之前修改情况也判断的,当然,右边是否有1是完全可以利用前缀和来判断的,至于前面的,我们设置一个pre变量即可,每当遇见1就修改,值得注意的是,我们新添进去的1也不能忘记修改pre。贪心,从前往后遍历即可,能加就加,加的条件是左右k距离没有1。...原创 2022-08-10 13:55:40 · 149 阅读 · 1 评论 -
B. Codeforces Subsequences
那么我们就一直这样暴力循环,每个最多不到100次,10个也就不到1000次循环就能超过k。首先不在字母本位置上进行增加是不会获得最大效果的,最终的答案就是各个字母个数的乘积。再加1的话,可以加到2,也可以加到1,但是发现加到1带来的增效更高。再增加1也是同理,即尽量让10个字母数量相同能够使得最终个数最多。加1的话,放在那个位置都行。...原创 2022-08-10 13:34:31 · 225 阅读 · 1 评论 -
C. Even Picture
通过构造可知,绝对不能出现连着三条边的情况,我们又发现一个2*2正方形重叠一个角排列是可行的,这样除了2便是4的连接。原创 2022-08-10 12:53:16 · 81 阅读 · 1 评论 -
C. Omkar and Baseball
如果有一段连续的,其中每个数字都不在原位置,那么把这些数字归到原位置那么就一定不会跟原来的顺序产生任何重叠,也就是耗费1。这里不太好证明为什么一定会存在一个介于两者之间,不同与二者的排列,不妨进行dfs验证一下5。要是有多段连续的,先将整个变成不同于原来的,也不同于递增的,再将其变成递增的。...原创 2022-08-09 18:54:40 · 131 阅读 · 1 评论 -
B. Neighbor Grid
先构造答案矩阵,再看看是否有点超过了极限情况即可‘他说可以操作任意次的加1,那就全部加到极点。原创 2022-08-09 18:11:04 · 103 阅读 · 1 评论 -
C. Element Extermination
这种问题,下下策是妄图用算法高级数据结构去解,下策是模拟,中策是证明,上策是写4的全部排列五分钟找出来规律。原创 2022-08-09 16:23:58 · 290 阅读 · 1 评论 -
A1. Prefix Flip (Easy Version)
类似问题做过多次,往往就是针对一位置不停改变,使得其余位置不受影响,突破点在于给定的次数,3*n,也就暗示着一个点进行三次变换可以达到只修改着一个点,其余点不会发生改变。XXXXXXXX1把最后一个1变成0而其余不受影响可以按照一下三步。...原创 2022-08-09 15:03:40 · 64 阅读 · 0 评论 -
A. Common Prefixes
1 secondinputoutputInputOutputExampleinputCopy441 2 4 225 331 3 130 0 0outputCopyaerenariarousalaroundarimonogonmonogamymonthlykevinvukuronikurionikoroneantonlovesadhocproblemsNote。原创 2022-08-09 14:38:33 · 124 阅读 · 1 评论 -
B. Applejack and Storages
开始做之前让我感到棘手的是2 4的次数会产生重复,后来发现根本没必要,直接统计2,4的次数即可,一个4会带来两个2,到时候直接扣除即可。即两个4可以,一个4,外加4个2也可以,之所以是4个就可以,是因为要扣除1一个4的影响。不少题解动辄几百行数据结构来解这个题,感到不解的同时,也只能说是被算法困住了手脚吧。......原创 2022-08-09 14:20:13 · 124 阅读 · 1 评论 -
D. Binary String To Subsequences
贪心的策略当然是能加就加进原本就有的,不能加的时候再重新开辟一个。这里用vector进行模拟,末尾存当前串的编号即可。原创 2022-08-09 11:54:22 · 144 阅读 · 1 评论 -
C. Binary String Reconstruction
我们先满足必须是0的位置,然后为了尽可能满足其余1的情况,我们让剩余位置全是1即可,然后在进行无解的判断,条件就按照题目给的写就够了。原创 2022-08-09 11:04:13 · 139 阅读 · 2 评论 -
C. Mere Array
而我们根据冒泡排序等各种排序规则,两元素若能够自由交换,那么一定能够排序成功,而本题要求的条件略有苛刻,那就是要直接交换两个元素的话,必须满足gcd=mina,这个条件太苛刻了,我们冒泡排序无法成功。非常巧妙的一个题目,首先来说,一个无规则数列进行排序,只需要将排序之后与原位置不对应的位置进行对比即可,也就是排序之后与排序之后位置上数字不对应的需要进行排序。x min y 其中gcd(x,y)=k min 也就是x,y目前无法进行交换。三步走,完成交换,min位置不变。...原创 2022-08-09 10:40:27 · 95 阅读 · 0 评论