
思维
风萧萧兮易水寒丶
985软件工程本科在读
展开
-
Codeforces Rotation Matching(思维)
解题思路: 由于第二个数组所有数字是同时向一个方向移动的,求移动后最大匹配项的数目,即可以转化为求原始数组中处在同一偏移量的数字个数的最大值,偏移量就等于b数组中某个数组与a数组中相同数字之间的绝对距离 代码: #include <bits/stdc++.h> using namespace std; const int maxn=2e5+10; int a[maxn],b[maxn],c[maxn],ans; int main() { int n; scanf("%d",&a.原创 2020-06-08 20:14:15 · 309 阅读 · 0 评论 -
Codeforces Phoenix and Distribution(字符串、排序、思维)
题目大意: 给你一个长为n的字符串,从中选择字符组成k个不为空的字符串,使得max(s1,s2,…,sk)最小,输出max(s1,s2,…,sk) 解题思路: 这是一道思维题,首先将原字符串进行排序,将前k个字符作为字符串的第一个字符 如果这k个字符完全相同,判断字符k+1到字符n是否相同,如果相同则均分给k个字符,取其中最大的输出,如果不同,则要是最大字典序最小,直接将剩下的字符串接到字符k...原创 2020-05-07 15:03:19 · 265 阅读 · 0 评论 -
Game stratege(思维)
解题思路: 其实这道题目开始就想出了应该是三重循环,也就是每个人选一个数,使得这三个数尽量符合三个人的要求 即每个人在自己可选择的范围内,选择最符合自己要求的数,三个人的选择是互不影响的 代码: #include <bits/stdc++.h> #define ll long long #define Max 0x3f3f3f3f3f3f3f3f using namespace st...原创 2020-04-26 22:19:16 · 163 阅读 · 0 评论 -
Codeforces Colorful Bricks(组合数)
题目大意: 给你n个块,m种颜色,让你涂颜色,要求最后相邻砖块颜色不同的情况总数为k,问你有多少种图法 解题思路: n个砖块间总共有n-1个间隔,从n-1个间隔中选出k个间隔,这k个间隔相邻的两端砖块颜色不同,其他间隔两端砖块颜色相同,可以看成是给k+1个砖块涂颜色,相邻砖块颜色互不相同 #include <bits/stdc++.h> using namespace std; #d...原创 2020-04-25 19:12:00 · 208 阅读 · 0 评论 -
Codeforces Vova and Trophies(前缀、后缀、字符串)
解题思路: 记录a[i]为从i开始往前最大的连续G的数量,记录b[i]为从i开始往后最大的连续G的数量,枚举每个交换位置i,arr[i]为S,取最大的a[i-1]+b[i+1]+1即为交换后最大可能连续G的长度,注意长度不能超过总的G的数量,如果超过要将答案减1 #include <bits/stdc++.h> using namespace std; #define ll long...原创 2020-04-25 16:17:56 · 196 阅读 · 0 评论 -
Codeforces Circle of Monsters(思维)
题意:有一个n个怪物,环形排列,每个怪物有a[i]滴血,每次射击可以-1滴血,死后爆炸产生b[i]伤害,能伤害到下一个怪物,若炸死了下一个,也是同样爆炸,问最小射击次数使得全部怪物GG 解题思路: 从反面思考,最终的结果是全部怪兽死亡,那么造成的总伤害(爆炸+射击)必然等于全部怪兽的血量和,那么怎么使得射击的伤害尽可能小呢?毫无疑问是使得爆炸的伤害尽可能的大,那么怎么使得爆炸的伤害尽可能大呢?方...原创 2020-04-25 13:58:52 · 392 阅读 · 0 评论 -
Codeforces Equalizing by Division (hard version)
题目大意: 给你一个数组,给定k,定义一个操作为arr[i]/2,问你至少操作多少次,使数组中存在k个相等的数 解题思路: 首先我们要排一下序,从小到大排,然后对每个,枚举每个元素,枚举的同时除二,同时用一个数组cnt记录在除二的过程的出现的数字,并记录一下,在用一个数组num记录arr[i]变成当前状态需要几步。 #include <bits/stdc++.h> using nam...原创 2020-04-24 21:45:03 · 175 阅读 · 0 评论