- 博客(4)
- 收藏
- 关注
原创 luogu [PKUSC2018] 星际穿越
设dp[i][j]为i位置向前跳2^j步最远的点,很容易看出每个点向前跳1步就是题目给定的a[i],所以有dp[i][0]=a[i](i>1),由于i位置向前面的跳跃步数可能比i后面位置向前跳的步数小,导致不是最优(如i的a[i]大于a[i+1]会导致i跳到小于i的位置会花费更多步数),所以要从最后面n开始递推,所以有dp[n][0]=a[n],dp[i][j]=dp[dp[i][j-1][j-1]。首先从求解角度,题目求的就是[l,x]的步数总和-[r+1,x]的步数总和。中的其中一个星球,保证。
2024-11-30 00:45:46
1287
原创 HDU 6107 Typesetting
然后进行倍增递推,在dp[i][j-1]不为0的情况下(即递推的前提是前半部分得能放),具体递推为dp[i][j]=dp[i][j-1]+dp[i+dp[i][j-1]][j-1],表示单词i的下2^j行能放的单词数由单词i的下2^i行和单词i+dp[i][j-1]的下2^j行得到。处理完dp数组后进行查询的判断,定义fun1函数为当没有图片时能放的行数,从log2[n]到0遍历记录ans和i的值,最后再特判一下加上剩下的dp1[i][0]fun2函数为从i个单词到lmt行能放到第几个单词。
2024-11-29 01:57:57
1588
原创 luogu P4155 [SCOI2015] 国旗计划
为了使每个区间尽可能覆盖最大的范围,可以贪心的对区间进行排序,这里对每个区间的左端点进行了排序,接下来按照题意如果一一对每个区间进行枚举达到n^2的复杂度会超时,可以考虑倍增法对于每个区间记录倍增若干次后能到达的最远的区间(保证范围不超过对当前区间的相对值m),g[j][i]代表j区间倍增2^i次后达到的最远区间,先利用双指针维护每个点能到达的最远区间后进行递推,递推方程为g[j][i]=g[g[j][i-1]][i-1]。A 国幅员辽阔,边境线上设有 $M$ 个边防站,顺时针编号 $1$ 至 $M$。
2024-11-28 18:43:10
715
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅