- 博客(13)
- 收藏
- 关注
原创 P1825 [USACO11OPEN]Corn Maze S
此时的走法是1,3->1,4->1,1->2,1->1,1->1,4->1,5。因为传送不需要时间,所以一共需要4单位的时间,此时传送门被重复使用了两次。这个问题不需要担心,因为我到达传送门,那么我会标记传送门周围的点为true。所以传送门之间并不会直接传送,而是需要你走出传送门然后走进传送门才能进行传送,所以并不会出现死循环。思路根据题意可以用bfs解决,需要特别注意的是到达传送点时需要特殊处理,传送点之间不需要标记,因为传送点可能需要用多次。从装置的一个结点到另一个结点不花时间。...
2022-07-25 10:14:33
399
1
原创 Codeforces Round #809 Editorial(A,B,C)
在序列2的基础上把倒数第二个数往后移1位,得到序列3……,直到把第一位往后移动1位。所以一共要处理O(n)次,序列2是在序列1的基础上,最后一位不同,所以减去最后一位加上的值,然后再补上最后一位移动的值。得到序列3需要的块数,依次类推,可以在O(n)的时间内将所有情况找出来,然后用ans取最大保存即可。思路奇数的情况是确定的,就是从2开始间隔一位就get一下之间的差值。偶数情况是不确定的,比如。容易发现,对于偶数,它有一位的自由空间,这导致了最后一个位置可以往后移一位,得到序列2。...
2022-07-19 12:21:55
2011
原创 求解小易喜欢的数列问题(DP)
题意:思路: 该题的状态转移方程还是挺好思考的,定义f[i][j]为解决前i-1位,第i为j的数列的方案种数。那么可以得到状态转移方程,要爆int,所以注意要开longlongf[i][j]] += f[i - 1][k] (k
2022-07-07 10:30:14
359
原创 求解堆砖块问题(DP)
问题描述: 思路1:先讲述一个思路比较简单易懂的,但是复杂度略高的。定义状态f[i][j][k]表示考虑i个物品,此时放在左边或者放在右边或者不放,此时左边框的高度为j,右边高度为k的状态是否存在。这样就可以描述一个完整的状态,答案就是f[n][j][j]中为true,且j最大的。此时进行状态的转移1不放:f[i][j][k] = f[i - 1][j][k]2放在左边:f[i][j][k] |= f[i - 1][j - h[i][k]3放在右边:f[i][j][k] |= f[i - 1][j][k -
2022-07-07 09:47:53
555
原创 求解分饼干问题(DP)
题意: 思路:根据数据范围可知,长度最多有18位,每位有9种可能。所以用dfs时间复杂度是9^18次方。这样肯定是会tle的,所以这里思考dp如何解决,那么dp就是如何描述一类状态,然后将答案归到某一类中,定义f[i][j]为前i位,%k为j的方案数量。那么初始状态就是f[0][0] = 1。对于1XX,n = 3,那么f[1][1] = 1是显然的,f[1][k]都为0。那么如何从f[1][1]推到f[2][k]的状态。我们知道对于abc来说,abc%n = (ab * 10 + c) % n = (ab
2022-07-07 09:15:33
424
原创 求解数字和为sum的方法数问题(背包问题)
题目描述:问题描述:给定一个有n个正整数的数组a和一个整数sum,求选择数组a中部分数字和为sum的方案数。若两种选取方案有一个数字的下标不一样,则认为是不同的方案。输人描述:输人为两行,第1行为两个正整数n(1≤n≤1000)、sum(1≤sum≤1000),第2行为n个正整数a[i](32位整数),以空格隔开。输出描述:输出所求的方案数。输入样例:5 155 5 10 2 3输出样例:4思路:经典的背包问题求方案种数,定义f[i][j]为从前i个数中选,和为j的方案种数。则状态转移方程为不选第i
2022-07-06 17:06:37
264
原创 求解袋鼠过河问题(dp)
问题描述:一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上有一个弹簧,袋鼠跳到弹簧上就可以跳的更远。每个弹簧力量不同,用一个数字代表它的力量,如果弹簧的力量为5,就表示袋鼠下一跳最多 能够跳5米,如果为0,就表示会陷进去无法继续跳跃。河流一共n米宽,袋鼠初始在第一个弹簧上面,若跳到最后一个弹簧就算过河了,给定每个弹簧的力量,求袋鼠最少需要多少跳能够到达对岸。如果无法到达,输出一1。输人描述:输入分两行,第1行是数组长度n(1≤n≤10000),第2行是每一-项的
2022-07-06 16:50:57
1173
原创 第十三届蓝桥杯c++b组国赛决赛
第一次参加蓝桥杯进国赛了,今天更新一下参加国赛的心得和写出的题吧~试题 A: 2022思路:这题用的是三维背包,定义f[i][j][v]表示从前i个中选j个和为v的方案种数,那么可以得到状态转移方程,注意f数组开longlong,不然会爆int选i: f[i][j][v] = f[i - 1][j - 1][v - i]不选i: f[i][j][v] += f[i - 1][j][v]答案:379187662194355221代码如下: 试题 B: 钟表 思路:这题考试的时候一开始没看懂(不经常看
2022-07-05 18:05:34
1308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人