2016个人训练赛9
文章平均质量分 59
金金金金鑫
这个作者很懒,什么都没留下…
展开
-
Codeforces 116A Tram
题意:给你n个公车站,每站下a[i]个人上b[i]个人,问公车最多需要能承载多少人。思路:因为题目保证了合法性,我们只需要模拟下维护最大值就可以。#include#includeusing namespace std;int main(){ int n,ans=0,a,b,now=0; scanf("%d",&n); while(n--){ scanf("%d%d原创 2016-07-28 20:32:40 · 295 阅读 · 0 评论 -
Codeforces 103C Russian Roulette
题意:给你n思路:题目要求让第一个先开枪的人的胜率最大,那么对于k个子弹,我们最好的方法是让他们交替出现,对于多出来的子弹,由于题目要求字典序尽量小,也就是X尽量放后面,那么我们把多于弹夹一半的子弹从后往前一个一个地填在空位子,由于这题的n#includetypedef __int64 LL;LL n,k,x;int p;int main(){ scanf("%I64原创 2016-07-29 09:28:45 · 532 阅读 · 0 评论 -
Codeforces 103B Cthulhu
题意:给你n个点m条边的无向图(无重边和自环),问你是否存在一个简单的环且环上的点都是某棵树的树根。思路:注意这句话:an undirected graph that can be represented as a set of three or more rooted trees, whose roots are connected by a simple cycle.也就是说首先我原创 2016-07-28 21:16:57 · 463 阅读 · 0 评论 -
Codeforces 103A Testing Pants for Sadness
题意:给你n道题,每题有a[i]个选项,选错一个要退回到第一题重新开始,问你最少需要试几次才能在最坏的情况下做对全部的题目。思路:最坏情况下也就是说对于每个a[i]你都要试a[i]次,而且其中a[i]-1次错误的你都需要返回第一题重新开始,也就是每次错误都加上前面已经做过的题数(因为你已经做过也就已经知道了那题的正确答案也就是只需要1次就够了)。#includetypedef _原创 2016-07-28 21:11:49 · 363 阅读 · 0 评论 -
Codeforces 104A Blackjack
题意:有2, 3, 4, 5, 6, 7, 8, 9, 10, jacks,queens,kings,aces这13种牌各4张不同的花色,现给出2~10能获得的点数为2~10和 jacks,queens,kings能获得的点数都为10,aces能获得的点数为1或者11。现在你有第一张牌为黑桃10,给出n思路:就25,在纸上写写就好了。#includeint main(){ i原创 2016-07-28 21:07:16 · 412 阅读 · 0 评论 -
Codeforces 115C Plumber
题意:定义4种管道,给你n*m的图,问你在图上放管道不泄露的方法数有多少种。思路:我们来考虑这样一个问题,如果我们在某行某列上放了一个已知的管道,那么该行方向上的管道和该列方向上的管道都已经确定了。如下图,两杆表示这里有水管。所以我们可以定义一个r行数组来记录该行行首的水管放置情况-1表示水管在左边、0表示该行还未放置管道,+1表示水管在右边,同理定义一个c列数组。然后就是得一行一原创 2016-07-28 20:49:30 · 382 阅读 · 0 评论 -
Codeforces 115B Lawnmower
题意:给你张n*m的图,图上W表示草,G表示平地,一开始你从左上角朝右开始推草,每往下走一步朝向相反,问你最少需要走几步才能推完所有的草。思路:因为奇数行和偶数行的朝向是固定的,所以即使该行已经没有草了,但是由于下一行需要你还是得往前走,所以每行需要走的那一列就得由当前行和下一行的草来决定。还有如果当前行推完后已经没有草了,就没必要去下一行了,所有开个sum来记录还剩多少草。#in原创 2016-07-28 20:44:55 · 266 阅读 · 0 评论 -
Codeforces 115A Party
题意:给你每个人的上级,并且一个人和他的所有上级都不能在一个party中(这点是根据题目给出的两点推导出来的),问最少需要几个party。思路:并查集,找一个集合中层级数最多的就是最少需要的party数量。#include#includeusing namespace std;const int MAX=2005;int p[MAX];int Find(int i){原创 2016-07-28 20:39:37 · 518 阅读 · 0 评论 -
Codeforces 116B Little Pigs and Wolves
题意:给你张n*m的图,图上P表示猪,W表示狼,每只猪只和一只狼相邻,但是狼可以和很多只猪相邻,狼只能吃一只相邻的猪,问图上猪最多能被吃掉多少只。思路:因为这里每只猪只和一只狼相邻,但是狼可以和很多只猪相邻,所以我们去枚举猪,让它被相邻的狼吃,这样就能不冲突保证猪能最多数量地被吃。#includeint dir[][2]={1,0,-1,0,0,1,0,-1};int ma原创 2016-07-28 20:37:05 · 359 阅读 · 0 评论 -
Codeforces 103D Time to Raid Cowavans
题意:给你n思路:由于这里的n、p都很大,我们直接暴力的话会TLE,那么我们先将b从小到大排序,分块处理(为什么要分呢?其实我也不知道)。分成mid=sqrt(n+1),若b>=mid,直接暴力,若b#include#include#include#includeusing namespace std;typedef __int64 LL;const int MAX=原创 2016-07-29 09:30:52 · 520 阅读 · 0 评论