10 2018 档案

摘要:先考虑一个$O(N^2)$做法。 设选的两个点为$x,y$,则一定可以将树分成两个集合$A,B$,使得$A$集合所有点都去$x$,$B$集合所有点都去$y$,而这两个集合的分界点就是树上的一条边。于是考虑枚举断哪条边,然后对两边分别跑一遍带权树的重心,统计答案加起来取最小值就行了。 现在进行优化,求 阅读全文
posted @ 2018-10-29 16:23 Qihoo360 阅读(514) 评论(0) 推荐(0)
摘要:RT 如果$NOIP$出成绩后此帖不在了,说明我的退役时间延期至了省选后 阅读全文
posted @ 2018-10-26 22:11 Qihoo360 阅读(627) 评论(4) 推荐(0)
摘要:"题目链接" ~~位运算+$DP$=状压$DP$?(雾~~ $a\&b =min(a,b)$在集合的意义上就是$a\subseteq b$ 所以对每个数的子集向子集连一条边,然后答案就是这个$DAG$的最长链了,跑一遍拓扑排序就行了。 直接连边的复杂度是$O(n^2)$,显然只能拿$60'$。 题解 阅读全文
posted @ 2018-10-23 10:09 Qihoo360 阅读(171) 评论(0) 推荐(0)
摘要:"题目链接" 做过$n$遍这种题了。。。 答案就是$\sum_{i=1}^{n}\sum_{j=1}^{n/i}[\varphi(j) i]$ 线筛欧拉函数求前缀和直接算就行。 cpp include const int MAXN = 2000010; int v[MAXN], prime[MAXN 阅读全文
posted @ 2018-10-23 10:06 Qihoo360 阅读(190) 评论(0) 推荐(0)
摘要:每个点的出度都为$1$,很容易看出是基环外向树~~然而并没有用~~ 贪心+拓扑排序,如果一个点不选,则他的儿子一定要选。 最后还剩下环,随便找个位置拆开就行了。 cpp include define Open(s) freopen(s".in","r",stdin);freopen(s".out", 阅读全文
posted @ 2018-10-20 17:06 Qihoo360 阅读(265) 评论(0) 推荐(0)
摘要:"题目链接" 并查集+贪心当然是可以做的。 但我用二分图+二分答案。 二分一个$mid$,删去所有边权小于等于$mid$的边,看有没有奇环存在,如果存在,则$mid$不行。 阅读全文
posted @ 2018-10-19 09:19 Qihoo360 阅读(219) 评论(0) 推荐(0)
摘要:"题目链接" 先$Tarjan$缩点,记录每个环内的最大值和最小值。 然后跑拓扑排序,$Min[u]$表示到$u$的最小值,$ans[u]$表示到$u$的答案,$Min$和$ans$都在拓扑排序中更新和传递。 最终答案就是$ans[n]$。 $100$多行敲着~~心累~~ cpp include i 阅读全文
posted @ 2018-10-19 08:20 Qihoo360 阅读(210) 评论(0) 推荐(0)
摘要:"题目链接" 题意:给一张无向图和$M$个询问,问$u,v$之间的路径的必经之点的个数。 对图建出圆方树,然后必经之点就是两点路径经过的原点个数,用$(dep[u]+dep[v] dep[LCA] 2)/2+1$即可算出。 什么你不知道圆方树~~(说的跟我知道一样)~~ $APIO2018$出来的黑 阅读全文
posted @ 2018-10-18 08:22 Qihoo360 阅读(160) 评论(4) 推荐(0)
摘要:"题目链接" $O(n^2)$的$DP$很容易想,$f[u][i]$表示在$u$的子树中距离$u$为$i$的点的个数,则$f[u][i]=\sum f[v][i 1]$ 长链剖分。 $O(1)$继承重儿子的信息,再暴力合并其他轻儿子的信息,时间复杂度是线性的。 继承重儿子用指针实现,非常巧妙。 cp 阅读全文
posted @ 2018-10-16 11:27 Qihoo360 阅读(176) 评论(0) 推荐(0)
摘要:"题目连接" 很久没写矩阵加速了,复习一下,没想到是一道小毒瘤题。 状态矩阵$a[k],b[k],c[k],a[k+1],b[k+1],c[k+1],k,k^2,w^k,z^k,1$ 转移矩阵 手写不易。 阅读全文
posted @ 2018-10-15 11:56 Qihoo360 阅读(134) 评论(0) 推荐(0)
摘要:"题目链接" 看到题目肯定首先会想到搜索。 然鹅数据范围$n include include define Open(s) freopen(s".in","r",stdin);freopen(s".out","w",stdout); define Close fclose(stdin);fclose 阅读全文
posted @ 2018-10-13 21:29 Qihoo360 阅读(160) 评论(0) 推荐(0)
摘要:"题目链接" 用权值线段树维护每个字母在$[l,r]$出现的次数,每次修改把每个字母在区间的出现次数记下来,然后清空这段区间,再按顺序插进去就好了。 时间复杂度$O(n\log n 26)$ (好久没写正常的维护和的线段树了,这次还要打清零的标记,能一遍写过,好开森) cpp include inc 阅读全文
posted @ 2018-10-13 20:54 Qihoo360 阅读(256) 评论(0) 推荐(0)
摘要:"题目链接" 题意:求$\sum_{i=1}^{n}\gcd(i,n)$ 首先可以肯定,$\gcd(i,n)|n$。 所以设$t(x)$表示$gcd(i,n)=x$的$i$的个数。 那么答案很显然就是$\sum_{d|n}t(d) d$。 那么$t(x)$怎么求呢。 $$t(x)=\sum_{i=1 阅读全文
posted @ 2018-10-12 11:43 Qihoo360 阅读(146) 评论(0) 推荐(0)
摘要:"题目链接" 树剖练手题,想复习下树剖。 第一次提交$T$成~~QQC~~ "看我" ??? 看了数据范围的确挺恶心的,我的复杂度是$O(Mlog^2N)$的,数据范围有三段 很极限就对了。难道是我常数太大了?那也不至于只对$3$个点吧。 我看了一下,原来我求$size$的时候没有加上子树的$siz 阅读全文
posted @ 2018-10-11 11:46 Qihoo360 阅读(177) 评论(0) 推荐(0)
摘要:"题目链接" 容易发现$a,b,c$肯定是在一条直链上的。 定义$size(u)$表示以$u$为根的子树大小(不包括$u$) 分两种情况, 1、$b$是$a$的祖先,对答案的贡献是 $$min(deep(p) 1,k) size(p)$$ 显然是可以直接算的。 2、$b$是$a$的孩子,对答案的贡献 阅读全文
posted @ 2018-10-10 09:48 Qihoo360 阅读(138) 评论(0) 推荐(0)
摘要:"题目链接" ~~可能是除了《概率论》的最水的黑题了吧~~ 用$Tarjan$缩点(点双联通分量),然后就是树上两点之间的距离了,跑$LCA$就好了。 cpp include include include using namespace std; int s; char ch; inline in 阅读全文
posted @ 2018-10-08 15:30 Qihoo360 阅读(170) 评论(0) 推荐(0)
摘要:"题目链接" 看到这种找树链的题目肯定是想到点分治的。 ~~我码了一下午,$debug$一晚上~~,终于做到~~只有两个点TLE~~了。 ~~我的是不完美做法~~ ~~加上特判$A$了这题qwq~~ 记录每个字母在母串中出现的所有位置,我用的邻接表实现。 分治重心时枚举每个子节点,枚举这条边的字母的 阅读全文
posted @ 2018-10-08 15:20 Qihoo360 阅读(192) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-10-04 21:56 Qihoo360 阅读(6) 评论(1) 推荐(0)
摘要:"题目链接" $|S| maxright){ //更新右端点 maxright = hw[i] + i; mid = i; } } cpp include include include using namespace std; const int MAXN = 100010; char b[MAX 阅读全文
posted @ 2018-10-04 20:31 Qihoo360 阅读(196) 评论(0) 推荐(0)
摘要:"题目链接" manacher算法:在线性时间内求一个字符串中所有/最长回文串的算法。 先来考虑一下暴力的算法,枚举每个中点,向两边扩展,时间复杂度$O(n^2)$。 来分析下此算法的缺点。 1、因为回文串有奇偶之分,所以要分类讨论,$abba$的对称轴不在字符上,分类讨论就会有点麻烦。 为此,$m 阅读全文
posted @ 2018-10-04 19:16 Qihoo360 阅读(152) 评论(0) 推荐(0)
摘要:"题目链接" 第一问:快速幂 第二问: "扩欧解线性同余方程" 第三问: "$BSGS$" ~~三个模板~~ 阅读全文
posted @ 2018-10-04 08:07 Qihoo360 阅读(162) 评论(0) 推荐(0)
摘要:"题目链接" $BSGS$模板题。。不会 "点这里" 阅读全文
posted @ 2018-10-03 11:05 Qihoo360 阅读(246) 评论(1) 推荐(0)
摘要:"题目链接" emmm看起来好像无从下手, $l_i,r_i$这么大,肯定是要离散化的。 然后我们是选$m$个区间,我们先对这些区间按长度排个序也不影响。 排序后,设我们取的$m$个区间 的编号 是$b_1,b_2,...,b_m$, 若$b_m$确定,我们肯定是要尽量使$b_1,b_2,...,b 阅读全文
posted @ 2018-10-03 10:28 Qihoo360 阅读(147) 评论(0) 推荐(0)
摘要:"题目链接" 我做的网络流24题里的第一题。。 想是不可能想到的,只能看题解。 cpp 首先,我们拆点,将一天拆成晚上和早上,每天晚上会受到脏餐巾(来源:当天早上用完的餐巾,在这道题中可理解为从原点获得),每天早上又有干净的餐巾(来源:购买、快洗店、慢洗店)。 1.从原点向每一天晚上连一条流量为当天 阅读全文
posted @ 2018-10-01 20:17 Qihoo360 阅读(135) 评论(1) 推荐(0)

You're powerful!