随笔分类 - cf
摘要:805D - Minimum number of steps 思路:简单模拟,a每穿过后面一个b,b的个数+1,当这个a穿到最后,相当于把它后面的b的个数翻倍。每个a到达最后的步数相当于这个a与它后面已经到达最后的a之间的b的个数,只要从后面往前扫,记录b的个数,每遇到一个a,把b的个数加入答案,并
阅读全文
摘要:610B - Vika and Squares 思路:注意对环状结构的理解。找到所有值的最小值minn,然后所有值减去这个最小值,再在环状结构里找一个最长连续正数的长度maxl,答案就是minn*n+maxl。 代码:
阅读全文
摘要:757B - Bash's Big Day 思路:筛法。将所有因子个数求出,答案就是最大的因子个数,注意全为1的特殊情况。 代码:
阅读全文
摘要:535B - Tavas and SaDDas 方法一:打表大法。 代码1: 方法二:用了一种类似于二进制的方法,把4映射成1,把7映射成2,那么幸运数就变成了由1和2组成的类似二进制的结构了,再转换成十进制就是答案了。 代码2:
阅读全文
摘要:A - Bear and Prime 100 思路:任何一个合数都可以写成2个以上质数的乘积。在2-100中,除了4,9,25,49外都可以写成两个以上不同质数的乘积。 所以打一个质数加这四个数的表:{2,3,4,5,7,9,11,13,17,19,23,25,29,31,37,41,43,47,4
阅读全文
摘要:838A - Binary Blocks 思路:求一下前缀和,然后就能很快算出每一小正方块中1的个数了,0的个数等于k*k减去1的个数,两个的最小值就是要加进答案的值。 代码:
阅读全文
摘要:435B - Pasha Maximizes 思路:贪心。从高位开始,找到比这一位大的且能在k次交换之内交换到这一位的最大一位数,那这个数交换到这一位,k减去相应的交换次数。这样就保证了高位尽可能大,也就保证了交换后的数尽可能大。 代码:
阅读全文
摘要:837E - Vasya's Function 题意:定义函数f(x,y):f(x,0)=0,f(x,y)=1+f(x,y-gcd(x,y)),给你x,y,求f(x,y)。 思路:x=X*gcd(x,y),y=Y*gcd(x,y),X与Y互质。y-gcd(x,y)=(Y-1)*gcd(x,y),如果
阅读全文
摘要:837D - Round Subset 思路:dp。0是由2*5产生的。 ①dp[i][j]表示选i个数,因子2的个数为j时因子5的个数。 状态转移方程:dp[i][j]=max(dp[i][j],dp[i-1][j-c2]+c5)。 初始化:dp[0][0]=0,dp[i][j]=-INF(i!=
阅读全文
摘要:369C - Valera and Elections 思路:dfs,对于搜索到的每个节点,看他后面有没有需要修的路,如果没有,那么这个节点就是答案。 代码:
阅读全文
摘要:834D - The Bakery 思路:dp[i][j]表示到第j个数为止分成i段的最大总和值。 dp[i][j]=max{dp[i-1][x]+c(x+1,j)(i-1≤x≤j-1)},c(x+1,j)表示x+1到j的不同的值。 用线段树维护一下最大值。 上图最后一个点取不到,不解释,不明白请评
阅读全文
摘要:835C-Star sky 思路:dp,预处理一下c+1层前缀和。 代码:
阅读全文
摘要:628B - New Skateboard 思路:dp 代码:
阅读全文
摘要:834C - The Meaningless Game 数学。 思路1:判断a•b能不能化成v3且a%v==0且b%v==0。v可以直接用pow求(或者用cbrt),也可以二分求;还可以用map映射预处理,使得所有的map[v*v*v]=v。 代码1(cbrt版,296 ms): 代码2(pow版,
阅读全文
摘要:832D - Misha, Grisha and Underground 思路:lca,求两个最短路的公共长度。公共长度公式为(d(a,b)+d(b,c)-d(a,c))/2。 代码:
阅读全文
摘要:821C - Okabe and Boxes 思路:模拟。因为只需要比较栈顶和当前要删除的值就可以了,所以如果栈顶和当前要删除的值不同时,栈就可以清空了(因为下一次的栈顶不可能出现在前面那些值中)。 代码:
阅读全文
摘要:525A - Vitaliy and Pie 思路:贪心+hashing。 代码:
阅读全文
摘要:140D - New Year Contest 思路:贪心+排序。罚时与时间成正比,因为在0点前做完的题都可以在0点提交。从时间短的开始做最优。 代码:
阅读全文
摘要:C - Om Nom and Candies 思路:贪心+思维(或者叫数学)。假设最大值max(wr,wb)为wr,当c/wr小于√c时,可以枚举r糖的数量(从0到c/wr),更新答案,复杂度√c;否则,假设hr/wr<hb/wr,得到hr*wb<hb*wr,由这个等式可知,在有wb*wr重量限制的
阅读全文
摘要:665C - Simple Strings 思路:贪心。为了保证最小改变着次数,在改变每个相邻相同的字符时,保证改变后的字符和后面也不相同。 代码:
阅读全文