2016个人训练赛1
金金金金鑫
这个作者很懒,什么都没留下…
展开
-
Codeforces 580A Kefa and First Steps
题意:求最长上升子段(连续的)。思路:枚举,维护最长长度。#include#includeusing namespace std;const int MAX=100005;int n,a[MAX];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } int ans=原创 2016-07-16 20:18:59 · 317 阅读 · 0 评论 -
Codeforces 580B Kefa and Company
题意:有n个朋友参加聚会,每个朋友有m[i]的钱和s[i]的友谊因子,要保证来参加的朋友间的钱的差距不能超过d,问如何选择来参加的朋友才能使友谊因子总和最大。思路:按朋友的钱从小到大排,枚举朋友并维护m最小值,就可以判断加入是否会冲突,因为这里按m从小到大排,那么就可以像指针一样去不断移动最小m值的那个指针,就可以了。还有就是过程中维护因子总和最大值即答案。#include#in原创 2016-07-16 20:32:17 · 301 阅读 · 0 评论 -
Codeforces 580C Kefa and Park
题意:给你一张n个点n-1条边的无向图,1号节点为起点,其它度为1的节点为终点,并给出那几个点有猫,问能到达多少个终点,且路上不能连续经过m只猫。思路:先把无向图建成一颗树,然后从1号节点开始往下深搜,看最后能搜到几个叶子节点就是答案了。#include#includeusing namespace std;const int MAX=100005;int n,m,fa[原创 2016-07-16 20:33:49 · 323 阅读 · 0 评论 -
Codeforces 580D Kefa and Dishes
题意:给你n道菜吃,每道菜都能获得a[i]个满意度,此外还有m个规则,在吃y之前吃x能多获得c的满意度,问你如何点菜能获得最多的满意度。思路:看到n只有18,而且还要求最多的满意度。直接状压DP,dp[i][j]表示当前正要吃第i道菜,且状态为s。然后只要三重循环枚举。一重枚举状态s,从0~(1二重枚举i,从1~n。三重枚举j,从1~n。转移:dp[j][s|(1#原创 2016-07-16 20:37:56 · 244 阅读 · 0 评论 -
Codeforces 570A Elections
题意:有n个选举人,m座城市,先给出每座城市的每个选举人的票数,只有票数在该城市最多的能赢得该城市的选举,只有赢得城市选择次数最多的人才能赢得总选择,问最后谁赢得了总选举。思路:统计每个选举人赢了几座城市,然后选最多的那个。#include#includeusing namespace std;const int MAX=105;int n,m;int c[MAX];原创 2016-07-16 20:54:42 · 239 阅读 · 0 评论 -
Codeforces 570B Simple Game
题意: 两个人从1~n中选择数字,Misha选了m这个数,问Andrew要选哪个数才能最大的可能性赢Misha。思路:Misha所能赢得比赛的区域为m的左右两边,那么Andrew想赢得更大的区域就得选m左右两边最大的区域的那块,然后占领它,即a=m+1或a=m-1。#includeint main(){ int n,m,ans; scanf("%d%d",&n,&m);原创 2016-07-16 20:55:56 · 273 阅读 · 0 评论 -
Codeforces 570C Replacement
题意:给你一个字符串,和一些替换某个位置的字符的操作,问你每次替换完某个字符后,消除所以点的步数是多少。思路:找规律。列举出一些点后,发现每次要求的答案=总的小点数-小点的区间个数。然后就是对于替换的字符是.或者字母,替换的位置是中间还是两边,分情况讨论下。#includeconst int MAX=300005;int n,m;char s[MAX];int ma原创 2016-07-16 21:11:58 · 294 阅读 · 0 评论