CodeForces - 730A 贪心+模拟】的更多相关文章

贪心策略: 1.只有一个最大值,选着第二大的一起参加比赛减分. 2.有奇数个最大值,选择三个进行比赛. 3.偶数个最大值,选择两个进行比赛. 为什么不把最大值全部选择? 因为最多只能选五个,有可能选择完五个只剩下一个最大值,那么就会进行贪心策略1,会出错. AC代码: #include<cstdio> #include<set> using namespace std; const int maxn=1e4+1; char ans[maxn][101]; int cnt=0,n;…
大意: 给定$n$元素序列$a$, 求将$a$划分为连续的等差数列, 且划分数尽量小. $a$中的$-1$表示可以替换为任意正整数, 等差数列中必须也都是正整数. 贪心策略就是从前到后尽量添进一个等差数列中, 否则就再新增一个等差数列. 这种模拟题最好还是写个递归, 思路会清晰一些 #include <iostream> #include <algorithm> #include <cstdio> #define PER(i,a,n) for(int i=n;i>…
大意: 给定序列$a$, 某些位置为'?', 求给'?'赋值使得序列$(a_1+a_2+...+a_k,a_2+a_3+...+a_{k+1},...)严格递增, 且$\sum|a_i|$最小. 化简一下可以得到$a_1<a_{k+1}<a_{2k+1}<...,a_2<a_{k+2}<a_{2k+2}<...$, 所以每一部分都是独立的, 所以单独考虑k个部分, 贪心使得$\sum|a_i|$最小即可. #include <iostream> #inclu…
题面 传送门 分析 思路简单,但代码较复杂的贪心 分类讨论: 有0 负数有奇数个:将绝对值最小(实际最大)的负数和0全部乘到一起,最后删掉0 负数有偶数个:将0全部乘到一起,最后删掉0 没有0 负数有奇数个:将绝对值最小(实际最大)的负数删掉 负数有偶数个:不删 最后把剩下的数依次乘在一起即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<vector> #define m…
大意: 一个未知严格递增数组$a$, 给定每个数的数位和, 求$a[n]$最小的数组$a$ #include <iostream> #include <algorithm> #include <cstdio> #include <math.h> #include <set> #include <map> #include <queue> #include <string> #include <string…
大意: n首歌, 第$i$首歌时间$t_i$, 播放完获得贡献$a_i$, 最多播放k分钟, 可以任选一首歌开始按顺序播放, 最多选w首歌半曲播放(花费时间上取整), 求贡献最大值. 挺简单的一个题, 实现的时候还是漏了好多细节. 具体思路就是滑动区间, 维护区间内可以减少的前w大时间, 要注意w大以后的要扔进另一个队列, 滑动的时候若不足w的时候用另一个队列补充. #include <iostream> #include <algorithm> #include <cstd…
题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, 然后接下来的t秒需要的蜡烛都燃烧着,超过t秒,每减少一秒灭一支蜡烛,好!!! 详细解释:http://blog.csdn.net/kalilili/article/details/43412385 */ #include <cstdio> #include <algorithm> #i…
Wilbur and Array Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Status Description Wilbur the pig is tinkering with arrays again. He has the array a1, a2, ..., an initially consisting of n zeros. At one step, he c…
题目传送门 /* 题意:一串字符串,问要最少操作数使得成为合法的后缀表达式 贪心+模拟:数字个数 >= *个数+1 所以若数字少了先补上在前面,然后把不合法的*和最后的数字交换,记录次数 岛娘的代码实在难懂啊~ */ /************************************************ * Author :Running_Time * Created Time :2015-8-16 14:29:49 * File Name :K.cpp **************…
大意: 定义一个好数为位数为偶数, 且各位数字重排后可以为回文, 对于每个询问, 求小于$x$的最大好数. 假设$x$有$n$位, 若$n$为奇数, 答案显然为$n-1$个9. 若为偶数, 我们想让答案尽量大, 那么就要尽量调整$x$的低位数, 从低位到高位遍历, 假设当前处理到第$i$位, 对于判断重排后回文可以用一个长为10的二进制数来判断, 假设$[i+1,n]$状态为$t$, 那么问题就转化为求最大的小于$t$且二进制状态为$s$的数, 贪心填数即可, 若对于每一位都无解答案就为$n-2…