摘要:
E - Rest In The Shades 思路: 相似 红色的长度等于(y - s) / y 倍的 A' 和 B' 之间的 fence的长度 A' 是 p 和 A 连线和 x 轴交点, B'同理 交点也可以用相似求,然后lower_bound找到交点在哪里,然后通过预处理的fence长度的前缀和 阅读全文
摘要:
2120 思路1:树状数组套主席树 阅读全文
摘要:
天坑。。。 杭电 dls代码:https://ideone.com/Wo55gi 官方题解:http://bestcoder.hdu.edu.cn/blog/ 2018 Multi-University Training Contest 1 1001 Maximum Multiple 打表找规律,发 阅读全文
摘要:
参考:https://www.cnblogs.com/RabbitHu/p/segtree.html 模板: const int N = 1e5 + 5, M = 2e6 + 5;//M为节点个数,为Q*log(N) int root[N], lson[M], rson[M], value[M], 阅读全文
摘要:
简单瞎搞题 思路: bitset写dp 阅读全文
摘要:
1047 思路: 二维单调队列 先用单调队列预处理出每个位置在这一行往前n个位置的最大值最小值,然后O(n^2)扫过去,对列用单调队列 阅读全文
摘要:
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) 阅读全文
摘要:
斜率优化是单调队列优化的推广 用单调队列维护递增的斜率 参考:https://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 以例1举例说明: 转移方程为:dp[i] = min(dp[j] + (sum[i] - sum[j])^2 阅读全文
摘要:
F - Xor-Path 思路: 双向搜索dfs 如果普通的搜索复杂度是n 那么双向搜索复杂度是√n 代码: 阅读全文
摘要:
E - Number Clicker 思路:双向搜索 代码: 阅读全文
摘要:
E - Lomsat gelral 思路1: 树上启发式合并 代码: 思路2: dfs序+分块 求区间众数和 代码: 阅读全文
摘要:
F - Dominant Indices 思路:树上启发式合并 先跑轻子树,然后清除轻子树的信息 最后跑重子树,不清除信息 然后再跑一遍轻子树,重新加回轻子树的信息 由于一个节点到根节点最多有logn个轻边,所以复杂度为nlogn 代码: 阅读全文
摘要:
5787 思路: 数位dp 阅读全文
摘要:
C - Sky Full of Stars 思路: 容斥原理 题解:http://codeforces.com/blog/entry/60357 注意当i > 1 且 j > 1,是同一种颜色 代码: 阅读全文
摘要:
单调队列:队列中元素单调递增或递减,可以用双端队列实现(deque),队列的前面和后面都可以入队出队。 单调队列优化dp: 问题引入: dp[i] = min( a[j] ) ,i-m < j <= i 普通的做法是O(nlogn),但是当n很大是,这个复杂度就不行了,考虑用单调队列优化来达到O(n 阅读全文
摘要:
1833 思路:数位dp 代码: 阅读全文
摘要:
E2 - Median on Segments (General Case Edition) 思路: 首先我们计算出solve(m):中位数大于等于m的方案数,那么最后答案就是solve(m) - solve(m+1) 那么怎么计算sovle(m)呢? 对于一个区间[l,r],如果它的中位数大于等于 阅读全文
摘要:
F - Berland and the Shortest Paths 思路: bfs+dfs 首先,bfs找出1到其他点的最短路径大小dis[i] 然后对于2...n中的每个节点u,找到它所能改变的所有前驱(在保证最短路径不变的情况下),即找到v,使得dis[v] + 1 == dis[u],并把u 阅读全文
摘要:
Equal Cut 思路: 枚举中间那个分界点,然后两边找使得切割后差值最小的点,这个可以用双指针 代码: 阅读全文