codeforces
文章平均质量分 61
zoro_n
我想走得更远
展开
-
CodeForces - 742C Arpa's loud Owf and Mehrdad's evil plan
点击打开链接这一题的题意好难,题意是,保证所有的点都要在一个环内,否则输出-1如果所有点都在环内,找出最小的t。所以求出每个环的长度,如果是偶数,直接除以二。如果是奇数,则不变。然后全部的积,再除以他们的最大公倍数,即为所求。#include #define LL long longusing namespace std;const i原创 2016-12-15 23:51:56 · 353 阅读 · 0 评论 -
CodeForces - 198B Jumping on Walls
点击打开链接题意: 跳跃忍者,两个串就能看成两个墙。然后往上蹦。题解: 广搜,深搜都可以。 重点是走过的不能走。不要以为水堵着就不能走了。因此,bfs 超内存。#include#include#include#include#include#includeusing namespace std;const int maxn=1e5+100;原创 2017-03-29 15:10:57 · 739 阅读 · 2 评论 -
CodeForces - 208B Solitaire 【记忆化搜索】
点击打开链接题意: 给你那张牌,牌的花色和数字只要任意一样一样就能合并。每次只能从最右边开始操作,要么覆盖n-1位置,要么覆盖 n-3位置。问你最后能否全部合并成一堆。题解: 首先想到的是bfs 但是不行,超限了。那只能dp ,最后一个状态只能是前1个或是前3个合并而来,dp【n】=dp【n+1】||dp【n+3】;标记用map直接映射。如果走了这一原创 2017-04-13 23:49:40 · 318 阅读 · 0 评论 -
CodeForces - 166A Rank List
点击打开链接题意: 输出RANK 榜上与第k的位置,队伍 并列的队伍有多少个。水题: 排个序就行了。#include#includeusing namespace std;struct node{ int n,so,t;}a[55];int cmp(node x,node y){ if(x.so==y.so) return x.t<原创 2017-04-06 10:53:13 · 426 阅读 · 0 评论 -
cf 801c Voltage Keepsake
题意:给你n个装置,每个装置每分钟耗电p ,本身储存电c。然后你有一个充电器,(随时充,转移不耗时,想怎么换着充都行)。问你让所有装置都能保持工作的最大时间是多少。题解: 二分枚举最长时间:我写的时候因为粗心,被hink了,睡的早,每发现, 其中遇见了两个问题,第一,R的上限,我开到了1e9, 当时没仔细想,最后换成1e18;第二个问题,储存所有装置原创 2017-04-17 08:59:55 · 776 阅读 · 0 评论 -
cf 828A - Restaurant Tables
点击打开链接题意:一个饭店有a张单人桌,b张双人座。 然后有n组人来,每组1or2人。双人只能坐双人座。题解: 卧槽,这题又被hack 了 ,每次第一题被hack我也很无奈啊,每次被hack也是我思维漏洞的体现。。。 考虑一个点,单人优先坐单人桌,否则优先坐空的双人桌,最后考虑有人的双人桌,被hack之后原创 2017-07-12 08:47:56 · 363 阅读 · 0 评论 -
cf 822D - My pretty girl Noora 【数论+递推】
点击打开链接题意:这个题意是真的很难,问你n个小姐姐选美,应该怎么排比较的次数最少。 每次比较只能两两比较, 然后让你求出中每个f(i)是多少。 题解: 如果i是素数。那么f(i)=i*(i-1)/2; 否则分的组数越多越有利,又因原创 2017-07-12 00:51:02 · 271 阅读 · 0 评论 -
cf #422 c Hacker, pack your bags! 【贪心】
点击打开链接题意:一个人要去旅游,然后去旅行社看行程。有n种走法,每种三个值, l,r,cost.他原本有k金币。 分别代表出发日期,和归来日期,以及花费。 他想知道他能出行两次的最少花费是多少。不满足输出-1.题解: 因为只要求出行两次,那么枚举中间值就行了,原创 2017-07-11 21:36:06 · 671 阅读 · 0 评论 -
cf 828C - String Reconstruction【模拟】
点击打开链接题意: xx之前有一个字符串,但是他弄丢了,他只记得字符串的某些子串分别在哪些位置。 你要帮他把字符串还原长度最少并且字典序最小题解: 诶呀!!!!本来过了的,第二天起来发现超时了,,,,,,,, 我写个for嵌套竟然两个for都是i 卧槽,这都能过到 tset原创 2017-07-12 10:04:13 · 329 阅读 · 0 评论 -
cf 828D - High Load
点击打开链接题意: 给你n个点,让你构图,只能有n-1条边(这一点很重要) 然后只有一条路的点只能有k个,让你构图。并求出最远两点间的距离。题解: 那就围圈建点呗,把一个点放中间,外面每一圈是只有一条路的点的个数,顺便记录该点到中心点的距离。#include#define ll long原创 2017-07-12 15:29:48 · 926 阅读 · 0 评论 -
cf 825E Minimal Labels 【拓扑】
点击打开链接题意:给你n个点,m条边。 n个点序列本身是1-n的升序 1.2.3..... 让你满足一下两个条件后输出新的序列, 1、新的序列还是1-n的数字组成。 2、如果存在一条边u->v, 那么u的标签小于v的标签。题解: 拓扑排序原创 2017-07-20 10:55:30 · 377 阅读 · 0 评论 -
cf 832B Petya and Exam
点击打开链接题意: 题意卡我一小时,很不友好,,,, 给你两个串,第一个串里面的字母都是good 字母, 第二个串是模式串,里面除了字母还有?和*(只有一个) ?可以替换所有good字母, *可以替换所有坏字母和空格(可以是多个坏字母!!!这点卡了我很久,也不举一个样例。。。) 然后q次原创 2017-07-26 17:52:13 · 372 阅读 · 0 评论 -
cf 832D Misha, Grisha and Underground 【lca+倍增】
点击打开链接题意: 给你一个树,再给你三个点,然后问你任意两个点到另外一个点中间经过的相同的节点最大个数。题解: 照题解上面,求出任意两个点的公共祖先,保留深度最大的那一个。该点即为三个点的交汇点。 然后求出交汇点到三点的最大距离即为答案。下面附上官方题解:原创 2017-07-27 11:50:57 · 609 阅读 · 0 评论 -
cf 729D Sea Battle 【模拟,贪心】
点击打开链接题意: 在一个线性长度为n的地图里面,有a条船,每条船长度为b ,已经被探查的区域有c个。 现在问你最少需要探查几次才一定可以探查到船,题解: 很明显,船有一定的长度,在该长度的任何一个地方探查都可以探查到船,所以我们最优的方案当然是每隔船长度-1探查一次,每次check一下,原创 2017-08-22 00:38:58 · 341 阅读 · 0 评论 -
cf 550c Divisibility by Eight 【规律】
点击打开链接题意: 给你一个100位的数字,问你去掉某些位数能不能使他能被8整除。 并输出这个数。(任意满足题意的一个即可)题解: 有一点,1000的倍数全部都能被8整除,所以我们只要枚举1,2,3位数能否被8整除即可。#include #define ll lon原创 2017-08-22 00:49:17 · 335 阅读 · 0 评论 -
cf 389D Fox and Minimal path 【构造】
点击打开链接题意: 给你一个整数n,让你构造一个地图,该地图包含n个顶点,要求你构造的地图顶点1->顶点2 的最短路条数为n。题解: 已知n可以拆成二进制形式。 那么我们可以很容易先构造一个2^31条最短路的地图,接下来再构造一条长度为31的最短路。 接下来原创 2017-09-05 17:31:52 · 355 阅读 · 0 评论 -
cf 485d Maximum Value 【二分】
题意: 给你n个数,求,max( )(1 ≤ i, j ≤ n and ai ≥ aj)。 题解: n=1e6。 先排个序,再去重。 然后我们查找每个数 ai 的右边某个数取余他本身最大, 很明显,取余操作是周期性的。n所以我们每次取 ai 个。这样复杂度最惨是原创 2017-09-05 17:55:56 · 547 阅读 · 0 评论 -
CodeForces - 520B Two Buttons
题意: 把一个数,通过两种变化变成另一个数。题解: bfs一下,就行了,注意超界。x*2>maxn 退出。#includeusing namespace std;const int maxn=1e4+100;int v[maxn*2];int n,m;struct node{ int x,step;}u,e,st,ed;int judge(int x原创 2017-03-31 09:05:11 · 329 阅读 · 0 评论 -
CodeForces - 165B Burning Midnight Oil
点击打开链接题意: 给你一个n 一个m 然后然你求最大的v v需要满足 v每次递减为 v/m 这个数列的和大于等于n题解:二分枚举v 就行了。#include#include#include#include#includeusing namespace std;const int maxn=2020;int n,k,T,a,原创 2017-03-31 23:21:40 · 263 阅读 · 0 评论 -
CodeForces - 242C King's Path
点击打开链接题意:给你个起点,终点。在无限大的地图上,跑,问你能不能从起点跑到终点。题解: 地图太大。无法用数组。那么怎么办呢, 用stl 。pair型的队列。把步数直接存在标记里面。标记用map,int>. 一个点一个点的标记。剩下的就是简单广搜。 stl真是强大。各种嵌套着用。#include#include#incl原创 2017-04-01 23:43:07 · 383 阅读 · 0 评论 -
hdu 5996 dingyeye loves stone
点击打开链接题意: 给你一个树,两个人做游戏,回合制。每个回合,一个人能选择一个节点,将该节点的存值像该节点的父亲节点转移,该值>=1 .最终全部转移到0节点,如果没有可操作的价值,即无步可走,lose。你先走,问你能否赢。首先这肯定是个nim,暴力来一发吧, TE。。。那再推推,,树的深度!!, 对啊,偶数深度,先手如果拿一个上去,后手可以模仿先手往上放,那就等原创 2016-12-18 14:36:20 · 294 阅读 · 0 评论 -
cf Hongcow Learns the Cyclic Shift
点击打开链接计数,用set strset里面自带去重,输出str.size() 即为所求。#include #define LL long longusing namespace std;int main(){ int T,cnt=0; string a,b; cin>>a; int len=a.size(); a原创 2016-12-18 01:32:41 · 441 阅读 · 0 评论 -
cf 753A Santa Claus and Candies
点击打开链接看样例,过的,直接找呗,水题,、#includeusing namespace std;int main(){ int n; scanf("%d",&n); vector v; for(int i=1;i<=n;i++){ if(i<=n) v.push_back(i); n-=i;原创 2016-12-30 20:46:14 · 666 阅读 · 0 评论 -
cf 540-C. Ice Cave
点击打开链接题意: 一个地图,' . '代表冰路,踩一次以后就会变成‘ X ’,X再踩就会掉到下一层。给你一个现成的地图,问你如果想从某个坐标出发,走到某个坐标到下一层能否到达。题解:直接搜索起点到终点能否联通。然后特判重点周围能走的路有哪几种。直接就能得出能否掉下冰层:如果终点周围只有一个位置。 那么到达该点必定走这条路,所以如果重点是X 则yes 否则原创 2017-02-26 10:49:36 · 392 阅读 · 0 评论 -
cf 782A Andryusha and Socks
点击打开链接水题。空间少开一倍,wa一次,#include #include #include #include #include #include #include #include #include #include typedef long long ll;const int maxn=1e5+10;using namespace st原创 2017-03-06 09:31:33 · 408 阅读 · 0 评论 -
cf 782B The Meeting Place Cannot Be Changed
点击打开链接二分时间 t,把每个 t 的所有位移量求出来, 找出向左的最大值,和向右的最小值。如果有交集,m再小没交集,m再大,逼近结果就是t的最小值#includeusing namespace std;const int maxn = 60010;const double eps = 1e-6;int n;double v[ma原创 2017-03-06 13:50:19 · 374 阅读 · 0 评论 -
cf 782c Andryusha and Colored Balloons
点击打开链接题意: 给你一个地图,让你涂色。连续的三个不能颜色重复,问颜色最小的数量,以及涂成的地图。题解:邻接表建图,然后dfs任意起点跑一边,每次传进去每个点前两个点的两个颜色值,不能相同就行。因为我都开了 (1e5+10)*2 的空间。我觉得是够了,但是一直wa5 最后又放大一辈突然就过了。真是太菜了,。最近总是因为空间出错。原创 2017-03-06 18:27:05 · 503 阅读 · 0 评论 -
cf 633b A Trivial Problem
点击打开链接题意: 求末尾为零的个数为m的 阶乘数分别为多少。题解:末尾有零 肯定 2*5; 2太多了;找5就行了。 然后二分使所有区间,确定左右,依次输出。#include #include #include #include #define LL long longusing namespace std;cons原创 2017-03-11 21:01:43 · 242 阅读 · 0 评论 -
cf 359c Prime Number
点击打开链接题意: 求x^a,,,, 所有数导数之和,分子,分母的最大公约数。题解: sum=a1+a2+a3+......;其实分母就是x^sum;分子为 x^sum-a1+x^sum-a2.......;求出分子的x最小次方就行了。但是形如 2 229 292^29 +2^29 =2^30;所以,当最小次方的个数是x倍数,想上原创 2017-03-11 21:07:56 · 316 阅读 · 0 评论 -
hdu 1030 Delta-wave
点击打开链接找规律, 分成三种排列,这个规律不是太难找,但是表示,让我费了好大劲。。#include #include #include #include #include #define LL long longusing namespace std;const int maxn=100;const int mod=1e9+7;int a[max原创 2017-03-12 10:20:05 · 273 阅读 · 0 评论 -
cf 275B Convex Shape
题意: 任意一个B 到另一个B 不能转向超过1次。题解: 直接暴力水题,但是我却错了10来次。 真是日了狗了。#include#include#include#include#include#include#include#include#define LL long longusing namespace std;const int ma原创 2017-04-07 10:13:49 · 558 阅读 · 0 评论 -
cf 707B - Bakery
点击打开链接水题,跑一边记录最短的就行了,wa一次, 忽略两个都不能建的情况。#include #include #include #include #include #define LL long longusing namespace std;const int maxn=1e5+10;const int mod=1e9+7;int n原创 2017-03-12 18:47:31 · 313 阅读 · 0 评论 -
cf 376C - Divisible by Seven
点击打开链接题意:给你一个数,你弄够任意调换数的位置,最后让你输出能被7整除的组合形式。题解:给你的数最少四位,还必有1,6,8,9;所以一定能构造成功,然后发现 x=a+b; x%7 =(a%7+b%7)%7;而mod7 的结果无非是 0——6.那么枚举出 (0-6)和{1,6,8,9} 能组合成的mod7==0 的数,然后有0 加原创 2017-03-13 09:47:45 · 315 阅读 · 0 评论 -
CodeForces - 544B Sea and Islands
点击打开链接题意: 给你一个地图, 让你建n个岛,能否建成。能的话打印出一个建好的地图。题解:构造,先判断能否建成,能的话直接构造,依次交替的建。#include#include#include#include#include#include#include#include#include#define ll long longusin原创 2017-04-05 10:55:21 · 507 阅读 · 0 评论 -
CodeForces - 237C Primes on Interval
点击打开链接题意: 给你一个连续的序列 a到b。 让你求最大的l ,l 满足,a到b之内,任意连续长度为 l的区间内素数个数都不小于k个。 找不到就直接输出-1;题解: 二分长度, 用筛法把素数全求出来,顺便把前n想素数个数求出来,找的时候直接做差,否则超时,坑爹呀,死活翻译不出来。太难翻译了。要是原创 2017-04-05 12:03:31 · 229 阅读 · 0 评论 -
CodeForces - 192A Funky Numbers
点击打开链接题意: 给你一个数,问你这个数能不能是 两个正整数构成这两个正整数需要满足 k(k+1)+m(m+1)=2n;开始写两个二分,交了一发,wa了。后来分析,根本不用两个二分,一个就够了。k的范围一定在 1-sqrt(2n)之内。大概14000 .枚举就行了。wa了很多次。!!!#include#include#原创 2017-04-02 22:02:15 · 420 阅读 · 0 评论 -
cf 672d Robin Hood 【二分】
点击打开链接题意: 总共n个人,每个人有ci个金币,拥有k次操作,每次操作可以把金币最多的人减少一个金币,金币最少的一个人增加一个金币。 问k次操作后最后所有人中金币最多的人币金币最少的人多多少金币。题解: 已知n5e5.k 1e9 ,模拟肯定gg。 二分答案验证原创 2017-08-30 15:43:19 · 351 阅读 · 0 评论