- 博客(7)
- 收藏
- 关注
原创 Atcoder ABC214 F - Substrings
当j==s[i]的时候:可以发现第i位字符不取时,方案数为DP[i-1][s[i]],取第i位时,我们在不取第i-1位的所有不同字符串的最后多加上一个s[i]就是方案数,即DP[i-2][27]+1,为什么要+1呢,因为可以只取s[i]一个。满足这个特征的串的个数不就是DP[i-1][s[i]]吗?=s[i]的时候:可以发现第i位字符不可以取,因为取了以后结尾必然是s[i]而不是j,换言之当前位对DP[i][j]没有影响,所以说DP[i][j]=DP[i-1][j]
2023-03-17 18:45:10
235
原创 Codeforces 1795E Explosions?
对这个连续子序列我们可以利用数学进行O(1)计算操作次数,根本不用回去遍历,他的操作次数就为len*(a[i]-a[i-1]),然后我们去除冗余的点,只记录a[i]和区间长度,之后我们要计算区间第一个数是否严格大于上一个数,也就是说是否要继续修改上一个区间,如果不严格大于的话,重复执行上述操作。那么我们回过头来看看,把元素分段看成一段一段递减的子序列,现在需要维护的是连续子序列的最大值和长度,所以说有些点我们不用存储,我们只要存储最大的点和长度即可,我们怎么去除连续子序列冗余的点呢?
2023-02-26 20:36:40
230
原创 Codeforces Round #842 (Div. 2) 个人题解
A. Greatest Convex题意:给t组数据,每组数据给定一个k,求出在[1,k)范围内,满足x!+(x-1)!%k==0的最大x题解:赛中可以通过观察法得知输出k-1即可,赛后可以尝试证明实际上对于x!+(x-1)!,取x为k-1,则有x!+(x-1)!=1*2*3*...*(k-2)*(k-1)+1*2*3*...*(k-2)不难发现提取公因式后,原式可以化简为:x!+(x-1)!=1*2*3*...*(k-2)*k此式一定可以被k整除,所以每组数据直接输出k-1即可。本题代码:过于简单所以略。
2023-02-26 15:46:52
1179
原创 牛客寒假训练营6 阿宁睡不醒
数据范围很大所以我们不能用常规的二维DP求解,考虑到二维dp实际上有很多冗余,如果没有坏点我们可以用数学方法O(1)求解某一个DP值,所以说,我们可以只计算必要的值,用容斥处理这题,间接计算答案。要想达到目标,要向下走x-1步,向右走y-1步,那么我们可以把向下走的操作和向右走的操作进行一个排列组合,也就是一共进行(x-1+y-1)次操作,选择其中(x-1)步放置向下操作的方案数。题意:输入n,m代表一个n*n的网格中有m个坏点,随后输入m行的x,y坐标,表示所有坏点的位置。其中u为满足条件的坏点个数。
2023-02-26 12:34:18
162
原创 Codeforces 56/D. Changing a String(DP)
给定两个字符串a,b,保证字符串长度都在1000以内,你可以对A进行三种操作,删除a中任意位置一个字符,在a中任意位置插入一个任意字符,将a中某个位置的字符更换成任意字符,输出最小操作次数,并且输出每次具体操作。
2023-02-12 23:00:00
190
原创 Atcoder-abl_d-Flat Subsequence题解(线段树+dp)
ACL Beginner Contest D - Flat Subsequence(线段树+dp)
2023-02-04 17:51:33
355
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅