
构造
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
Codeforces Round #410 (Div.2) D.Mike and distrubition-构造
题目链接:右转进入题目 题目大意:给定正数列{an},{bn},要求选择n/2+1(除法下取整)个数p1,p2,...,使得2(ap1+ap2+...)>a1+a2+...+an,2(bp1+bp2+...)>b1+b2+...+bn 题解:这个题非常有意思的构造! 构造方法是这样的:不妨假设n是个奇数, 然后将(Ai,Bi)看组一个struct,按照A降序排序。先选择排序后的(A1',B原创 2017-04-26 20:51:10 · 454 阅读 · 0 评论 -
伝える - 随机 - 构造 - 线性基 - 通信
题目大意: 这是一道通信题。 A接受n,k个位置,和long long类型的x。返回一个长为n的字符串,满足那k个位置必须是’0’,其余可以是’0’或者’1’。B接受A返回的字符串,返回x。n=150,k≤40,x≤1018n=150,k\le40,x\le10^{18}n=150,k≤40,x≤1018 题解: 场上(去场上的路上)想到了一个做法,随机一个每个数值都是64位非负整数的常数列,然后...原创 2019-03-13 16:04:56 · 329 阅读 · 0 评论 -
LOJ #6502「雅礼集训 2018 Day4」Divide - 构造 - dp
题解:考虑没有办法直接dp的原因是每次决策把某个点放入A或者B中不能确定产生了多少贡献。 因此考虑若能将{wn}\{w_n\}{wn}适当排列,使得∀i∈[1,n]⇒(∀j∈[1,i)→wj+wi≥m)⋃(∀j∈[1,i)→wj+wi<m)\forall i\in[1,n]\Rightarrow\left(\forall j\in[1,i)\rightarrow w_j+w_i\g...原创 2019-02-23 21:26:37 · 324 阅读 · 0 评论 -
决战 - 构造
给你一个n*n的矩阵的第1行,并保证第一行存在两个数字互质,构造剩下的n-1行使得行列式是1。n≤5n\le5n≤5,输入的数字和你填的数字必须是绝对值在[−2000,2000][-2000,2000][−2000,2000]的整数。 题解: 考虑n=2怎么做,exgcd即可。然后再填n-2个1即可保证有值的排列只有最多两个。 #include<bits/stdc++.h> #defi...原创 2018-12-09 19:15:37 · 217 阅读 · 0 评论 -
LCIS - 构造 - 分治
题目大意: 给你一个序列,长度不超过32000,要求用不超过4e6的代价将其排序。 你可以进行的操作形如选定一个区间然后翻转,代价是区间长度。 题解: 考虑快排,现在选定了一个数字(实际应该选择离散化后的中位数),要将小于等于他的放左边,大于放右边。这个怎么搞,你将小于等于的看做0,大于看做1,相当于是把一个01序列排序,这个可以搞一个类似于归并的分治。总复杂度两个log,实现优秀可以通过。 #i...原创 2018-11-28 10:18:48 · 222 阅读 · 0 评论 -
atcoder tenka1 2018 D - 结论 - 构造
题目大意:给定n和n个元素1到n,要求构造若干集合,使得每个元素出现在恰好两个集合中,并且任意两个集合交集大小恰好是1. 题解:假定有k个集合,那么就会有k(k-1)/2个交集。显然这k(k-1)/2个交集两两不同,并且由于任意一个元素都出现了恰好两次,因此至少两个集合的交集似乎它。因此k(k-1)/2=n。反过来的构造也是很显然的,对每个元素钦定两两不同的一对无序集合即可。 #include&l...原创 2018-10-28 16:22:18 · 344 阅读 · 0 评论 -
AGC 004 C. AND Grid - 构造
给你一个01网格图,有一些格子为1。 构造两个01网格图B和C,使得二者的按位与是A,并且B中1是四连通的,C中1是四连通的。3≤n≤5003\le n\le5003≤n≤500。保证A边界没有1。A中至少有一个1。 题解:除了边界,B填奇数行,C填偶数行;B填左边界,C填右边界即可…… #include<bits/stdc++.h> #define gc getchar() #d...原创 2018-10-16 16:21:31 · 243 阅读 · 0 评论 -
ARC 103 E Tr/ee - 构造
题目大意:给你一个01字符串,构造一颗树满足对于任意iii,s[i]=s[i]=s[i]=存在切掉恰好一条边的方案使得存在大小为i的连通块。 题解:首先判掉s[1]和s[n],以及s[i]=s[n-i],除此之外,设初始根为rt=1,从小到大考虑i=1…(n-1),连边(i+1,rt),若s[i]=1则rt=i+1。(也就是s[i]=1就向上走一步,否则添儿子)。可以发现这显然是对的。 #incl...原创 2018-09-29 21:43:07 · 413 阅读 · 0 评论 -
ARC 103 F Distance Sums - 树的重心 - 构造
MMP这场ARC三个构造…… 题目大意:构造一棵树满足x到所有点的距离之和是d(x),d两两不同。 首先有两个性质:重心到所有点的距离之和最小。以重心做根,每个点x都有d(x)=d(fa)+n-2sz(x)<d(fa)。 因此首先d最大的x一定是叶子,他的sz是1;这样可以确定他的fa节点的d(fa)=d(x)-(n-2)进而确定fa;依次类推,按d从大到小考虑每个点x,考虑到这个点的时候其...原创 2018-09-29 21:38:04 · 528 阅读 · 0 评论 -
自动机 - 构造
题目大意:给你一只n个点的确定自动机,和字符集大小m,每个节点都恰好m条转移边。构造一个字符串长度不超过1e6,使得从任意节点出发接收这个状态回到达1号点,n<=100,m<=26。SPJ。 题解:其实是给你一个NFA然后求一条路径,然后我一开始傻叉了,还真的傻了吧唧的写了个NFA转DFA以为可过,最后发现那个复杂度是基于正则表达式长度的,而不是NFA的三次…… 然后就是你发现题目...原创 2018-09-08 14:01:25 · 531 阅读 · 0 评论 -
灯 - 构造
题目大意:有n盏灯标号1到n,一开始1是亮的其余是暗的。然后从小到大考虑每个质数p,选择一个亮的灯x并且把所有和x距离是p的倍数的灯点亮。问最后亮多少灯并输出方案。 题解: 首先所有点的编号-1。 这样每次选择0就可以把除了1(原来是2)的所有灯点亮,因此答案至少是n-1。 首先当n<=16的时候没有n的解。当26<=n<=34的时候手玩。 否则:找两个质数p1和p2满...原创 2018-09-02 15:06:03 · 244 阅读 · 0 评论 -
直径 - 构造
题目大意:给一个k≤5×105k\le 5\times10^5k≤5×105,求一个点数不超过500050005000的树使得其直径数量是k。 题解:通过本地打表发现可以构造一个不超过三叉的扫把,点数分别是a,b,c,那么答案就是ab+bc+ac,对于这个范围的点数能够对每个k构造出来。 #include<bits/stdc++.h> #define rep(i,a,b) for(in...原创 2019-03-13 16:34:52 · 371 阅读 · 0 评论