- 博客(9)
- 收藏
- 关注
原创 ZOJ 3216 Compositions(矩阵优化DP)
题目链接:点击打开链接思路:ZOJ挂了, 理论AC一下。用d[i]表示数i的拆分方案。 转移是个难点, 我们可以考虑转移到d[i-1]表示对于当前这个拆分出的数进行+1修改, 转移到d[i-k]表示之前拆分的数不变了, 新增加一个拆分数k。然后构造矩阵就很简单了。
2016-10-21 20:27:46 790
原创 UVA 10779 - Collectors Problem(网络流)
题目链接:点击打开链接思路:我们以1~m建立一列结点,表示Bob的物品, 以2~n建立一列结点, 表示其他的人。 源点和1~m相连, 容量为Bob的初始数量; 汇点也和1~m相连, 容量为1, 表示最终种类的限制, 如果有一个人i有物品j, 那么i向j连容量为i拥有的个数-1,表示只会给他重复的物品; 否则, j向i连容量为1的边, 表示最多给i一个(不要重复的)。 细节参见代码:
2016-10-21 16:05:40 535
原创 UESTC - 1251 谕神的密码(DP)
题目链接:点击打开链接思路:根据数据范围, 很容易确定用d[i][j]表示前i位和为j是否能组成符合要求的数字。 用path[i][j]表示下一个状态的j值, hehe[i][j]表示当前状态选了哪个数字。特判n == 1 && s == 0。细节参见代码:#include #include #include #include #include #include #
2016-10-19 20:28:18 609
原创 POJ 3373 Changing Digits(DP)
题目链接:点击打开链接思路:用d[i][j]表示前i位余数为j的最小修改次数, DP的过程中用path[i][j]表示相同状态下的下一个余数, 目的是记录路径, 用hehe[i][j]表示相同状态下该位最终的值是多少。细节参见代码:#include #include #include #include #include #include #include #inclu
2016-10-17 22:12:02 690
原创 UVA 11261 - Bishops(杂题)
题目链接:点击打开链接思路:象可以沿着对角线走任意距离, 直接枚举保存复杂度n*m*log(nm), 肯定超时, 考虑到数学方法: 同主对角线上y-x的值相同, 同一副对角线上x+y相同, 且连续分布。所以我们考虑枚举主对角线的值, 如果这个值出现过, 那么这一个对角线的所有点都会被攻击, 否则, 我们维护这个区间的副对角线被占有的值的个数。复杂度O(nlogn)细节参见代
2016-10-13 16:41:53 628 2
原创 Ural 1542. Autocompletion(二分)
题目链接:点击打开链接思路:因为单词最长15, 我们把每个单词不同长度的前缀存起来, 排序之后二分即可, 复杂度O(nlogn)细节参见代码:#include #include #include #include #include #include #include #include #include #include #include #include
2016-10-11 16:05:03 500
原创 UVA 1221/HDU 2413/POJ 3343 Against Mammoths(二分+二分图匹配)
题目链接:点击打开链接思路:由于人类星球和外星球是一一对应的, 自然想到二分图匹配, 但是如果匹配, 必须是某人类星球能打赢某外星球才连边。 因为星球上的飞船数量随时间变化, 所以先考虑把时间固定, 然后就可以分类讨论求出在T时间内的最大匹配。 由于在T时间内能胜利, 那么大于T时间也一定能, 二分即可。细节参见代码:#include #include #includ
2016-10-10 12:39:59 876
原创 POJ 3538 Domestic Networks(DP)
题目链接:点击打开链接思路:选一些边, 使得任意两点都可以相互到达且花费最小, 这显然是最小生成树, 将边挑选出来之后, 如果贪心选取的话, 有可能导致无解, 所以我们考虑用动态规划。根据数据量, 用d[i][j]表示前i个边, 第一种颜料用了j单位长度下的最小花费, 因为没条边都选, 那么用总和减去j就是第二种颜料的花费。 用path[i][j]表示改状态下从哪一个状态转移过来
2016-10-03 16:33:09 991 2
原创 UVA 1212 - Duopoly(最小割)
题目链接:点击打开链接思路:看这些限制条件, 我们很容易想到二分图, 两个公司分别建立两列结点, 表示每个订单。 关键是每个资源只能为一个公司所有,而且一旦买了一个订单, 所有资源都要全买。根据最小割, 我们如果在冲突的订单(存在相同资源)间连一条容量INF的边, 那么割掉的边就是受益最小的, 最终求出来的是最小受益, 用总的减去最小受益就行了。细节参见代码:#inclu
2016-10-02 19:27:59 660
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人