![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
构造
文章平均质量分 50
欧阳小百合
始于足下!
展开
-
# 2021 年东华大学金马程序设计联赛 H. A Simple Game
H. A Simple Game哎,博弈论啊博弈论。博不出来,我太不能博了。题目传送门:题目传送门题面:题意很简单,一堆牌,A摸到该牌获得aia_iai点数,B摸到则获得bib_ibi点数。问两人操作均最优,谁会获胜。思路:赛场想半天博不出。我觉得博弈论还是要知道双方最优操作是什么个优法。附题解。代码:#include <bits/stdc++.h>typedef long long ll;using namespace std;const int ma原创 2021-05-10 23:48:40 · 119 阅读 · 0 评论 -
# Codeforces Round #720 (Div. 2) B. Nastia and a Good Array
B. Nastia and a Good Array题目传送门:题目传送门!题面:题目大意:意思是叫你选定ai,aja_i,a_jai,aj且与数字x,yx,yx,y调换,要求min(ai,aj)==min(x,y)min(a_i,a_j)==min(x,y)min(ai,aj)==min(x,y)最后结果要数列相邻元素互质。输出一组方案。思路:k≤nk≤nk≤n所以换的次数肯定是充裕的。选择数组中最小的元素,然后把其他元素和他一起打包用(x,minn)(x,minn)(x,m原创 2021-05-08 14:00:19 · 191 阅读 · 2 评论 -
# Codeforces Round #720 (Div. 2) 构造 A. Nastia and Nearly Good Numbers
A. Nastia and Nearly Good Numbers题面:中文题意:很简单啦,给你ab两个数字,要你输出xyz三个数字,要求这三个数字满足如下条件:x+y==zx+y==zx+y==zx,y,zx,y,zx,y,z中有两个仅为a的倍数,有一个是a∗ba*ba∗b的倍数。看代码就完事了,构造奥利给代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int max原创 2021-05-08 13:33:06 · 102 阅读 · 1 评论 -
# Codeforces Round #719 (Div. 3) D. Same Differences
D. Same Differences题目传送门:题目传送门!题面:题目大意:给一堆数,问其中有几对满足aj−ai=j−ia_j-a_i=j-iaj−ai=j−i关键点在于将给定的公式变形。变为aj−j=ai−ia_j-j=a_i-iaj−j=ai−i那就直接把数组存为aj−ja_j-jaj−j。相同的部分就是符合条件的总个数,然后对于每段相同的序列,用组合数学求有几对。代码:#include<bits/stdc++.h>using namespace std原创 2021-05-07 19:06:33 · 188 阅读 · 0 评论 -
# Codeforces Round #719 (Div. 3)C. Not Adjacent Matrix(构造矩阵)
C. Not Adjacent Matrix题目传送门:题目传送门!题面:题目大意:构造问题,要让相邻单元格的差值不为1。能构造输出,不能就直接-1。所以想到用奇数和奇数相邻,偶数和偶数相邻。可以先从小到大填充所有的奇数,填完奇数之后再从小到大填充完所有的偶数。这种做法除了n=2n = 2n=2 不满足情况应当输出-1外,其他的均可满足。代码:#include<bits/stdc++.h>using namespace std;typedef long long l原创 2021-05-07 18:59:29 · 457 阅读 · 3 评论 -
# Codeforces Global Round 14_ F. Phoenix and Earthquake(图论构造)
F. Phoenix and Earthquake(图论构造)题目传送门题目传送门题面:题目大意:给你n个点,m条边,限制x,每个点都有沥青a[i],定义合并两个点即两点之间有边且a[u]+ a[v] ≥ x,合并之后的沥青为a[u]+ a[v] -x,现在让你输出一种选选边方式,选n − 1条边使得n个点联通。操作:每次都选最大的a[i],之后将他与跟他相连的且不在他集合中的点合并。代码:#include <bits/stdc++.h>using namespace st原创 2021-05-05 16:30:57 · 100 阅读 · 0 评论 -
# Codeforces Global Round 14_C. Phoenix and Towers
C. Phoenix and Towers题目传送门:题目传送门题面:题目大意:贪心/优先队列。给你n个小积木搭成m个塔使各个塔之间的高度差不超过x。把塔的高度用优先队列维护, 每次取头,就是取高度最小的那个,把积木给他,最后任意两个塔的差值一定再x之内 最后使一定能保证的 所以没有NO。简单来说就是构造差值最小的最优情况,如果此时满足则可以满足,此时都不满足就一定无法满足。反思:想了半天DP都D不出来,不能盲目DP。代码:#include<bits/stdc++.h>原创 2021-05-05 12:48:42 · 112 阅读 · 0 评论 -
Educational Codeforces Round 108 (Rated for Div. 2)_思维题B. The Cake Is a Lie
B. The Cake Is a Lie题目传送门!题面:中文题意:很简单,目的是从(1,1)走到(n,m),然后两种走法。(x,y)变成(x,y+1)/(x+1,y)前者消耗代价x,后者则消耗代价y。给你n,m,k。问可否保证整个移动过程中代价为k?思路:证明略。实际上无论怎么走代价花费都是一样的,因为只能往右或者往上。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;int原创 2021-04-30 20:07:46 · 114 阅读 · 1 评论 -
Educational Codeforces Round 108 (Rated for Div. 2)_思维题A.Red and Blue Beans
Red and Blue Beans题目传送门题面:中文题意:意思是将一堆豆子分到若干(>=1)袋子里,每个袋子红色蓝色豆子都要至少存在一个。而且每袋里两个袋子数量差小于等于一个数。给红豆蓝豆数量,还有最大数量差。输出可不可以分。思路:很好想,首先保证ra<rb,不然就调换一下。反正两个豆子情况是对称的,所以ra最多消耗(1+maxx)*ra个rb豆子,不然就消耗不掉了,比大小即可。代码:#include<bits/stdc++.h>using namesp原创 2021-04-30 20:03:22 · 157 阅读 · 1 评论 -
Educational Codeforces Round 107 (Rated for Div. 2)_D. Min Cost String
D. Min Cost String题目大意:题目大意:输出最小花费的字符串。字符串长度为n,只能用k个字母。解法:经过之前对思维题的学习,觉得构造题看样例还是非常重要的!于是看样例一,发现其实正解就藏在其中。当为k*k的时候,最好保证每个元素就出现k次。于是循环节如下:aabacadbbcbd…代码:#include<bits/stdc++.h>using namespace std;const int maxn = 2e6 + 5;int a[maxn];原创 2021-04-27 18:00:02 · 99 阅读 · 0 评论 -
Educational Codeforces Round 107 (Rated for Div. 2)_C. Yet Another Card Deck
Educational Codeforces Round 107 (Rated for Div. 2)C. Yet Another Card Deck题目大意:就是先给你一个序列,然后多次询问,每次询问就把那个数处于序列的位置输出,并把那个数字提到最前面。简单的模拟。代码:#include<bits/stdc++.h>using namespace std;const int maxn = 2e6 + 5;int a[maxn];signed main() {原创 2021-04-27 17:53:53 · 84 阅读 · 0 评论 -
# Educational Codeforces Round 107 (Rated for Div. 2)_B. GCD Length
Educational Codeforces Round 107 (Rated for Div. 2)B. GCD Length题目传送门!题目大意:给出a,b,gcd(a,b)的位数,输出符合条件的一组a,b。思路:一开始想复杂了,但是是很简单的构造题。取a=a>b?a:b;,保证a是最小的那个。然后x=pow(10,a-1)+pow(10,c-1);y=pow(10,b-1);公倍数 pow(10,c-1);正好是c位。代码:#include<bits/stdc+原创 2021-04-27 17:37:34 · 76 阅读 · 0 评论 -
# Educational Codeforces Round 107 (Rated for Div. 2)
Educational Codeforces Round 107 (Rated for Div. 2)A. Review Site传送门!题目大意:1投同意,2反对,3反对不多于同意就会同意。两个服务器分流,问最多几票。cnt1+cnt3;合理分流墙头草的票是都能拿到的。代码:#include <bits/stdc++.h>using namespace std;int a[60];int cnt1,cnt2,cnt3;int main() { ios::原创 2021-04-27 17:04:48 · 93 阅读 · 0 评论 -
F. Binary String Reconstruction_思维题Day2
F. Binary String Reconstruction题目传送门题目大意:告诉n0,n1,n2,让你给出符合情况的子序列。分别代表如下:取两个连续子序列如果是11,那么n2++;如果是01/10,那么n1++;如果是00,那么n0++。思路:0000…101010111111先放n0+1个0,再放满足n1的10,再放符合条件的1。但是此时10串一定是奇数个,如要偶数n1,最后111…后面加上0。一、n0&&n2按照上述说法写。二、n0&&原创 2021-04-26 16:07:59 · 68 阅读 · 0 评论