构造
_beginend
这个作者很懒,什么都没留下…
展开
-
bzoj 3532: [Sdoi2014]Lis 构造字典序最小割
题意给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci。请删除若干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案。如果有多种方案,请输出将删去项的附加属性排序之后,字典序最小的一种。 1 < =N < =700 T < =5,Ai,Bi,Ci<=10^9分析如果没有字典序的限制的话,我们可以对在最长上升子序列中的元素进行拆点最小割就可以求出最小代价。原创 2017-06-12 22:42:13 · 592 阅读 · 0 评论 -
AtCoder Grand Contest 004 C - AND Grid 构造
题意给一个网格图1,其中一些位置被涂成了紫色。要求构造一个只有蓝色的网格图2和一个只有红色的网格图3,要求若一个位置在1中是紫色,则在2和3中必须要被涂色;反之则在2和3中不能同时涂色。且2和3中的被涂色格子必须四连通。 n,m<=500,满足1的边界必然没被涂成紫色。分析看了题解觉得好简单,可就是没有想到。。。 先不考虑边界,奇数行涂成红色,偶数行涂成蓝色。 然后第一列涂...原创 2018-02-12 13:37:52 · 210 阅读 · 0 评论 -
AtCoder Regular Contest 063 Integers on a Tree 树形dp+构造
题意给出一棵树,有一些点上的权值已经固定。问是否存在一种分配权值的方案,使得有边相连的两个点权值的绝对值等于1。 n<=100000分析首先如果存在两个点,他们深度差的奇偶性和权值差的奇偶性不相同,那么必然无解。 然后我们可以自下而上dp出每个点权值的取值范围,然后自上而下构造即可。代码#include<iostream>#include&l...原创 2018-02-26 21:33:28 · 305 阅读 · 0 评论 -
AtCoder Grand Contest 004 F - Namori 贪心+构造
题意给出一棵树或环套树,一开始每个点都是白色,每次操作可以把相邻且同色的两个点变色,问最少多少次操作后可以使整棵树变成黑色。 n<=100000分析这题像我这么弱当然是不会做啦。先考虑树怎么做: 显然树是一个二分图,我们可以看成深度为奇数的点上有一个硬币,偶数点上没有。每次操作就相当于移动一枚硬币,问最少多少次操作使得偶数点上都有硬币且奇数点上没有。 若偶数点数量不...原创 2018-02-13 10:45:44 · 394 阅读 · 0 评论 -
AtCoder Grand Contest 005 C - Tree Restoring 构造
题意给出一个序列a[1..n],问能否构造一棵树使得第i个点到最远点的距离恰好为a[i]。 n<=100分析有个结论就是任意一个点到树中的最远点必然是直径两个端点中的一个。 那么a中的最大值L必然是树的直径,且最小值不能小于(L+1)/2。 对于其他点x,我们可以在直径上最远点距离为a[x]-1上连一条边到x。 还有画一画不难发现,若L为奇数,则最远点距离为(L+1)...原创 2018-02-13 11:24:21 · 306 阅读 · 0 评论 -
AtCoder Regular Contest 091 E - LISDL 构造
题意要求构造一个1到n的排列,使得该排列的最长上升子序列恰好为a,最长下降子序列恰好为b。若不存在方案则输出-1。 n,a,b<=300000分析考虑如果只有最长上升子序列的限制的话要怎么做。 我们可以把1到n分成连续的a段,然后每段递减,这样子就可以满足最长上升子序列恰好为a了。 加上最长下降子序列的话,我们只要让最长的那一段的长度恰好为b即可。代码#...原创 2018-03-12 14:53:36 · 300 阅读 · 0 评论 -
AtCoder Regular Contest 093 D - Grid Components 构造
题意要求构造一个边长小于100的网格图,每个格子是白色或黑色。给出A和B,要求白色连通块的数量恰好为A,黑色连通块的数量恰好为B。 1<=A,B<=5001<=A,B<=5001...原创 2018-03-25 21:55:59 · 215 阅读 · 0 评论 -
bzoj 5100: [POI2018]Plan metra 构造
题意有一棵n个点的无根树,每条边有一个正整数权值,表示长度,定义两点距离为在树上的最短路径的长度。 已知2到n-1每个点在树上与1和n的距离,请根据这些信息还原出这棵树。 2<=n<=500000分析先把1到n路径上的节点找出来。 这里分两种情况,一种是1到n有连边。这种情况特判一下就好。 另一种是1到n没有连边,那么就找出其路径上的点,然后对于其他每个点,很容...原创 2018-04-16 13:28:47 · 286 阅读 · 0 评论 -
Codeforces 1019C Sergey's problem 构造
题意给定一个n个点m条边的有向图,要求选出一个点集S,满足S中的任意两点间没有边相连,且对于任何一个不属于S的点y,必然存在S中的某个点x满足d(x,y)≤2d(x,y)≤2d(x,y)\le 2,其中d(x,y)d(x,y)d(x,y)表示x到y的最短路。 n,m≤106n,m≤106n,m\le10^6,题目保证有解。分析具体一点的题解可以看这篇文章。 大概做法就是,对于当前图...原创 2018-08-12 11:18:16 · 580 阅读 · 0 评论 -
AtCoder Grand Contest 008 D - K-th K 构造
题意给出n个数组x[1..n],要求构造一个长度为n*n的数组a,使得a中1到n每个数恰好出现n次,且对于任意的i,有从左到右第i个出现的i的下标为x[i]。 n<=500分析直接把1到n按照x从小到大排序,对于每个i,把前i个i填进去。 然后再从小到大把剩下的位置补完即可。代码#include<iostream>#include<cs...原创 2018-02-09 19:41:01 · 369 阅读 · 0 评论 -
AtCoder Grand Contest 016 C - +/- Rectangle 构造
题意给出n,m,x,y,要求构造一个n*m的矩形使得其元素和大于0且任意一个x*y的子矩形的元素和小于0。 x,y,n,m分析很容易想到在所有横坐标为x的倍数,纵坐标为y的倍数的格子填上-x*y,其余格子全填1,这样就可以保证每个子矩阵的和小于0。但是这样在多出来的格子比较少的时候可能会导致整个矩形的元素和小于0。于是我们可以设一个较大的常数d,把每个格子填上d,每个关键格子填上原创 2018-02-02 21:29:28 · 273 阅读 · 0 评论 -
bzoj 3168: [Heoi2013]钙铁锌硒维生素 矩阵求逆+构造最小字典序完备匹配
题意给两组向量,每组有n个n维向量。,求一组字典序最小的匹配方案使得把第一组向量的任意一个替换成其对应的向量后满足这n个向量仍然线性无关。 n<=300分析这是14年的集训队论文题。显然第一组向量是n维向量空间的一组基,那么第二组向量显然都可以由第一组向量表示出来。 这里有一个结论,就是若第一组向量的某个向量j可以由第二组向量的某个向量i替换,当且仅当在用第一组向量表示向量i的式子里,j的系数不原创 2017-06-14 20:16:14 · 665 阅读 · 0 评论 -
bzoj 2407: 探险 最短路+构造
题意探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则:每个溶洞和其他某些溶洞有暗道相连。两个溶洞之间可能有多条道路,也有可能没有,但没有一条暗道直接从自己连到自己。参赛者需要统一从一个大溶洞出发,并再次回到这个大溶洞。 如果就这么点限制,那么问题就太简单了,可是举办方又提原创 2017-07-15 19:28:00 · 473 阅读 · 0 评论 -
bzoj 4936: [Ceoi2016]match hash+构造
题意给你一个由小写字母组成的字符串s,要你构造一个字典序最小的(认为左括号的字典序比右括号小)合法的括号序列与这个字符串匹配,字符串和括号序列匹配定义为:首先长度必须相等,其次对于一对匹配的左括号和右括号i,j,必须有s[i]==s[j]。无解输出-1 n<=100000分析一道脑洞比较大的题。设f[i,j]=0/1表示[i,j]这一段是否能组成一个合法的括号序。 首先考虑如何判-1。我们可以把原创 2017-09-17 20:42:48 · 822 阅读 · 0 评论 -
Codeforces 891B Gluttony 构造
题意给你一个数组a,满足a中元素两两不同。要求构造一个数组b,使得b是a的一个排列,且满足 1 ≤ n ≤ 22,0 ≤ ai ≤ 10^9分析比赛的时候被这个数据范围吓到了,以为是状压之类的奇奇怪怪的做法,于是就没有去猜结论。 实际上,我们把a排序后,让a整体往前移一位,然后把a[1]放到a[n],从而得到b,可以保证这样的b一定是满足条件的。 证明:对于集合S={x1,x2,...,xk}原创 2017-11-18 09:31:44 · 353 阅读 · 0 评论 -
Codeforces 896B Ithea Plays With Chtholly 交互/构造
题意有一个长度为n的数组和m次操作并给出一个正整数c。每次操作会给出一个数x,保证x为不大于c的正整数。要求你每次都把x放到数组的某个空位置或替代掉某个数。使得在m次操作结束之前满足数组的每个位置都有数且其单调不降。注意必须在线,也就是在输入下一个数之前就要输出当前数所放的位置且不能再更改。分析有点意思的脑洞题(其实并不难),在比赛快结束的时候才想到。不然估计就要掉回div2了。 就是设mid=c原创 2017-12-06 16:53:09 · 401 阅读 · 0 评论 -
东莞市2014年市队选拔赛 分组 构造二分图最小覆盖方案
题意分析显然判断前缀和后缀是否相等可以用hash。我在比赛的时候打了个贪心,每次都选比较大的组,水了59分。其实可以把每个前缀和后缀都当成一个点,建立二分图,把每个字符串当成一条边,那么问题就转变成了求一个二分图最小覆盖的方案。方法如下: 首先把所有匹配边和匹配点求出来,然后对于每个连通块讨论:若该连通块没有未匹配点,则把该连通块某一侧的点全部选掉即可。否则就从任意一个未原创 2017-06-07 12:53:21 · 463 阅读 · 0 评论 -
AtCoder Grand Contest 012 C - Tautonym Puzzle 构造
题意让你构造一个长度不超过200的字符串,使得其恰好有n个非空自序列可以表示成AA的形式,其中A表示一个字符串。 n分析这个构造比较巧妙。 一开始很直接的想法就是分段构造且段与段之间互不影响,但这样随手就爆长度限制了。 考虑放在一起构造。 设mm为最大的kk使得2k=n2^k 先构造一个1,2,...,m,1,2,...,m,m+1,m+11,2,...,m,1,2,..原创 2018-01-24 17:02:02 · 280 阅读 · 0 评论 -
AtCoder Grand Contest 015 D - A or...or B Problem 构造
题意给出b,a,问用区间[b,a]中的数可以通过or运算得到多少个不同的数。 a,b分析设a和b的最高不同位为d,a从d开始的第二个非零位为k。我们把所有数分成两部分,第一部分是d位上是1。 显然不管选哪几个数进行or运算,d之前的位置都是相同的,所以不妨把d之前的位去掉。 先对每个部分单独考虑。 对于第二部分[b,2d−1]" role="presentatio原创 2018-02-02 13:31:51 · 314 阅读 · 2 评论 -
AtCoder Regular Contest 103 F - Distance Sums 构造
题意给出n和一个长度为n的数组d,满足d数组中的任意两个元素互不相同,要求构造一棵n个节点边权为1的树,使得所有节点到节点i的距离和恰好为d[i]。n≤100000n\le100000n≤100000分析显然按d[i]排序之后,要么从小到大构造,要么从大到小构造。由于d[i]互不相同,不难发现d[i]最小的一定是重心,d[i]最大的一定是叶子。由于一棵树中除了根以外每个节点只有一个父亲...原创 2018-10-01 22:19:40 · 441 阅读 · 0 评论