NOIPRV
2001
1117 数的划分 [ DP ]
注意long long。
f[i][j]=f[i−j][j]+f[i−1][j–1]
<1. 第一个元素不为1 > : f[i - j][j] (j个元素全部减1)
<2. 第一个元素为1> : f[i - 1][j – 1] (去掉第一个元素)
1119 Car 的旅行路线 [ SPFA ]
预处理稍麻烦。
1116 一元三次方程求解 [ … ]
暴枚。VIJOS数据好像有点问题?
竟然。。。输入数据原来是double。。。醉烂。
也可以用到零点定理的了。。。
1118 统计单词个数 [ DP? ]
预处理
g[i][j]
: 字串
s[i..j]
中单词个数。
f[i][j]=maxf[k][j−1]+g[k+1][i]|k=j−1..i–1
(是j – 1不是0)
2002
1123 均分纸牌 [ … ]
开始想复杂了,虽然A了。
Quote from VIJOS :
第一堆数量只能由第二堆改变,而第一堆的最终数量又是确定的。
所以第二堆给第一堆的数量也就确定了。
然后因为第二堆最终数量也是确定的。
所以第三堆给第二堆的数量也是确定的。
1125 自由落体 [ … ]
好无聊啊。。
求出接住的时间上下界,位移上下界。。for if…
1124 字串变换 [ BFS,字符串Hash ]
不想写了。。。
1126 矩形覆盖 [ ??? ]
待解决
2003
1105 神经网络 [ BFS ]
反正是BFS。
1101 传染病控制 [ search??… ]
…
注意个特判:不能到达最下层的情况。
1100 加分二叉树 [ 记忆化 ]
skip
1106 侦探推理 [ … ]
skip
2004
1096 津津的储蓄计划 [ … ]
skip
1097 合并果子 [ heap ]
…
1098 合唱队形 [ LIS ]
两遍LIS…
1099 虫食算 [ search++ ]
待解决
2005
1001 谁拿了最多奖学金 [ … ]
skip
1002 过河 [ DP ]
朴素 :
f[i]=f[i−k]+b[i],(s≤i≤t)
因为
s,t≤10,m≤100
,所以中间会有很多无用状态。为了图方便,把两个石子之间距离全部设为
10×s×t
(放大了不影响结果),可以承受。
1003 等价表达式 [ ??? ]
待解决
1008 篝火晚会 [ ??? ]
思想跟置换群有点关系。。
待解决
2006
1312 能量项链 [ DP ]
记忆化
f[l][r]=max{f[l][i]+f[i+1][r]+p1[l]∗p2[i]∗p2[r]}
1313 金明的预算方案
1314 作业调度方案
1315 2^k进制数
2007
1362 树网的核
待解决
1378 矩阵取数游戏 [ DP ]
记忆化,注意边界条件。
一行行处理:
f[l][r][k]=max{f[l−1][r][k−1]+g[l−1]∗2k,f[l][r+1][k−1]+g[i−1]∗2k}
ans=max{f[i][i][m−1]+g[i]∗2m|1≤i≤m}
1379 字符串的展开
skip
1816 统计数字
skip
2008
1493 传纸条 [ DP ]
f[i][j][p][q]=max{f[i−1][j][p−1][q],f[i][j−1][p][q−1],f[i−1][j][p][q−1],f[i][j−1][p−1][q]}+g[i][j]+g[p][q]((i,j)≠(p,q))
边界:
f[1][1]=g[1][1]
f[n][m][n][m]=max{f[n−1][m][n][m−1],f[n][m−1][n−1][m]}+g[n][m]
Cab