摘要: 对于询问[i,j] 在[1..n]中我们看看小于mid的数字有多少个,显然如果个数的两倍 define N 500005 using namespace std; int n,m,a[N],rt[N 100],lson[N 100],rson[N 100],tot,sum[N 100]; void 阅读全文
posted @ 2018-10-16 23:46 Patrickpwq 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 这是一道好题 可以更深的理解主席树 最初的想法是 一开始 一边加入任务 一边维护时间轴 换句话说 对于每个时间点 我们都想维护一颗权值线段树(这里的权值代表着优先级Pi)相当于对于一个任务 我们要维护Ei Si棵 然而显然MLE 考虑降维 联想到主席树建树方式是通过前缀和来的 既然是求前缀和 这道题 阅读全文
posted @ 2018-10-16 22:24 Patrickpwq 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 几个月没打了...全忘光 记得之前写过一篇主席树入门教程 https://blog.csdn.net/Patrickpwq/article/details/80315358 显然里面的代码丑的不能看 重发一个代码 主席树推荐不要写结构体 cpp // luogu judger enable o2 i 阅读全文
posted @ 2018-10-16 20:38 Patrickpwq 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 我们先考虑如何比较两两的字符串 我们可以用线段树来维护哈希值 在线段树上根据二分的性质来做即可 又考虑到 每颗线段树是在之前的某颗基础上只修改了一个节点 那显然就想到了主席树 另外说说如何pushup 我们考虑这样一个字符串 abcdefg 假设当前节点左儿子是abc 右儿子是defg 由于我们的哈 阅读全文
posted @ 2018-10-16 17:32 Patrickpwq 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 其实就是要求最小的环套树森林 我们现在只考虑如何合并 设当前边的两个端点是x,y 若x,y在一个联通块里 那这个联通块要么是树 要么是环套树 假如是个环套树 加一条边后必定变成两个环 不符合要求 假如是个树 加一条边就变成了换套树 符合要求 若x,y不在一个联通块里 假如同为环套树 加一条边后必定变 阅读全文
posted @ 2018-10-16 16:15 Patrickpwq 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 整理题意后 对于每个询问其实就是 由于C(m,n)=C(m,m n) 就变成了 其实就是在杨辉三角上的一列求其中的一段和 然后有个玄学的公式 什么意思呢 证明是很容易得到的 所以把阶乘预处理出来 由于1e9+7是质数 可以用费马小定理算逆元 就可以O(1)回答 cpp include define 阅读全文
posted @ 2018-10-16 15:26 Patrickpwq 阅读(108) 评论(0) 推荐(1) 编辑