![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CF
文章平均质量分 53
我wa的一声就哭出来了
不想写题补题就来写题解了555
展开
-
Codeforces Round #797 (Div. 3) A—E
A-E 题解+代码,内含做题碎碎念(原创 2022-06-09 16:36:53 · 130 阅读 · 0 评论 -
C. Rooks Defenders【Codeforces Round #791 (Div. 2)】
C. Rooks Defenders题意:三种操作:1:给x,y添加一个R2:给x,y删除一个R3:查看从(x1,y1)到(x2,y2)这个矩形区间是否会被“攻击”完。设定是一个R可以攻击横向和纵向所有的位置,题解:查看这个区间的横向或者纵向是否能被攻击完就行,关键的是如何实现它。一个一个查询铁定会爆,此时采用set存横纵无攻击性的值,如果利用二分查找x1的下一个值大于x2或者y1的下一个值大于y2。则在此之间可以全部被攻击掉。#include <iostream>#inc原创 2022-05-19 20:29:52 · 369 阅读 · 0 评论 -
C. Binary String【Educational Codeforces Round 128 (Rated for Div. 2)】
C. Binary String题意:给出t串字符串,对每一个字符串。使其max(删去的1,剩下的0)等于代价(删去一个1的代价为1)题解:可以使用前缀和数组记录0、1的个数。【二分答案】:枚举起始点,二分查找符合题意的终点,算出本次最小价值。最后求所有最小中的最小。另外分享一个大佬的解法:转到知乎——思维解法#include <iostream>#include<bits/stdc++.h>using namespace std;#define sc scan原创 2022-05-17 01:33:44 · 545 阅读 · 2 评论 -
Codeforces Round #785 (Div. 2)C. Palindrome Basis
C. Palindrome Basis题意:求和为n的所有情况数,要求为回文数相加。题解:首先想到的是预处理回文数,毕竟回文数就不是太嘛。代码跑了下4e4以内回文数是499个。然后我当时浅搜了下“求和为n的所有情况数”,有用递归有用dp的。当然优先考虑dp啦!然后考虑状态转移。首先:dp[0]=1。i表示第几个回文数,j表示和为n的数。外循环i,内循环j。dp[j]=dp[j](上一轮算好的结果)+dp[j-wt[i]](去掉这个回文数后);刚开始着实有点迷,自己推推数据就好。我的dp尊原创 2022-05-03 21:03:22 · 187 阅读 · 0 评论 -
Codeforces Round #786 (Div. 3)E、Breaking the Wal
题意:攻击一行数,任意选择一个,攻击某位置可以使得该位置-2,相邻位置-1.求使得两个为0的最小值。题解:把所有可能最小的情况求出,再取最小。大概推推可以发现,最小值会出现这三种情况中:1.相邻:假定其为a,b。如果a大于等于b的两倍,那么mmin此时与(a+1)/2比较。因为只对a操作b一定能归0。b大于等于二倍的a类似。(wa的原因就是忽略了这种情况55)如果都不满足呢。其实是和除以3向上取整,因为对一次操作来说,其实是对和作用了3。写个例子就能很清楚的推出了。2.相隔1:假设顺序为原创 2022-05-03 19:18:29 · 321 阅读 · 0 评论 -
【Codeforces Round #783 (Div. 2)】C. Make it Increasing
题解:因为可以加可以减,那么假定一个0,左为负右为正,绝对值都是向两边递增。直接枚举每一位为0时就好了,对剩下每一位再求出至少需要多少个次数,不能一个一个试,因为和上一个相比至少大1,拿上一数+1在除以a[i]后向上取整可以保证每次满足题意的最小次数。因为最小值初始赋太小而wa了,,,注意pa,得是1e18级别的才能大于全部的ans。#include<bits/stdc++.h>using namespace std;const int maxn=2e5+7;#define ll l原创 2022-04-20 17:26:58 · 872 阅读 · 0 评论 -
Codeforces Round #782 (Div. 2)
A. Red Versus Blue题解:我真的服了这A,惯性思维觉得放在A所以很简单。。就。。虽然也不难(怎么加最散呢。求r/b,算出r和b的比值。输出b组br(1个b,r/b个r)就是最初的序列。而剩下的r%b个r,一个一个往每一组br里面插入就好了。#include<bits/stdc++.h>using namespace std; #define pr printf#define sc scanfconst int maxn=1e5+7;int main() {原创 2022-04-18 19:56:13 · 211 阅读 · 0 评论 -
【CF CodeTON Round 1】
A Good Pairs题意题解略。自己码代码能力有待提升。#include<bits/stdc++.h>#define ll long long#define sc scanf#define pr printfusing namespace std;const ll maxn=2e5+10;int a[maxn];int main(){ int t;cin>>t; while(t--){ int n;sc("%d",&原创 2022-03-25 19:23:32 · 1704 阅读 · 0 评论 -
【Educational Cf Round 125 】A—D
A Integer Moves题意:略题解:一共就三种情况,具体略(需要注意的是sqrt()返回的并不是整型,记得前面加(Int)#include <bits/stdc++.h>using namespace std;const int maxn=2e5+7;#define sc scanf#define pr printf#define ll long long#define mod 998244353 #define INT INT_MAXll dp[maxn][5原创 2022-03-24 20:31:36 · 763 阅读 · 0 评论 -
【CF #777 div2】A—D
【稍后补代码】A. Madoka and Math Dad题解:拆分成2、1。找到能生成的最大值即可。B. Madoka and the Elegant Gift题解:还是有点弄不清题意。总之就是把如果存在相邻四个格子(四个方向)只存在三个为黑色则满足题意。C. Madoka and Childish Pranks题意:如何按棋盘格的格式填成所需格式,不得填成则输出-1题解:我们只用两种格式,即横向和纵向的【白黑】然后先从右向左填满第一排,然后从右下角往左上角填即可。第一个位置可能会出现不原创 2022-03-18 17:17:56 · 1302 阅读 · 0 评论 -
CF #772 (Div. 2)A—C
A Min Or Sum题解:略#include <bits/stdc++.h>using namespace std;#define ll long long #define sc scanf#define pr printfconst int maxn=1e3+3;int a[maxn][maxn];int main(){ int t;cin>>t; while(t--){ int n;cin>>n; int x原创 2022-02-23 05:51:44 · 93 阅读 · 0 评论 -
CF #771 (Div. 2)A-D
A. Reverse题解:略#include <bits/stdc++.h>using namespace std;#define ll long long #define sc scanf#define pr printfconst int maxn=1e3;int a[maxn];int main() { int t; cin>>t; while(t--){ int f=1; int n;cin>>n; int i=1;原创 2022-02-23 05:41:16 · 107 阅读 · 0 评论 -
【 2.8日题解 】
Not Shading链接跳转题解:其实只有几种情况。1》-1,未出现B2》0,该位置是B3》1,该行/列出现B2》2,该行/列未出现B#include<bits/stdc++.h>using namespace std;#define sc scanf#define pr printfchar a[100][100];int main() { int t;cin>>t; while(t--){ int l,r,nl,nr; sc("%d%d%d原创 2022-02-09 08:26:04 · 60 阅读 · 0 评论 -
【Educational Codeforces Round 115 (Rated for Div. 2)】A—D
A - Computer Game题意:初始点(1,1)终点(2,n)格子为0可以过。每次可以移动为x+1或y+1或者都+1(或者-1).给出格子内的障碍,求是否能到终点。题解:看看能不能形成一堵墙,即不管使(1,i)还是(2,i)都是1,这样无论怎么样都是过不去的。#include <bits/stdc++.h>using namespace std;#define sca scanf#define pr printf#define ll long longconst原创 2022-01-18 00:48:10 · 406 阅读 · 0 评论 -
【【1.16】】
A - Equidistant Letters题意:输出的每对间距相同。题解:就全让成对的挨着。#include <bits/stdc++.h>using namespace std;#define sc scanf#define pr printf#define ll long longconst int maxn=1e3;int main() { int t;cin>>t; while(t--){ string s;cin>>s;原创 2022-01-17 04:24:40 · 169 阅读 · 0 评论 -
【Codeforces Round #765 (Div. 2)】A、B、C
A - Ancient Civilization题意:略。题解:统计每一个位置的0、1数量,选择大的那个即为最好的。#include <bits/stdc++.h>using namespace std;#define sc scanf#define pr printf#define ll long longconst int maxn=1e3;//int a[maxn],vis[100];int a[35],b[35];int main() { int t;cin&原创 2022-01-15 02:47:03 · 230 阅读 · 0 评论 -
【Codeforces #762 (Div. 3)】B—E
B - Squares and Cubes题解:n有1e9,但是根号n只有1e4,这样就可以直接做了,验证1-根号n#include <bits/stdc++.h>using namespace std;#define sc scanf#define pr printf#define ll long longconst int maxn=1e5+7;//int a[maxn],vis[100];int main() { int t;cin>>t; ll x;原创 2022-01-14 07:28:51 · 229 阅读 · 0 评论 -
【CF#764 (Div. 3)】A——D
A. Plus One on the Subset题意:略题解:问所有都一样的操作数,找最远距离。#include <bits/stdc++.h>using namespace std;#define sc scanf#define pr printfint main() { int t;cin>>t; while(t--){ int n;sc("%d",&n); int x,mmin=INT_MAX,mmax=INT_MIN; for(int原创 2022-01-12 04:54:00 · 146 阅读 · 0 评论 -
【Cf #763 (Div. 2)】A、B、C
A - Robot Cleaner题意:略。题解:暴力。#include <bits/stdc++.h>using namespace std;#define ll long longconst int maxn=1e5+3;int a[maxn];#define sc scanf#define pr printfint main() { int t;cin>>t; int n,m,rb,cb,rd,cd; while(t--){ sc("%d%d%d%原创 2022-01-06 02:39:08 · 515 阅读 · 0 评论 -
【CF | Good Bye 2021: 2022 is NEAR】A—D
A - Integer Diversity题意:略题解:引入一个数组记录绝对值出现次数,普通最多有效两次,特判0最多一次。#include <bits/stdc++.h>using namespace std;#define ll long longconst int maxn=1e3+3;int a[maxn];int b[maxn];int main() { int t;cin>>t; while(t--){ int n;cin>>n;原创 2022-01-04 22:40:41 · 550 阅读 · 0 评论 -
【CF #204 div1】B、Mashmokh and ACM【dp】
传送门题意:给出两个数,n、k。要求一个序列中后一位数对前一位数求余为0。n是序列内最大能赋的值,k是所求序列的长度。然后呢,求最多有多少种序列。and不要忘记对答案求余——mod=1e9+7题解:看的这位dalao的题解,讲的好详细:点我点我。包括如何往dp这方面想,对于我这个dp菜狗很有帮助hhh。写出dp的状态转移方程:dp[i][j]=求和(dp[k][j-1])///k是i的因数然后就是具体的处理了,看代码注释啦。代码:#include <bits/stdc++.h&原创 2021-12-09 21:13:50 · 154 阅读 · 0 评论 -
【CF Div. 1 + Div. 2】A. Divide and Multiply、B. William the Vigilant
A. Divide and Multiply传送门题意:给一个数组,对于一个偶数可以任意的另一个数可以进行操作:偶数/2,另一个数x2。题解:有个我认为最清晰的想法:暂且只做/2的操作,并统计次数。然后找到剩下的数组中的最大值,进行x2操作就好!代码:#include <bits/stdc++.h>using namespace std;const int maxn=1000;#define ll long long#define sc scanf#define pr p原创 2021-12-06 21:29:38 · 713 阅读 · 0 评论 -
【CF div2】B. Absent Remainder、C. Complex Market Analysis【二分答案】
B. Absent Remainder传送门题意:n个不同的数,可以两两配对。求出n/2对满足x%y的值不在数组内的。题解:我是弱智,纯思维。找出最小的那个值,任何一个数对这个数求模绝对不会大于这个数的值,所以绝对不会出现在数组中。代码:#include <bits/stdc++.h>using namespace std;const int maxn=2e5+7;#define ll long long#define sc scanf#define pr print原创 2021-12-02 21:03:32 · 912 阅读 · 0 评论 -
【CF#757 (Div. 2)】C. Divan and bitwise operations
对按位运算特别的不会(),所有来写写题解Divan and bitwise operations传送门题意:首先知道序列的舒适值:所有的子序列的异或值相加。输入给出:1)序列长为n,其中的值是1-n,位置不定。2)给出m组的l-r的或。要求输出该序列的舒适值。题解:首先异或:同为1,不同为0现在来看原序列:对于第i位——我们假设此位有k个1,那0的个数为n-k那么,我们每次只要选择奇数个1,而0随意,就能保证此处为1。那么这个位置对于舒适度的贡献就是:(所有奇数次的1出现的情况)原创 2021-11-27 21:46:03 · 742 阅读 · 0 评论 -
【CF Round13】A、B - Minimal Cost、【C仅思路】
传送门A - K-th Largest Value题意:一个数组,里面只有0,或1。q组操作:1or2,1取1-ai,2查询第k个最大值题解:写一个sum记录1的数目即可#include<bits/stdc++.h>using namespace std;#define ll long longconst int maxn=2e5+3;ll a[maxn];bool cmp(int a,int b){ return a>b;}int main(){原创 2021-10-23 00:52:44 · 72 阅读 · 0 评论 -
【CF Round114】A、B. Combinatorics Homework、C.Slay the Dragon
传送门A. Regular Bracket Sequences题意:构造并输出n个长度为2n的正则括号序列。即构造并输出n个长度为2n的合法括号序列。题解:直接生成即可,具体见代码#include<bits/stdc++.h>using namespace std;#define ll long longint main(){ int t;cin>>t; while(t--){ int n;cin>>n;原创 2021-10-22 17:13:03 · 144 阅读 · 0 评论 -
【Codeforces#743 (Div. 2)】A、B. Swaps
传送门A.Countdown题意:把目标数字归零。两种方法:<1>减1<2>交换两个数位置题解:把非零数字与最后一个交换位置然后减1即可#include <bits/stdc++.h>using namespace std;const int maxn=1e3+7;int c[maxn];int main(){ int t;cin>>t; while(t--){ int n;cin>>原创 2021-10-21 19:11:27 · 83 阅读 · 0 评论 -
【CF Round 113 (Div. 2)】 A、B.Chess Tournament
传送门A.Balanced Substring题解:找到一个ab/ba相连即符合题意,没有就一定无符合题意的。代码:#include <bits/stdc++.h>using namespace std;int main(){ int t;cin>>t; while(t--){ int flag=1; int n;cin>>n; string s;cin>>s;原创 2021-09-30 13:42:03 · 94 阅读 · 0 评论 -
【Codeforces#742 (Div. 2)】A、B、C
地址:传送A Domino Disaster题意:两行,n列,一个长度2宽度为1的积木放上去。LRUD是积木放的位置的区域。给出第一行,求第二行。(说不太清楚,结合示例一看就明白了)题解:1)L、R的情况 一样输出2)U、D的情况反着输出#include<bits/stdc++.h>using namespace std;const int maxn=1000+3;typedef long long ll;int a[maxn];map<string,string&原创 2021-09-08 02:27:27 · 80 阅读 · 0 评论 -
【Codeforces #741 (Div. 2)】A\B
A#include<bits/stdc++.h>using namespace std;#define mk make_pairtypedef long long ll;int main(){ int t;cin>>t; while(t--){ int l,r;cin>>l>>r; int now=r/2+1; now=max(now,l); cout<<r%now<<end原创 2021-09-08 02:05:16 · 76 阅读 · 0 评论 -
Codeforces#740 Div. 2 A\B\C
地址:传送A. Simply Strange Sort题意:排列数组使它从小到大排列,但是有要求:1)每次只能交换i与i+1项的位置。2)奇数次只能操作奇数项,偶数次只能操作偶数项:且i有范围。题解:模拟操作即可代码:#include <bits/stdc++.h>using namespace std;const int mod=10e9+7;#define ll long longconst int maxn=1e3+3;int mmax=INT_MIN;int原创 2021-08-29 23:43:30 · 113 阅读 · 1 评论 -
【CF #738 (Div. 2)】A. Mocha and Math+C. Mocha and Hiking
题目:A. Mocha and Math分析:关于位运算的题目。前几次只要遇到位运算,我就卡,就是转不过弯,然后也没有补题。报应来了,当位运算题目出到A这个位置,我依旧不会做。首先,题目有句: This operation can be performed any number of times.翻译一下:该操作可以执行任意次数。大概就知道其实是可以随意按位&操作这些数了。那么怎样能让最大数变得最小,全部给他按位&一边就得了。(笑死,我对按位运算的不敏感程度根本想不到,我是弱智原创 2021-08-17 15:37:00 · 267 阅读 · 0 评论 -
CodeForces 1461C Random Events
题目:haha碎碎念:真的很烦,每次理解题目都花很长时间,独立自主看题,以后少问队友。推示例推好久。非常难过。题意:这题是个思维题。题目一大堆,其实就是有1~n随机排序的n个数,给出这个序列。再给出将前r个排序成功的概率,求最后所有数目排列成功的概率。分析:首先,假设一共有5个数,后3个已经是排好序的,那当r<3的时候不论怎样,其实成功的概率都是0.所以从后往前算,找出第一个不符合排序的位置,算在此之后的概率才是。正着算很麻烦,很容易想到反着算,算出全部失败的情况。1-它即位正确答案原创 2021-08-15 17:16:22 · 113 阅读 · 0 评论 -
CodeForces 1461A String Generation【dp】
题目:门题意:算满足题意的集合数1)“*”本身就是1个2)以这个为起点延申,所有包含内的都得含 “ * ”be like:(草,我做题的时候好像没这张图)分析:首先想到的是暴力,大概知道会T,因为没得思路,还是大胆尝试。TLE。这是hi函数,算的是每个“ * ”为起点的允许的树,不删了,与正解无关。好,下一个。dp。从上往下推必不可能的,因为是下面影响上面。那就从下向上,想到这里就差不多了,找出递推公式:dp[i][j]+=min(dp[i+1][j-1],dp[i+1][j],dp原创 2021-08-15 17:15:08 · 70 阅读 · 0 评论 -
CF #737 (Div. 2) B. Moamen and k-subarrays
题目:点这里碎碎念:气死我了气死我了,这题预判过了结果重判wa了,本来没准备写题解的。最后一小时看C没做出来的我像个小丑要求:看看能不能将长度为n的数组分成k块排序后符合从小到大。分析:分成k个序列,说明要切k-1下。把它的初始位置记录下来,按数值大小从小到大排序,从头遍历,如果两个数不挨着,就说明是这里是切来的,记录这个值。最后必须要切的次数小于k就好了。代码:#include<bits/stdc++.h>using namespace std;#define ll l原创 2021-08-10 21:55:56 · 104 阅读 · 0 评论 -
【CodeForces 1490C】Sum of Cubes【二分查找】
题目:点这里要求:让判断一个数是否能被两个三次幂的数相加。分析:题目给出的数据范围是1e12,结合示例提示,不妨就取10000打表~然后是判断,暴力做是两个1e4数组,铁定会爆啦那就用二分算法优化,但是我的二分很不熟,所以滚来写篇题解。代码:#include <bits/stdc++.h>using namespace std;const int maxn=5000+3;#define ll long long//int n,m,k,t;//ll mm[10001]原创 2021-08-08 21:03:10 · 184 阅读 · 0 评论 -
CodeForces 1204C Anna, Svyatoslav and Maps【floyd】
题目:CodeForces 1204C Anna, Svyatoslav and Maps题目:n个点图,给出点之间的关系。简化一个序列,使其起点到终点的访问顺序不变。分析:如果两点之间的所有点是最短路径所经过的点,这些点都可以省略,反之则不可省略。使所有边的边权都为1,用floyd求出任意两点的距离。可以得出,若从点a到b的最短路经过n个点(包括b),则n=D[a] [b]。若满足该条件,则只取a,b两点即可。具体见代码。#include <iostream>#include<原创 2021-07-30 02:09:32 · 80 阅读 · 0 评论 -
CodeForces 707B Bakery【最小生成树】
题目:添加链接描述题意:求出从所有仓库出发找最近的面包房,如果没有返回-1分析:若存在仓库旁边有面包房,那第一个肯定是最小值。把所有的仓库存下来,然后找和他相连的面包房,如果数值比前面找到的更小,那就更新答案。ans若是一次都没被更新过,就返回-1.#include <iostream>#include<bits/stdc++.h>using namespace std;const int maxn=1e5+2;int vis[maxn];struct one{i原创 2021-07-30 00:31:36 · 93 阅读 · 0 评论