摘要: URAL 1495 思路: 折半枚举+高精度技巧。 先dfs枚举出小于等于15位的情况。 dp[i]表示余数为i的最小的数。 _dp[i]表示余数为i正好15的数。 然后枚举余数i,把它乘以1e15再模n后得到t,然后找_dp[n-t] 代码: 阅读全文
posted @ 2018-01-29 19:08 Wisdom+.+ 阅读(182) 评论(0) 推荐(0) 编辑
摘要: URAL 1244 思路:dp,有点类似背包,不过不需要求最大价值,只要求方案数就可以了。 状态:dp[i]表示和为i的方案数 初始状态:dp[0]=1 状态转移:dp[i]=∑dp[i-a[k]] (1<=k<=n) 用一个pre[]数组来记录路径 代码: 阅读全文
posted @ 2018-01-29 17:56 Wisdom+.+ 阅读(230) 评论(0) 推荐(0) 编辑
摘要: URAL 1658 思路: dp+记录路径 状态:dp[i][j]表示s1为i,s2为j的最小位数 初始状态:dp[0][0]=0 状态转移:dp[i][j]=min(dp[i-k][j-k*k]+1,dp[i][j])(0<=k<10) 在状态转移时用一个数组v[i][j]记录选的k 代码: 阅读全文
posted @ 2018-01-29 14:47 Wisdom+.+ 阅读(198) 评论(0) 推荐(0) 编辑
摘要: URAL 1081 思路 状态:dp[i]表示长度为i的方案数 初始状态:dp[0]=1,dp[1]=2 状态转移:dp[i]=dp[i-1]+dp[i-2],在长度为i-1的串的前面加0,在长度为i-2的串前面加10 对于第i位如果k大于dp[i-1],那么说明这一位时1(k减去dp[i-1]), 阅读全文
posted @ 2018-01-29 14:16 Wisdom+.+ 阅读(174) 评论(0) 推荐(0) 编辑
摘要: URAL 1303 思路: dp+贪心,然后记录路径 mx[i]表示从i开始最大可以到的位置 sufmx[i]表从1-i的某个位置开始最大可以到达的位置 比普通的贪心效率要高很多 代码: 阅读全文
posted @ 2018-01-29 12:55 Wisdom+.+ 阅读(164) 评论(0) 推荐(0) 编辑
摘要: URAL 1183 思路:区间dp,打印路径,详见http://www.cnblogs.com/widsom/p/8321670.html 代码: 阅读全文
posted @ 2018-01-29 10:17 Wisdom+.+ 阅读(220) 评论(0) 推荐(0) 编辑