构造
构造
_hunxuewangzi
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #666 (Div. 2) C. Multiples of Length题解(构造)
题目链接题目大意给你一个长为n的数组,要你进行三次操作使得整个数组变为0.操作定义为:每次选择[l,r]的区间,然后输入一个长为r-l+1的数组b[i],使得每个a[i]+=b[i],要求b[i]是r-l+1的倍数题目思路当n=1的时候显然可以前两次操作加0,最后一次操作-a[1]否则可以第一次操作为[1,n-1]每次元素都加上(n-1)*a[i],第二次操作为第n个元素加上(n-1)a[n],最后一次操作为每个元素都加上-na[i].至于为什么要往这方面去想,我觉得就是操作次数过于少,就应该原创 2020-09-03 15:42:59 · 153 阅读 · 0 评论 -
HDU 6852 Increasing and Decreasing 题解(构造)
题目链接题目大意要你构造一个长为n(n<=1e5)的全排列,使得其最长上升子序列和最长下降子序列的长度分别为x和y,而且要使得这个构造的全排列,字典序最小,如果不能构造则输出NO,否则输出YES,并且输出其全排列题目思路这个构造比较神奇吧,以前都没有见到过,现在学习一下,其实他的构造方法简单来说就是分段和翻转如本来是1 2 3 4 5 6 7 8 9 10的全排列 而你如果要构造一个长度为5的单调递减序列那么你就把最后5个元素翻转变成1 2 3 4 5 10 9 8 7 6 然后假如你要构原创 2020-08-11 18:29:12 · 413 阅读 · 4 评论 -
Codeforces Round #582 (Div. 3) E. Two Small Strings 题解(构造+图论)
题目链接题目大意有两个长度为2的由‘a’ ‘b’ ‘c’三个字母构成的字符串,现在需要构造一个由’a’,‘b’,‘c’,三个字母各n个组成的字符串,且构成的字符串不包含前两个字符串的子串题目思路emm。。。。比较神奇标称是说首先生成a、b、c的6个全排列,然后,每种全排列以两种方式扩大n倍——举个例子,n为3时,对于acb,可以扩展成这两种:acbacbacb、aaacccbbb。然后依次检查这12种字符串是否有满足要求的,我一直很疑惑为什么质押这12种构造方法就行了。后面终于搞懂了证明:这题原创 2020-07-16 11:19:58 · 195 阅读 · 0 评论 -
Codeforces Round #630 (Div. 2) D. Walk on Matrix 题解(构造)
题目链接题目大意一直都没读太懂,看了题解之后才知道它的意思。假设有一个数字矩阵,每次可以向下或向右,问从左上角走到右下角的数字和最多是多少,那么显然这是一个dp。现在不问你数字和,而是把路径上的所有数都&起来,如果还是dp显然是错的。假设dp的到的结果是x,正确答案是y。现在给定k,需要你构造一个矩阵,使得|y-x|=k题目思路感觉看了标称一下就懂了代码#include<set>#include<map>#include<stack>#i原创 2020-07-15 14:47:07 · 133 阅读 · 0 评论 -
Educational Codeforces Round 85 (Rated for Div. 2) D. Minimum Euler Cycle题解(构造+二分)
题目链接题目大意有n个点,每两个点之间都有(u,v),(v,u)两条有向边,要求每条边都经过且仅经过一次,输出字典序最小的序列。由于数据过大,只要求输出[l,r]之间的序列。题目思路自己差不多想到怎么构造了,但是最后还是去看了题解。还是应该再想一想模拟一下n=5的时候开始肯定是1-2-1-3-1-4-1-5注意这个时候不能再从5到1,否则无路可走。那么5出发贪心就是2-3-2-4-2-5其实规律已经出来了,剩下就靠模拟了。1 2 1 3 1 4 1 5 … 1 n2 3 2 4 2 5原创 2020-07-10 11:23:11 · 146 阅读 · 0 评论 -
Codeforces Global Round 9 D. Replace by MEX题解(构造)
题目链接题目大意给你一个有n个元素的数组a(n<=1000),最多进行2*n次操作,使得这个数组为非严格单调上升数组。操作定义为任意选定一个元素,使其变成mex。mex的定义:The MEX (minimum excluded) of an array is the smallest non-negative integer that does not belong to the array.题目思路写了一个多小时都不会写。。。一直以为是有一个通解其实就是构造成0,1,2…n-1标准题原创 2020-07-05 10:11:57 · 3323 阅读 · 0 评论 -
Codeforces Global Round 8 C. Even Picture 题解(构造)
题目链接题目大意让你构造一个连通图,图中有k个灰点其中n个点4面都是灰点,(k-n)个点周围2个点是灰点题目思路emm,想了好久没思路。感觉这种构造比较神奇当n=3,那么就是令最左上角的坐标为(1,1)代码#include<bits/stdc++.h>using namespace std;typedef long long ll;int n;int main(){ scanf("%d",&n); printf("%d\n",3*n+4);原创 2020-06-19 10:37:16 · 303 阅读 · 0 评论 -
Codeforces Round #643 (Div. 2) D. Game With Array 题解(构造)
题目链接题目大意要你构造一串长度为n总和为s的数组,求其是否满足一段连续的数组和为k或者s-k,0<=k<=s题目思路其实感觉这些题目都是靠猜,猜一下就出来了,当s>=2*n,那么就可以n-1个数全部为2,另外一个为s-2n+2,则当k=1,肯定就不满足。代码#include<cstdio>using namespace std;const int maxn=1e6+5;typedef long long ll;int n,s;int main(){ s原创 2020-05-18 14:52:39 · 201 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4)F. Binary String Reconstruction 题解(构造)
题目链接题目大意要你构造出一个01字串满足每相邻的一对元素中,0,1,2个‘1’中的个数。题目思路我好菜啊qwq,看了一下题解真是简单的构造题。单独考虑情况n1 = 0,并分别打印n0 + 1个0或n2 + 1个的1。现在我们的字符串至少有一对“ 10”或“ 01”。 让我们形成长度为n1 + 1的模式“ 101010 … 10”。 因此,所有总和为1的子串都得到满足。 现在,让我们在第一个零之前插入n0个零。然后在第一个1之前插入n2个1,满足条件.代码#include <bits/原创 2020-05-10 10:13:48 · 148 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) G. Special Permutation
题目链接题目大意就是一个n,要你写出一个全排列满足所有相邻元素差值的绝对值大于等于2小于等于4.题目思路构造题,但是我没什么具体的思路,其实很简单。如果n <4,则没有答案。 您可以做一些手工确定。 否则,答案存在,并且有一种简单的构造方法:首先,让我们将所有奇数整数以递减顺序放入答案中,然后将4、2和所有其他偶数以递增顺序放置。 要测试它始终有效,您可以在本地运行某种检查器(可以在不到一秒钟的时间内非常快速地检查所有1000个测试,这有时可能很有用)。代码#include<cst原创 2020-05-10 09:44:13 · 290 阅读 · 0 评论 -
Codeforces Round #638 (Div. 2) B. Phoenix and Beauty 题解(构造)
题目链接题目思路其实自己差不多想到这个方面,但是还是没有想透彻为了使某个数组的k美观,该数组必须是周期为k的周期。 如果数组a中存在超过k个不同的数字,则没有答案,我们将打印-1(因为数组不能以周期k为周期)。 否则,我们提出以下构造。考虑数组a中所有不同数字的列表。 如果少于k,我们将附加一些1(或任何其他数字),直到列表的大小为k。 我们可以将此列表打印n次。 我们的数组b的长度是nk...原创 2020-05-02 08:28:19 · 576 阅读 · 0 评论 -
Hash Killer I 2 3 题解(hash+构造)
Hash Killer I 题目链接题目大意就是出一组数据卡掉hash ull的自然溢出题目链接首先明白两点:1.卡hash的关键在于构造两个不同的串对应的hash值相同。2.爆u64相当于对2^64这个数取模。如果base是偶数那么a…aaa(>64个a)与ba…aa(a的数量为前面那么串a的数量-1),这两个串长度相同,hash值相同,显然串是不同的,这样就卡掉了。如果...原创 2020-04-20 15:44:40 · 2811 阅读 · 1 评论