上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 24 下一页
摘要: URAL 2072 思路: dp+离散化 由于湿度的范围很大,所以将湿度离散化 可以证明,先到一种湿度的最左端或者最右端,然后结束于最右端或最左端最优,因为如果结束于中间,肯定有重复走的路 状态:dp[i][0]表示湿度为i结束于左端最优的步数 dp[i][1]表示湿度为i结束于右端最优的步数 初始 阅读全文
posted @ 2018-01-28 16:50 Wisdom+.+ 阅读(238) 评论(0) 推荐(0) 编辑
摘要: URAL 1152 思路: 1.状压dp+记忆化搜索 代码: 2.dfs+剪枝 代码: 阅读全文
posted @ 2018-01-28 11:00 Wisdom+.+ 阅读(155) 评论(0) 推荐(0) 编辑
摘要: D - The Child and Zoo 思路: 并查集+贪心 每条边的权值可以用min(a[u],a[v])来表示,然后按边的权值从大到小排序 然后用并查集从大的边开始合并,因为你要合并的这两个联通块之间的点肯定要经过这条边,而这条要合并的边是所有已经合并中的最小的,所以两个联通块之间的所有点之 阅读全文
posted @ 2018-01-27 15:49 Wisdom+.+ 阅读(345) 评论(0) 推荐(0) 编辑
摘要: URAL 1635 思路:区间dp+贪心,先n^2处理出每段区间是否是回文串,然后贪心地找每一段1到i的最少分割。 代码: 阅读全文
posted @ 2018-01-26 19:11 Wisdom+.+ 阅读(195) 评论(0) 推荐(0) 编辑
摘要: URAL - 1017 状态:dp[i][j]表示和为i最大数小于等于j的方案数 初始状态:dp[0][0]=1 状态转移:dp[i][j]=dp[i-j][j-1]+dp[i][j-1],i>=j 第二维可以用滚动数组消掉 最后减去和为n最大值也为n的情况,因为这种不满足条件 代码: 阅读全文
posted @ 2018-01-26 11:35 Wisdom+.+ 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 912E - Prime Gift 思路: 折半枚举+二分check 将素数分成两个集合(最好按奇偶位置来,保证两集合个数相近),这样每个集合枚举出来的小于1e18的积个数小于1e6。 然后二分答案,check时枚举其中一个集合,然后找到另外一个集合小于mid/该元素的元素有多少个,这里用到一个双指 阅读全文
posted @ 2018-01-25 19:36 Wisdom+.+ 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 911E - Stack Sorting 思路: 用栈来模拟,能pop就pop,记下一个需要pop的数为temp,那么如果栈非空,栈顶肯定大于temp,那么加入栈 栈顶值-1 到 temp 的值,否则加入栈 n 到 temp 的值,如果需要加入的数之前已经出现过,答案则不存在。 代码: 阅读全文
posted @ 2018-01-25 19:20 Wisdom+.+ 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 294D - Shaass and Painter Robot 思路: 可以用数学归纳法证明一个结论:整个棋盘黑白相间当且仅当边缘黑白相间。 分奇偶讨论又可得出边缘黑色格个数为n+m-2 这样就可以暴力模拟。 数组开不下保存边缘块有没有被访问,可以用map。 代码: 阅读全文
posted @ 2018-01-25 10:55 Wisdom+.+ 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 448E - Divisors 思路: dfs。注意如果是1,直接返回,因为1的因子还是1。 因为x因子的因子还是x的因子,所以可以事先处理好x因子的因子在x因子中的位置。 不用这个方法也可以,用map映射vector保存因子的因子。 代码1: 代码2: 阅读全文
posted @ 2018-01-24 21:06 Wisdom+.+ 阅读(275) 评论(0) 推荐(0) 编辑
摘要: hihoCoder 1513 小Hi的烦恼 思路: 用bitset判断交集个数 代码: 参考:http://www.cnblogs.com/hua-dong/p/8196081.html 阅读全文
posted @ 2018-01-23 13:39 Wisdom+.+ 阅读(166) 评论(0) 推荐(0) 编辑
摘要: https://www.nowcoder.com/acm/contest/67/D 思路: 先手动模拟一下过程,以下是模拟过程,按顺序表示第几步需要移动的盘标号 1 1 2 1 1 2 1 1 3 1 1 2 1 1 2 1 1 3 1 1 2 1 1 2 1 1 4 1 1 2 。。。。。。 我们 阅读全文
posted @ 2018-01-22 23:17 Wisdom+.+ 阅读(464) 评论(0) 推荐(0) 编辑
摘要: https://www.nowcoder.com/acm/contest/67/E 思路: dfs 代码: 阅读全文
posted @ 2018-01-21 22:31 Wisdom+.+ 阅读(283) 评论(0) 推荐(0) 编辑
摘要: https://www.nowcoder.com/acm/contest/67/G 思路: 分形。 记录中间左边点的坐标,然后推出另外3个点的坐标,递归到最简单的情况。 代码: 阅读全文
posted @ 2018-01-21 17:52 Wisdom+.+ 阅读(261) 评论(0) 推荐(0) 编辑
摘要: https://www.nowcoder.com/acm/contest/67/C 思路: 模拟。 代码: 阅读全文
posted @ 2018-01-21 17:48 Wisdom+.+ 阅读(254) 评论(0) 推荐(0) 编辑
摘要: hihoCoder 1636 Pangu and Stones 思路:区间dp. 状态:dp[i][j][k]表示i到j区间合并成k堆石子所需的最小花费。 初始状态:dp[i][j][j-i+1]=0 状态转移: 如果k等于1,dp[i][j][1]=min(dp[i][j][1],dp[i][k] 阅读全文
posted @ 2018-01-20 19:21 Wisdom+.+ 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 1.石子归并问题 dp[i][j]表示区间i到j合并所需的最小花费。 先求出小区间的最小花费,再转移到大的区间。 转移方程:dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]) 初始状态:dp[i][i]=0 模板: 2.括号匹配问题 求最大括号匹配数 dp[i][j 阅读全文
posted @ 2018-01-20 19:10 Wisdom+.+ 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 概述:用倍增法求区间最值的离线算法,O(nlogn)预处理,O(1)访问。 预处理: 状态:st[i][j]:[i,i+2^j)之间的最值 状态转移:如果j等于0,st[i][j]=a[i] 如果j大于0,st[i][j]=max(st[i][j-1],st[i+2^(j-1)][j-1])或st[ 阅读全文
posted @ 2018-01-20 15:14 Wisdom+.+ 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 916C - Jamie and Interesting Graph 思路:构造。 对于1到n最短路且素数,那么1到n之间连2 对于最小生成树,找一个稍微大点的素数(比1e5大)构造一个和为这个素数的最小生成树 剩下的边都连1e9 代码: 阅读全文
posted @ 2018-01-20 14:01 Wisdom+.+ 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 思路: 先取出二进制的每一位,判断总个数是不是小于等于k,如果大于k则不能构成。 通过观察可以发现,每一位的一个可以转换成下一位的两个,因为要使最大位尽可能小,所以如果最大位的所有的个数都可以转换成下一位那么就全部转换过去,如果不能就一个也不要转换,不然会导致字典序损失。 然后从最小的位开始转换,每 阅读全文
posted @ 2018-01-20 13:51 Wisdom+.+ 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 474D - Flowers 思路:dp. dp[i]表示长度为i的方案数 显然,当i<k时,dp[i]=1 当i>=k时,dp[i]可以由dp[i-1]加上一朵红花转移过来,由dp[i-k]加上k朵白花转移过来,所以dp[i]=dp[i-1]+dp[i-k] 代码: 阅读全文
posted @ 2018-01-19 16:48 Wisdom+.+ 阅读(271) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 24 下一页