一、训练赛情况
-
C - CodeForces 1238A - Prime Subtraction(AC)
题意:
要求判断x-kp是否等于y,其中p为素数,k为正整数。
思路实现:
这个题最开始是想的暴力解决,但是一个一个的减着模拟着算就超时了。然后就从数论里边考虑,想到了一条定理:每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积。知道了这个结论这个题就很容易解决了,除非x-y=1,否则肯定能找到这样的数。 -
F - CodeForces 1238B - Kill 'Em All(AC)
题意:
输入n和r,接下来输入n个数,表示n个人的位置。
可以发射炮弹到某一个位置,这个位置如果有人,全部被杀死。
对于位置小于炮弹位置的人,他的位置往左移r,若移动后他的位置小于或等于0,他也视为被杀死;
对于位置大于炮弹位置的人,他的位置往右移r,
问最少需要多少枚炮弹才能将全部的人杀死?
思路实现:
思路很容易实现,很容易发现,炮弹每次都应该发射到右边的位置。这样的话,位置需要从小到大排序,先打击最大位置的,使左边的人的位置不断接近0。总的来说就是位置从大到小一个个攻击,攻击一次位置左移r,所以可以对r累加,每次发射前先判断。但是这样会出现重复,需要特殊处理一下。 -
D - CodeForces 1238C - Standard Free2play(补)
题意:
这个题的题意真的挺难懂的,有一座山有h层,每一层都有平台。有些平台凸出来,有些平台是凹进去。主角一开始站在h层平台,他的目标是落到第0层。主角能够下山的方式只有一种:让高为x的平台和高为x-1平台的凸凹状态互换从而往下跳。主角每次下落层数必须小于等于2,否则摔死。主角还可以买魔法石,魔法石可以让任意一个石头的状态取反。
主角最少需要购买多少个魔法石才能够掉到第0层?
思路实现:
这个题在比赛中遇到过,我对它的印象很深,但是这次还是没能做出来…
这个题可以用模拟来解决,如果初始相邻两个突出的平台高度不连续,那么我们显然可以直接从上面一步步操作到达下面的平台的上面一个位置,此时考虑如果我们直接操作,那么下面那个平台就会缩起来,如果当前和更下面的平台 y 高度超过 2 了,并且用在 x位置和用在 x 下面一个位置都是一样的,那么直接用在 x位置就好了如果和 y 高度不超过 2 ,那么我们显然直接操作然后落到 y即可。 -
B CodeForces 1238D - AB-string(补)
题意:
有一字符串,定义好的字符串为:它的每一个字符都可以找到那个字符所在的子串的回文串。现在问这个字符串有多少个好的字符串。
思路实现:
对于一个字符串我们将相同的连续的分为一段,如果分成了三段,则可以构成 ABA 或者 BAB类的回文串,则三段以上都是成立的,如果分成了两段,如果有一段连续的个数为 1,则是构不成回文串的,如果只有一个段,很明显个数为 1不符合其他均符合.
可以发现不符合条件的串的特点很明显,所以我们考虑计算不符合条件的串,然后从总字符串中减去就可以了. -
E - CodeForces 1238E - Keyboard Purchase(补)
题意:
有一串密码你需要经常输入,长度为n(1e5)由前m(20)个小写字母组成。你需要买一个键盘即m个字母的排列,当你在输入该密码的时候,你手指(单指打字)移动的总距离最小。移动的距离就是密码每相邻2个字母在键盘上的距离总和。问你最小距离。
思路实现: -
A - CodeForces 1238F - The Maximum Subtree(补)
题意:
给点分配区间,如果两个点的区间相交,则两个点之间有边相连,否则没有。给你一棵树,求一棵最大的子树使得可以通过给点分配区间来得到这颗树
思路实现:
二、总结
今天把昨天下午的题都重新看了一遍,讲道理,真的自闭,竟然爆零了。A题根本无从下手…,然后就去琢磨B题了,刚开始没理解好题意让n=0了…,后边的基本思路是没问题的,就有一点没处理好,痛失AC。
今天早上的训练赛还可以…,应该是在cf上打过,但是只对D题有印象了,还没能AC出来,前两道题目倒是都出了。后续补提最后两个题都用了特殊dp…实在是整不明白,找时间进行系统的学习。