点分治Day1】的更多相关文章

树套树Day2暂且搁置...因为Day1的题我各种不会做... 唯一过了一道还是整体二分过的... 我们来一点愉快的算法,先不考虑数据结构这种骚东西了 毕竟还在发烧,就先码码这几天在搞的点分治吧 hx你又挖一个大坑赶紧去填树套树 点分治用于解决“树上路径点权统计问题” ...讲不太清楚,大家可以直接看题 点分治的思想呢,就是我们在树上走路径的时候,对于一个点,有两种方案: 1.选 2.不选 如果“不选”一个点,我们可以知道我们也会“不选”他的子树,递归处理即可 如果选一个点,有一个特别重要的性质…
题意 链接 Sol \(10^5\)次询问每次询问\(10^5\)个区间..这种题第一感觉就是根号/数据分治的模型. \(K\)是个定值这个很关键. 考虑\(K\)比较小的情况,可以直接暴力建SAM,\(n^2\)枚举\(w\)的子串算出现次数.询问用个\(n^2\)的vector记录一下每次在vector里二分就好. \(K\)比较大的情况我没想到什么好的做法,网上的做法复杂度也不是很好.. 然后写了个广义SAM + 暴力跳parent就过了.. 不过这题思想还是很好的 #include<bi…
LOJ 注意到\(qk \leq 10^5\),我们很不自然地考虑根号分治: 当\(k > \sqrt{10^5}\),此时\(q\)比较小,与\(qm\)相关的算法比较适合.对串\(s\)建SAM,考虑每组询问,将其所有的\((a,b)\)按照\(b\)从小到大排序,然后把\(w\)在\(s\)的SAM上匹配,每当右端点变为\(b\)的时候倍增跳到串\(s[a:b]\)的位置查询endpos即可. 当\(q > \sqrt{10^5}\),此时\(k\)比较小,与\(k^2\)相关的算法比较…
题目链接:https://ac.nowcoder.com/acm/contest/1099/I 点分治,计算路径数的时候,先将每个点到根的距离模2019,计算的时候就可以O(n)求出数目,对于模2019之后为0的进行特殊处理. #include<iostream> #include<algorithm> #include<vector> using namespace std; #define maxn 100005 #define inf 0x3f3f3f3f int…
正题 题目大意 一张随机的\(n\)个点的竞赛图,给出它的\(m\)条相互无交简单路径,求这张竞赛图的期望强联通分量个数. \(1\leq n,m\leq 10^5\) 解题思路 先考虑\(m=0\)的做法,此时我们考虑一个强联通块的贡献,注意到竞赛图中强联通块的会构成一条链的形式,枚举一个大小\(S\),那么此时联通块内到联通块外的边方向确定,那么这个联通块产生贡献的的概率就是\(\frac{1}{2}^{S(n-S)}\),选出这个联通块的方案就是\(\binom{n}{i}\). 那么答案…
2229: [Zjoi2011]最小割 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1565  Solved: 560[Submit][Status][Discuss] Description 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中,则称这个划分是关于s,t的割. 对于带权图来说,将所有顶点处在不同部分的边的…
http://www.contesthunter.org/contest/CH Round %2364 - MFOI杯水题欢乐赛 day1/Solve Solve CH Round #64 - MFOI杯水题欢乐赛 day1 题目描述 给定 n 和 X0,X1,...,Xn-1,求解 Y0,Y1,...,Yn-1,其中: f(x) 等于把 x 写成二进制后 1 的个数,比如说: f(0)=0 , f(1)=1 , f(4)=1 , f(7)=3 其中  表示二进制下的按位异或运算. 请依次输出 …
目录 2018.8.4 正睿暑期集训营 Day1 A 数对子 B 逆序对 C 盖房子 考试代码 A B C 2018.8.4 正睿暑期集训营 Day1 时间:4.5h(实际) 期望得分:30+50+30 实际得分:30+50+30(菜啊) 比赛链接 A 数对子 题目链接 \(Solution\) 考虑两个数异或怎么会得到1:\(0\oplus0=0,0\oplus1=1,1\oplus1=0\),也就是同一位的两个1会抵消成0.那么令\(bit[x]\)表示\(x\)的二进制1的个数,如果计算奇…
自闭集训 Day1 组合计数 T1 \(n\le 10\):直接暴力枚举. \(n\le 32\):meet in the middle,如果左边选了\(x\),右边选了\(y\)(且\(x+y\le B\)),那么对答案的贡献就是 \[ {B-x-y+n-1\choose n-1} \] 根据范德蒙德恒等式 \[ {a+b\choose n} =\sum_{i=0}^n {a\choose i}{b\choose n-i} \] 所以上面可以拆开成 \[ \sum_{i=0}^{n-1} {C…
自闭集训 Day1 数据结构 CF643G 用类似于下面的方法,搬到线段树上. 如何合并两个集合?先全部放在一起,每次删掉最小的\(cnt_i\),然后把其他所有的\(cnt\)都减去\(cnt_i\),直到还剩下\(k\)个. \(O(n)\)众数 如果众数出现次数大于\(n/2\),那么搞一个\(cnt\)和一个\(ans\).从左往右扫,如果与\(ans\)相同那么\(++cnt\),否则\(--cnt\).如果\(cnt<0\)那么更换\(ans\). 如果大于\(n/3\),那么搞两个…