ccpc/icpc
Demoo.
来记录不会的题啦
展开
-
problem B.Genshin Impact(2022合肥icpc)
对于y2来说,只有在他前面x秒的第一时刻才能点燃,往后的都不点燃才能让y2燃烧(x%y)秒。对于y1,因为他在全被燃烧,他可能是第一个y1的情况(在开始的时候燃烧x秒)当x>y的时候,对于每y段有两种情况:全燃烧和只有x%y的时间燃烧。要算的是他的相反情况,那么就[1-(1-1/p)^(x/y)]*y。那么他的期望就是1/p*(1-1/p)^(x/y)*(x%y)都是对于蓝色的y2来说,他的燃烧时间是白色的那段即x%y。那么次数就是x/y,没被点燃的概率就是(1-1/p)原创 2022-11-21 10:21:41 · 811 阅读 · 0 评论 -
C - Recursive sequence (矩阵ksm)
那么Fn+1={fn-1,fn,(n+1)^4,(n+1)^3,(n+1)^2,(n+1),1}题意:给三个数n a b,规定一个数组,f[i]=2*f[i-2]+f[i-1]+i^4。最后答案就是:2*f3[0][0]+f3[0][1]+f3[0][2];把i^4展开就是i^4 + 4*i^3+ 6*i^2+ 4*i+ 1。构造Fn={fn-2,fn-1,n^4,n^3,n^2,n,1}思路:根据f[i]=2*f[i-2]+f[i-1]+i^4。那么我们就需要i^4 i^3 i^2 i 1。原创 2022-11-18 17:55:37 · 418 阅读 · 0 评论 -
B - 缺失的数据范围
对于一道题目,小Q会告诉你他的算法的时间复杂度为O(n^a\log^bn)O(nalogbn),且蕴含在这个大OO记号下的常数为11。小Q认为只要n^a\left(\lceil\log_2n\rceil\right)^bna(⌈log2n⌉)b不超过kk,那么就是合理的数据范围。每组数据包含一行三个正整数a,b,k(1\leq a,b\leq 10,10^6\leq k\leq 10^{18})a,b,k(1≤a,b≤10,106≤k≤1018),分别描述时间复杂度以及允许的指令数。原创 2022-11-16 10:33:08 · 176 阅读 · 0 评论 -
C. 连锁商店 (暴力优化)
你正在 11 号景点,你将会搭乘缆车去往各个景点,每到一个景点,你都可以领取该景点的连锁商店的新客优惠红包(包括 11 号景点)。接下来 mm 行,每行两个正整数 ui,viui,vi (1≤ui原创 2022-11-14 15:37:53 · 580 阅读 · 0 评论 -
2019 Sichuan Province Programming Contest J. Jump on Axis
然后我们可以用一个二维数组v【i】【j】来预处理存选项i一共选了j次所走的路程。然后对于每个满足的i j k,选择的方案是C(i+j+k,i)*C(j+k,j)(在i+j+k个位置里选i个位置走选项1,在剩下的j+k个位置走选项2)每次有三个选择:选择1走一步,选择2走两步,选择3走三步。每次选第i个选择的时候,如果他没有被选过,那么就走i步。而且最后是i+j+k,那么我们就开3*3000个数组。设选项1走了i次,选项2走了j次,选项3走了k次。由打表可以知道i,j,k不超过2600个,原创 2022-11-02 18:09:18 · 347 阅读 · 0 评论 -
F - The Best Path
题意:当每条河只能走一遍而且能遍历所有湖的情况下,输出每个湖的值的最大异或值,如果不存在这种情况输出impossible。思路:我强大的队友画图找出了规律。。。tql对于一个湖,算出他出度入度的总和之后,遍历一遍看他有几个奇数,如果有两个奇数或者没有奇数的话就说明可以在每条边都遍历一遍的情况下走遍所有的湖,其他情况就是不能遍历所有的湖直接输出impossible。当全是偶数边的时候,说明是环,那么肯定会回到起点的位置,那么起点的位置就多异或了一遍,最后还得再异或一遍起点的位置,那么我们本题是在任意起点出发,原创 2022-09-07 10:30:39 · 59 阅读 · 0 评论 -
B - Cure
题意:给一个数n,输出从1/(1*1)+1/(2*2)+...+1/(n*n)的值。思路:打表存到n的数,注意当n很大的时候1/(n*n)越小,那么他就趋近于0,所以当n很大的时候我们输出趋近的值就可以了。注意在实现的时候不能直接算1/(n*n),需要1/n/n。因为这个数可能很大,所以我们用字符串读入,保留5位小数,那我们打表打到1e6就可以了。......原创 2022-07-06 19:46:25 · 121 阅读 · 2 评论 -
A - I Count Two Three
题意:找出一个大于等于n的,能写成2^a*3^b*5^c*7^d的数。(a,b,c,d均大于等于0)思路:打表+查找。打表的时候直接a,b,c,d枚举出来4重循环,然后再剪枝,因为2^32>1e9,所以我们在枚举的时候a,b,c,d都枚举到32就可以了,剪枝是判断一下当我们枚举的乘在一起大于1e9的时候就直接break。查找用lower_bound函数,本质是二分查找,不会t。还有卡cin,cout,注意!...原创 2022-07-06 16:41:50 · 52 阅读 · 0 评论