![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
codeforcess刷题记录
文章平均质量分 52
codeforcess刷题记录
Think-killer
算法,冲!!!!
展开
-
Codeforces Round #654 (Div. 2)A-E2题解
A. Magical Sticks 题意:给你n个数字,其中的数字可以随机组合,问可以组合形成最多同时几个数相等 题解:找规律即可,如果n为偶数,则有n/2个,反正(n+1)/2个 #include<iostream> #include<cstring> #include<algorithm> using namespace std; int main() { int t; cin>>t; while(t--){ int n; cin>&原创 2020-07-02 00:44:33 · 1580 阅读 · 1 评论 -
C. Element Extermination(数组模拟栈,贪心)
C. Element Extermination 传送门 题意:给定一个数组,如果a(i)<a(i+1),你可以删除其中一个,问是否可以经过任意次操作后使得数组中只有一个元素。 题解:用数组模拟栈 1.如果栈数组中没有元素,就插入进去 2.如果栈数组中有元素,但a(i)小于数组栈顶元素,就插入其中 3.如果栈数组中有元素且a(i)大于数组栈顶元素,就先插入,再删除栈中可删除的最多元素。 代码解释: using namespace std; int skt[300010],tt; int main()原创 2020-07-06 12:26:45 · 399 阅读 · 0 评论 -
Codeforces Round #652 (Div. 2)ABCD题解
A. FashionabLee 传送门 题意:判断n多边形是否同时有平行于x轴和y轴的边; 题解:不难发现4*k=n的多边形都满足,其余均不满足; #include<iostream> #include<algorithm> #include<cstring> using namespace std; int main() { int t,n; cin>>t; while(t--){ cin>>n; if(n%4==0) cout&l原创 2020-06-24 01:17:48 · 226 阅读 · 0 评论 -
Codeforces Round #649 (Div. 2)ABC题解
A. XXXXX 题目链接:A. XXXXX 题意:找出数组a[ ]的最大子数组,且这个子数组只能从开头删除几个(可能是零或全部)元素或者从结尾删除几个(可能是零或全部)元素。,使得子数组不可被x整除。 题解**:我们可以知道如果一个数可以被x整除,那么减去一个不可被x整除的数字后这个数字就不能被x整除了。** 这里有三种情况:1.a[ ]数组总和不能被x整除,答案为n; 2.a[ ]数组总和不可被x整除且数组中存在不可被x整除的数,答案为n减去包括这个数的最小个元素,即n-min(i,n-1+1)(i为这原创 2020-06-14 08:50:21 · 371 阅读 · 0 评论 -
C. Jury Meeting
题目链接 题意 给定一个长度为n的数组,可以进行任意排序(n!种排序),从左到右每个数减1,如果减为0则跳过,循环直至所有都为0 求不存在某个数出现连续减2次的排列组合个数 可以发现只需关注最大值a和次大值b的关系,因为小于他们的数都会在某次循环中减为0,且每次循环至少在最大值a处间隔开,因此其它数不可能连续减两次 1:取出数组中的最大值a和次大值b 情况一:如果a=b时 a b循环的次数同样多,同时减为0,答案为n!。 情况二:如果a=b+1时 当a=2,b=1时,只有顺序{2,1}才可以,因此只原创 2021-09-09 17:12:53 · 177 阅读 · 0 评论 -
D. Say No to Palindromes
D. Say No to Palindromes 题意: 给定只包含a,b,c的字符串长度为n 提供m次询问,每个询问一个区间l,r 问需要修改最少的字母(修改为a,b,c)使得修改后的字符串不存在长度至少为2的回文串 求最小的修改数 ———————————————————————————————— 因此si≠si+1 (因为它是长度的回文2)和si≠si+2(因为它是长度的回文3),又因为只包含a,b,c,所以si=si+3。 于是发现字符串是abc,acb,bac,bca,cab,cba循环中的一种 那原创 2021-08-01 22:33:56 · 167 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2)E1、E2(思维题)
E1. Erase and Extend (Easy Version) E2. Erase and Extend (Hard Version) 大致题意:给定一个长度为n的字符串s,可以对其进行两种操作:(删除最后一个字符、复制字符串s=s+s),问可以得到长度为k的字典序最小的目标串 。 样例: 解析:寻找最小字典序前缀即可,对其进行循环输出长度k即可 找最小字典序前缀: 1、i==1开始,如果s[i]<s[0],则更新最小字典序长度L=i+1 2、如果s[i]>s[0],就删去后面的所有,原创 2021-06-19 10:27:31 · 200 阅读 · 0 评论 -
L. Spicy Restaurant
L. Spicy Restaurant 题意:无向图的每个顶点有一个属性wi,Q个询问,第i个询问给定顶点p和价值a,问距离p最近的wi<a的i距离p有多远 题解: w的范围很小,直接做100次BFS,j计算d[i][j]表示离i最近的属性值恰号为j的点的距离即可。时间复杂度O(100(n+m)+Q)。 代码: #include<iostream> #include<queue> #include<algorithm> #include<cstring&原创 2021-06-01 12:51:00 · 790 阅读 · 0 评论 -
Codeforces Round #688 (Div. 2)B. Suffix Operations
B. Suffix Operations 传送门 后缀+1,后缀-1 操作前可以改变一个值 求最少操作数使得数组值相等 在不考虑改变一个值的情况下就等于差分数组的绝对值求和 差分数组b[i] 考虑可以改变一个值,(使得当前值与后者或前者相等): 情况1 、改变a[1],使得a[1]==a[2],可减少操作数d=abs(a[2]-a[1]); 情况2、改变a[n],使得a[n]==a[n-1], 可减少操作数d=abs(a[n]-a[n-1]); 情况3、改变a[i],可减少操作数d=b[i]+b[i-1]-原创 2020-12-05 17:56:36 · 120 阅读 · 2 评论 -
Codeforces Round #659 (B. Koa and the Beach (Easy Version(DP)&Hard Version)
B1. Koa and the Beach (Easy Version) 题目链接 题意: 有n个海域,给出每个海域的初始深度,2*k秒为一个循环,前k秒每秒深度+1,后k秒每秒深度-1,你要游到另一边去,每秒可以游到下一个海域或者停留在当前海域,如果当前海域深度大于l,你就会淹死。问你是否能游到另一边。 方法: DP f[i][j]代表j秒时是否能到达i海域的状态; f[i][j]可以从f[i][j-1]或者f[i-1][j-1]两个状态过来; #include<iostream> #i原创 2020-07-28 20:53:20 · 241 阅读 · 0 评论 -
#659 (Div. 2)C. String Transformation 1(思维)
题目链接 题解: 1**.如果出现a[i]>b[i]则无解;** 2.我们首先从小的开始选择字母,对于选定的字母,选择的字母都有其要变成的值,我们让他们都变成要变成字母里的最小的一个,这样既不会影响其他字母的转换,也能够使得答案数最少,比如:aaa–>cdg,那么选择的字母是 ′a′ ,把它变成 ′c′ ,然后把其都变成 ′c′ 。 #include<iostream> #include<cstring> #include<algorithm> #inc原创 2020-07-27 21:20:41 · 179 阅读 · 0 评论