- 博客(8)
- 收藏
- 关注
原创 51NOD 1640 天气晴朗的魔法(二分+最大生成树)
题目链接:点击打开链接思路:我们二分最大的边, 这显然是符合二分性质的, 然后使得边权和最大用最大生成树就行了。细节参见代码:#include #include #include #include #include #include #include #include #include #include #include #include #include
2016-11-30 21:20:08 571
原创 51NOD 1272 最大距离(线段树)
题目链接:点击打开链接思路:问题简化一下就是, 求任意一个数后面大于等于它的数中距离它的最远距离。 因为有两个特征:“大小”, “距离”, 我们可以用线段树下标表示数的大小, 距离作为值, 就变成了求区间最大值的问题了。细节参见代码:#include #include #include #include #include #include #include #in
2016-11-30 14:18:49 561
原创 51 NOD 1521 一维战舰(并查集)
题目链接:点击打开链接思路: 倒着用并查集合并就行了, 一边合并一边统计, 当能放置的船数大于等于k就停止。细节参见代码:#include #include #include #include #include #include #include #include #include #include #include #include #include #
2016-11-28 22:48:52 663
原创 HDU 4366 Successor(分块)
题目链接:点击打开链接思路:把题目转化一下就是: 求一个区间内所有大于能力值v的人中忠诚度最大的是哪个人。我们考虑分块, 对于一个块内的人, 我们另开一个数组维护, 将块内的人按照能力值排序, 二分这个能力值, 之后还要维护一个左端点变化的区间最大值, 预处理即可。细节参见代码:#include #include #include #include #inclu
2016-11-11 12:29:17 599
原创 E. XOR and Favorite Number(莫队算法)
题目链接:点击打开链接思路:莫队算法适用于无修改操作的区间问题。 关键是, 需要能够用O(1)时间从[l, r]转移[l+1, r], [l-1, r], [l, r+1], [l, r-1]。该题需要观察异或和的特点, 它是满足区间加减的。 区间[l, r]的异或和等于[1, r] - [1, l-1]。 那么我们用莫队算法维护每个点的前缀异或值, 就是可以完美解决这个问题
2016-11-09 15:41:43 796
原创 Vijos P1988 自行车比赛(treap)
题目链接:点击打开链接思路:如果我们判断第i个人是否能第一, 只需要把尽量小的分值给分数最大的人, 如果有人超过了他, 就不能得第一。我们可以把n个人排序, 让2~n个人分别加上n-1~1, 用treap维护最大值。 转移到下一个人的时候, 只需要把下一个人的加分加到当前这个人上就行了。PS:用treap的原因是set被卡了。 吐槽:set太慢了。细节参见代码:#inclu
2016-11-03 21:31:15 787
原创 Vijos P1987 游戏(DP)
题目链接:点击打开链接思路:类似背包, 很容易想到用d[i][j][s]表示前i个数字选了j个和为s的情况是否存在, 复杂度略高, 考虑到这是个布尔类型, 可以用bitset转移, 复杂度/6, 这样就可以过掉全部数据了。细节参见代码:#include #include #include #include #include #include #include #inc
2016-11-03 17:25:29 632 1
原创 HDU 5945 Fxx and game(DP+单调队列)
题目链接:点击打开链接思路:用d[i]表示从i变到1的最小花费, 那么如果i % k == 0, 转移到d[i/k], 还可以转移到min(d[i-t, i]), 我们可以发现这是一个区间最小值, 用线段树维护即可, 但是该题时间卡的很严, 线段树会TLE, 那么我们还可以用单调队列搞一搞。复杂度O(n)。细节参见代码:#include #include #include
2016-11-01 16:09:29 664
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人