![](https://img-blog.csdnimg.cn/2021031511021297.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
构造
文章平均质量分 66
构造
林苏泽
很多时候终点看着很远,实际也很远,但只要你不向它跑去,他永远都很远,所以只有你向它跑去,才能更接近它,所以加油,向前奔跑吧,即使最后没有到达所想的终点,但我想也不会差。起码我们已经比别人距终点近了好多。
展开
-
2018icpc青岛F . Tournament (构造)
题意:给出n个骑士,进行k次对战,每个骑士只能与另一个骑士对战一次,如果第i回合A对战B,C对战D,那么如果第j回合A对战C(D),那么B一定对战D©。问是否可能构成k场对局。字典序从小到大。分析:我们看最小的字典序,也就是我们想到的最优的不过就是1 2 3 4 5 6 7 8 (然而这个不能用,本人不能跟本人对战)2 1 4 3 6 5 8 7 (那么我们只好选优,肯定12互换,34互换)3 4 1 2 7原创 2021-11-03 20:08:57 · 464 阅读 · 1 评论 -
2018ICPC青岛(D,E)
2021/11/03 19:03:28D . Magic Multiplication题意:给出A,B可以计算出C,计算方式是:A的第一位与B位上的数相乘得到一个数,加入字符串,接着A第二位数,,举个例子就是:23 ×\times× 45=8101215,8=24,10=25,12=34,15=35.然后给出C,然我们求出,A,B,如果有多组符合条件,我们直接输出最小的A即可。分析:首先我们知道这个运算,那么我们就能够得到,如果我们确定了A的第一位,那么就可以通过C前几位确定B的全部位上的数字:原创 2021-11-03 19:28:23 · 306 阅读 · 0 评论 -
ARC 123 D - Inc, Dec - Decomposition (思维构造+DP)
链接题意:给出A序列,让你构造出B,C序列要求满足:Bi+Ci=AiB_i+C_i=A_iBi+Ci=AiB序列递增C序列递减使得∑∣Bi∣+∣Ci∣\sum |B_i|+|C_i|∑∣Bi∣+∣Ci∣最小化分析:我们要让B递增,C递减,∑\sum∑那么我们肯定要 满足Bi=Bi+1B_i=B_{i+1}Bi=Bi+1或者Ci=Ci+1C_i=C_{i+1}Ci=Ci+1所以一旦我们选择好B1B_1B1也就确定了整个序列。我们看B,C是相反的单调性,不好分析,我们原创 2021-10-29 12:10:31 · 312 阅读 · 0 评论 -
CF1438D Powerful Ksenia (构造+思维+数学)
链接题意:给出n个数,可以进行最多N次操作,选取i,j,k不相等,使得ai,aj,aka_i,a_j,a_kai,aj,ak变成ai⊕aj⊕aka_i \oplus a_j\oplus a_kai⊕aj⊕ak分析:首先我们看每次进行一次操作会变成什么?N为奇数:选择三个数互不相同,全部变成一个数,选择三个数其中两个数相等,那么变成第三个数。知道这些之后我们就能得出可以先通过第一种操作,使得变成两两相同的数,然后我们再通过第二种操作使得所有数相同。N为偶数我原创 2021-09-02 23:51:06 · 148 阅读 · 0 评论 -
CF1438C Engineer Artem(构造)
链接题意:给出N×MN\times MN×M的矩阵,我们需要使得 每个位置,上下左右与其不相等,进行的操作是可以使得一些数加1,只能加一次。分析:本来是找标签FFT找的,一看过得7000多,当时感觉人特别多,后来看完题才知道,是个构造,不是FFT,也可能可以用FFT,但是,又更简单的方法,那句是构造。我们要求上面左右不相等,那么我们可以构造出一个网状结构。奇偶交替出现。ll n,m;ll dp[110][110];void solve(){ cin>>n>>原创 2021-09-02 22:45:24 · 108 阅读 · 0 评论 -
CF 1562 D.Two Hundred Twenty One (思维+二分+字符串)
链接题意:给出长度为n的字符串,(+,1)(−,−1)(+,1)(-,-1)(+,1)(−,−1),然后k次询问,查询区间[li,ri][l_i,r_i][li,ri],最少去除多少个数使得al−al+1+al+2−....ara_l-a_{l+1}+a_{l+2}-....a_{r}al−al+1+al+2−....ar也就是∑i=lr(−1)(i−l)\sum _{i=l}^{r}(-1)^(i-l)∑i=lr(−1)(i−l);分析:首先我们看D1是让我求出最少去除多少个数,原创 2021-08-28 10:21:33 · 124 阅读 · 0 评论 -
CF 1561 E. Bottom-Tier Reversals (构造+思维)
链接题意给出一段长度为nnn(奇数)的[1,n][1,n][1,n]序列,让你每次可以对前缀奇数长度的序列进行操作,问是否能够在5n2\frac{5n}{2}25n次操作之内使得这段序列有序。分析首先我们这样想,每次我们操作的长度是奇数,那么每个数的下标奇偶性肯定不会改变,那么如果奇数放在偶数位置,或者偶数放在奇数位置肯定一定没有答案。对前缀操作,那么后缀是不受影响的。那么我们肯定先确定后面的数。那么我们就需要从大的开始操作,在看下给出的5n2\frac{5n}{2}25n那么肯定是让我们 两原创 2021-08-25 23:27:40 · 178 阅读 · 0 评论 -
CF 1560 E. Polycarp and String Transformation
// Problem: D - Sum of Maximum Weights// Contest: AtCoder - AtCoder Beginner Contest 214// URL: https://atcoder.jp/contests/abc214/tasks/abc214_d// Memory Limit: 1024 MB// Time Limit: 2000 ms//// Powered by CP Editor (https://cpeditor.org)#include原创 2021-08-19 15:34:48 · 177 阅读 · 0 评论 -
Codeforces Round #735 (Div. 2) D. Diane(构造)
链接题意:要求您构造一个长度为 nnn 的由小写字母构成的字符串,使得字符串内每个字串出现奇数次。思路:首先我们想,任意给一串连续一样的字符长度为nnn,如果nnn是奇数,那么所有奇数长度出现的次数一定是奇数次,所有偶数出现的次数一定是偶数次,反之如果nnn是偶数,那么所有偶数长度出现发的次数一定是奇数次,所有奇数长度出现的次数一定是偶数次。然后我们看奇数+偶数一定是个奇数所以我们可以直接让一个奇数个数和一个偶数个数结合一下就ok了。当然中间要加上一个或者两个其他字符,。ll n, m;vo原创 2021-08-06 19:28:49 · 106 阅读 · 0 评论 -
Codeforces1480D1 D2. Painting the Array I(II)
D1. Painting the Array I题意:本题与 CF1480D2 的唯一区别是本题询问最大可能解.给定一个数组 aaa, 你将将 aia_iai染为bib_ibi色, 其中 bbb 是由你指定的一个 01 数组. 将 aaa 数组中被染成 0 色的数字取出来并依在 aaa 中出现的顺序排列, 组成数组 a(0)a^{(0)}a(0). 同理, 将 aaa 数组中被染成 1 色的数字取出来并依在 aaa 中出现的顺序排列, 组成数组 a(1)a^{(1)}a(1). 我们定义 seg(原创 2021-04-27 21:29:15 · 141 阅读 · 0 评论 -
牛客昆明站K.Parallel Sort
题目链接题意:给出你长度为nnn的一个序列(n的全排列),让你通过交换两个数来让他变成下标和数值对应。每一场可以包含多对,但是每个点只能用一次。问你最少需要多少场能使得他变成我们需要的序列(单调递增),并且输出每次操作的两个点。思路:我们对样例先进行分析一下来理解题意44 3 2 1我们可以通过换(4,1),(3,2) {这里指的是数值}因为没有一个点使用俩遍,所以我们可以通过一次操作来实现。然后我们进一步分析,每个位置有两个属性分别是:下标和值这里是一开始的错误思路:一开始以为最多原创 2021-04-17 09:56:59 · 425 阅读 · 3 评论 -
Codeforce 1512-G. Short Task(数学)
1512 G. Shoer Task题目链接题意:思路:题目链接题意:给出你的一个定义d(n)=∑k∣nkd(n)=\sum_{k|n}kd(n)=∑k∣nk让你的求第一个d(x)=n,求最小x是多少.思路:典型的数学题.就此类题而言,看到整除我们能想到用到素数,因为根其因子相关,而因子最后就归于质因子.先这样想着,之后我们看看能不能发现规律:我们能知道d(1)=1,d(2)=1+2,d(3)=1+3,d(4)=1+2+4,d(5)=1+5...d(1)=1,d(2)=1+2,d(3)=1+原创 2021-04-12 20:45:13 · 247 阅读 · 0 评论 -
P3599 Koishi Loves Construction(构造+思维)
P3599 Koishi Loves Construction超级考验思维的构造题.题意:构造出这两种:长度n的n的全排列,使得前缀和modnmodnmodn后数各不相同.长度n的n的全排列,使得前缀积modnmodnmodn后数各不相同.思路:先看前缀和的:而(x+n)%n==x,所以n一定是放在第一个位置的,首先我们看当n为奇数时,那么n-1就是偶数 :那么 1+(n-1) ,2+(n-2)…都等于n.那么最后和一定是n的倍数.也就会再出现个取余为0.所以奇数的话(除去1)不原创 2021-04-06 14:46:42 · 1026 阅读 · 2 评论 -
Codeforces 1484B. Restore Modulo(思维+构造)
题目链接题意:给出你n个数a[i],让你构造出b[]满足:a[i]=b[i].b[1]=s%m.b[i]=(b[i-1]+c)%m;让你求最大的m,和适当的c.题解:很明显我们需要去构造,而且需要判断我们构造出来的是否跟a数组相等,我们先看一个性质,因为我们每次都是+c那么如果b[i+1]>b[i]b[i+1]>b[i]b[i+1]>b[i] 那我们是不是可以先把(b[i+1]−b[i])(b[i+1]-b[i])(b[i+1]−b[i])当作我们c.那么既然是固定的原创 2021-03-22 21:18:23 · 266 阅读 · 0 评论 -
Codeforces 1474C.Array Destruction
题目链接题意:给出一个2n个数的序列,一开始你可以任选一个x值,然后在序列中找到两个数,使得这两个数的和等于x。然后删除这两个数,并让x等于这两个数中的最大值。直到整个序列全部被删除为止。问:求一个初始的x值,使序列能被完全删除。如果不能被完全删除,输出NO。思路:因为每次操作进行完后,x都会等于删除的两个数中的最大值。因此为了能够将所有数删除,每次删除的一对数中必然包含着当前序列中的最大值。所以每次我们都需要用到当前序列中最大的数值,因为如果你不用后面将无法再用到这样,就存在没有消掉的数.这样原创 2021-03-16 12:55:51 · 145 阅读 · 0 评论 -
2021年度训练联盟热身训练赛第二场J.owest Common Ancestor
题目链接题目大意: 一个16进制的完全二叉树,让你求两个数的最近公共祖先(LCA).思路: 首先带你了解一下二进制的性质:有点丑将就看吧,因为根 是从1开始的,所以如果有一个点是x那么他的左孩子是2∗x2*x2∗x,而他的有孩子是2∗x+12*x+12∗x+1.那么再结合二进制也就是左移一位,如果左子树那么就是后一位0,否则为1,所以我们可以知道一个点的子树一定是由他左移过来的.就是两个数(二进制)的前缀就是他们的最近公共祖先(LCA),而二进制与16进制的关系就是一位16进制可以转化成4位二进制原创 2021-03-14 19:41:37 · 309 阅读 · 0 评论 -
C. K-beautiful Strings
#include <bits/stdc++.h>using namespace std;const int maxn = 3e5+10;char a[maxn];int n,k,b[30],c[30],las[maxn][27],top;char ans[maxn];bool isok(int nxt,int c[]) { while( nxt<=n ) { for(int i='z'; i>='a'; i--) { if( c[i-'a.原创 2021-03-12 08:57:08 · 288 阅读 · 0 评论 -
Codeforces D. Genius‘s Gambit
题目链接题目大意:给出你a个0,b个1,让你构造成两个二进制(没有前缀0),两个作差使得差有k个1,(没有前缀0).题解:既然我们构造出差为k个1那么11∗∗∗∗(k−1)∗∗0∗∗∗∗11****(k-1)**0****11∗∗∗∗(k−1)∗∗0∗∗∗∗10∗∗∗∗(k−1)∗∗1∗∗∗∗10****(k-1)**1****10∗∗∗∗(k−1)∗∗1∗∗∗∗举个例子就是:1100000100001110000001001011做差得:00111111111000我么可以看出原创 2021-02-28 17:43:32 · 185 阅读 · 2 评论