07 2018 档案

摘要:简单瞎搞题 思路: bitset写dp 阅读全文
posted @ 2018-07-27 17:46 Wisdom+.+ 阅读(146) 评论(0) 推荐(0)
摘要:1047 思路: 二维单调队列 先用单调队列预处理出每个位置在这一行往前n个位置的最大值最小值,然后O(n^2)扫过去,对列用单调队列 阅读全文
posted @ 2018-07-24 17:27 Wisdom+.+ 阅读(133) 评论(0) 推荐(0)
摘要:详见炫酷反演魔术 阅读全文
posted @ 2018-07-18 17:44 Wisdom+.+ 阅读(109) 评论(0) 推荐(0)
摘要:1010 思路: 斜率优化dp s[i]表示1-i的前缀和 斜率不等式为: 对于 i < j < k (dp[j] - dp[k] + (j + s[j])^2 - (k + s[k])^2) / ((j + s[j]) - (k + s[k])) <= 2*(i + s[i] - l -1) 阅读全文
posted @ 2018-07-17 17:14 Wisdom+.+ 阅读(160) 评论(0) 推荐(0)
摘要:斜率优化是单调队列优化的推广 用单调队列维护递增的斜率 参考:https://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 以例1举例说明: 转移方程为:dp[i] = min(dp[j] + (sum[i] - sum[j])^2 阅读全文
posted @ 2018-07-17 14:57 Wisdom+.+ 阅读(615) 评论(0) 推荐(0)
摘要:F - Xor-Path 思路: 双向搜索dfs 如果普通的搜索复杂度是n 那么双向搜索复杂度是√n 代码: 阅读全文
posted @ 2018-07-17 09:46 Wisdom+.+ 阅读(264) 评论(0) 推荐(0)
摘要:E - Number Clicker 思路:双向搜索 代码: 阅读全文
posted @ 2018-07-16 16:59 Wisdom+.+ 阅读(569) 评论(0) 推荐(0)
摘要:E - Lomsat gelral 思路1: 树上启发式合并 代码: 思路2: dfs序+分块 求区间众数和 代码: 阅读全文
posted @ 2018-07-16 15:50 Wisdom+.+ 阅读(203) 评论(0) 推荐(0)
摘要:F - Dominant Indices 思路:树上启发式合并 先跑轻子树,然后清除轻子树的信息 最后跑重子树,不清除信息 然后再跑一遍轻子树,重新加回轻子树的信息 由于一个节点到根节点最多有logn个轻边,所以复杂度为nlogn 代码: 阅读全文
posted @ 2018-07-16 15:16 Wisdom+.+ 阅读(737) 评论(0) 推荐(0)
摘要:5787 思路: 数位dp 阅读全文
posted @ 2018-07-13 17:51 Wisdom+.+ 阅读(192) 评论(0) 推荐(0)
摘要:C - Sky Full of Stars 思路: 容斥原理 题解:http://codeforces.com/blog/entry/60357 注意当i > 1 且 j > 1,是同一种颜色 代码: 阅读全文
posted @ 2018-07-13 17:38 Wisdom+.+ 阅读(239) 评论(0) 推荐(0)
摘要:单调队列:队列中元素单调递增或递减,可以用双端队列实现(deque),队列的前面和后面都可以入队出队。 单调队列优化dp: 问题引入: dp[i] = min( a[j] ) ,i-m < j <= i 普通的做法是O(nlogn),但是当n很大是,这个复杂度就不行了,考虑用单调队列优化来达到O(n 阅读全文
posted @ 2018-07-12 10:15 Wisdom+.+ 阅读(318) 评论(0) 推荐(0)
摘要:1833 思路:数位dp 代码: 阅读全文
posted @ 2018-07-11 10:36 Wisdom+.+ 阅读(162) 评论(0) 推荐(0)
摘要:E2 - Median on Segments (General Case Edition) 思路: 首先我们计算出solve(m):中位数大于等于m的方案数,那么最后答案就是solve(m) - solve(m+1) 那么怎么计算sovle(m)呢? 对于一个区间[l,r],如果它的中位数大于等于 阅读全文
posted @ 2018-07-10 17:19 Wisdom+.+ 阅读(741) 评论(0) 推荐(0)
摘要:F - Berland and the Shortest Paths 思路: bfs+dfs 首先,bfs找出1到其他点的最短路径大小dis[i] 然后对于2...n中的每个节点u,找到它所能改变的所有前驱(在保证最短路径不变的情况下),即找到v,使得dis[v] + 1 == dis[u],并把u 阅读全文
posted @ 2018-07-10 17:06 Wisdom+.+ 阅读(460) 评论(0) 推荐(0)
摘要:Equal Cut 思路: 枚举中间那个分界点,然后两边找使得切割后差值最小的点,这个可以用双指针 代码: 阅读全文
posted @ 2018-07-08 11:10 Wisdom+.+ 阅读(173) 评论(0) 推荐(0)
摘要:沙僧 思路: dfs序+差分数组 分层考虑,通过dfs序来查找修改的区间段,然后用差分数组修改 代码: 阅读全文
posted @ 2018-07-08 09:38 Wisdom+.+ 阅读(253) 评论(0) 推荐(0)
摘要:1088 思路: 模拟,确定第1和2格后所有的格子都能确定 代码: 阅读全文
posted @ 2018-07-07 17:31 Wisdom+.+ 阅读(163) 评论(0) 推荐(0)
摘要:C - Two Squares 思路: 点积叉积应用 代码: 阅读全文
posted @ 2018-07-07 16:39 Wisdom+.+ 阅读(362) 评论(0) 推荐(0)
摘要:2242 思路:BSGS+逆元 代码: 阅读全文
posted @ 2018-07-07 11:28 Wisdom+.+ 阅读(191) 评论(0) 推荐(0)