摘要: "题目连接" 很久没写矩阵加速了,复习一下,没想到是一道小毒瘤题。 状态矩阵$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 阅读(126) 评论(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 阅读(159) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 用权值线段树维护每个字母在$[l,r]$出现的次数,每次修改把每个字母在区间的出现次数记下来,然后清空这段区间,再按顺序插进去就好了。 时间复杂度$O(n\log n 26)$ (好久没写正常的维护和的线段树了,这次还要打清零的标记,能一遍写过,好开森) cpp include inc 阅读全文
posted @ 2018-10-13 20:54 Qihoo360 阅读(252) 评论(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 阅读(141) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 树剖练手题,想复习下树剖。 第一次提交$T$成~~QQC~~ "看我" ??? 看了数据范围的确挺恶心的,我的复杂度是$O(Mlog^2N)$的,数据范围有三段 很极限就对了。难道是我常数太大了?那也不至于只对$3$个点吧。 我看了一下,原来我求$size$的时候没有加上子树的$siz 阅读全文
posted @ 2018-10-11 11:46 Qihoo360 阅读(171) 评论(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 阅读(136) 评论(0) 推荐(0) 编辑
摘要: "题目链接" ~~可能是除了《概率论》的最水的黑题了吧~~ 用$Tarjan$缩点(点双联通分量),然后就是树上两点之间的距离了,跑$LCA$就好了。 cpp include include include using namespace std; int s; char ch; inline in 阅读全文
posted @ 2018-10-08 15:30 Qihoo360 阅读(160) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 看到这种找树链的题目肯定是想到点分治的。 ~~我码了一下午,$debug$一晚上~~,终于做到~~只有两个点TLE~~了。 ~~我的是不完美做法~~ ~~加上特判$A$了这题qwq~~ 记录每个字母在母串中出现的所有位置,我用的邻接表实现。 分治重心时枚举每个子节点,枚举这条边的字母的 阅读全文
posted @ 2018-10-08 15:20 Qihoo360 阅读(187) 评论(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 阅读(190) 评论(0) 推荐(0) 编辑
摘要: "题目链接" manacher算法:在线性时间内求一个字符串中所有/最长回文串的算法。 先来考虑一下暴力的算法,枚举每个中点,向两边扩展,时间复杂度$O(n^2)$。 来分析下此算法的缺点。 1、因为回文串有奇偶之分,所以要分类讨论,$abba$的对称轴不在字符上,分类讨论就会有点麻烦。 为此,$m 阅读全文
posted @ 2018-10-04 19:16 Qihoo360 阅读(136) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 第一问:快速幂 第二问: "扩欧解线性同余方程" 第三问: "$BSGS$" ~~三个模板~~ 阅读全文
posted @ 2018-10-04 08:07 Qihoo360 阅读(155) 评论(0) 推荐(0) 编辑
摘要: "题目链接" $BSGS$模板题。。不会 "点这里" 阅读全文
posted @ 2018-10-03 11:05 Qihoo360 阅读(234) 评论(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 阅读(142) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 我做的网络流24题里的第一题。。 想是不可能想到的,只能看题解。 cpp 首先,我们拆点,将一天拆成晚上和早上,每天晚上会受到脏餐巾(来源:当天早上用完的餐巾,在这道题中可理解为从原点获得),每天早上又有干净的餐巾(来源:购买、快洗店、慢洗店)。 1.从原点向每一天晚上连一条流量为当天 阅读全文
posted @ 2018-10-01 20:17 Qihoo360 阅读(133) 评论(1) 推荐(0) 编辑
摘要: "题目链接" 正解就算了吧,~~谁叫我理生化 语数外 政史地都菜呢~~ 模拟退火真玄学,不知道发生了什么就跑出答案了,原理就算了吧,能用(pianfen)就好。 当重物平衡时,势能一定是最小的,于是当我随机出一个点时,累加所有重物到这个点的距离乘这个重物的质量的积,这样就能反映势能的相对大小了。 为 阅读全文
posted @ 2018-09-28 14:23 Qihoo360 阅读(144) 评论(2) 推荐(0) 编辑
摘要: "题目链接" 把每一列能射的两行和这一列连边,然后跑一边匈牙利就行了。 cpp include include include using std::swap; define Open(s) freopen(s".in","r",stdin);freopen(s".out","w",stdout); 阅读全文
posted @ 2018-09-27 15:12 Qihoo360 阅读(105) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 直接暴力搞是$n$方的复杂度。$n^2$个数选$n$个最小的,容易想到堆。 我们堆里记录两个信息:到$A$数组哪个位置了,到$B$数组哪个位置了, 我直接把这两个信息存在一个$int$里了。 然后按$A[i]$+$B[j]$建立小根堆,每次取出堆顶并输出,然后弹出,在把这个堆顶的$B$ 阅读全文
posted @ 2018-09-26 11:29 Qihoo360 阅读(111) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 看到代价和价值这两个关键词,肯定是首先要想到背包的。 但是图中并没有说这是棵树,所以先要$Tarjan$缩点,然后就是选课了,跑一遍树形背包就好了。 注意:缩点后应该是一个森林,应该用一个虚点连接所有根。 cpp include include include using namesp 阅读全文
posted @ 2018-09-25 15:09 Qihoo360 阅读(99) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 容易发现,当加一条边时,树上会形成一个环,这个环上的每个点都是只要走一次的,也就是说我们的答案减少了这个环上点的个数,要使答案最小,即要使环上的点最多,求出直径$L$,则答案为$2(n 1) L+1$。 当加两条边时,同样会形成一个新环,但这个新环可能和第一个环有交点,而这些交点仍是要 阅读全文
posted @ 2018-09-21 21:56 Qihoo360 阅读(144) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 差分约束。 设$s[i]$表示前$i$个位置有多少个数,那么对于一个限制条件$(L,R,C)$,显然有 $$s[R] s[L 1] =C$$ 于是连一条$L 1$到$R$边权为$C$的边。 但为了保证能从$0$走到$max(b)$,我们还需从$1$到$n$,对$i 1$和$i$连一条权 阅读全文
posted @ 2018-09-21 10:59 Qihoo360 阅读(248) 评论(1) 推荐(0) 编辑
摘要: "题目链接" 直接暴力搞$O(n^2)$显然是布星滴。 试想,若是一维,最远距离就是最大值减最小值。 现在推广到二维,因为有绝对值的存在,所以有四种情况 $(x1+y1) (x2+y2), (x1 y1) (x2 y2), ( x1+y1) ( x2+y2), ( x1 y1) ( x2 y2)$ 阅读全文
posted @ 2018-09-21 10:52 Qihoo360 阅读(150) 评论(1) 推荐(0) 编辑
摘要: "题目链接" ~~毒瘤DP题~~ 因为$(i,j)$能不能敲取决于$(i 1,j)$和$(i 1,j+1)$,所以一行一行地转移显然是有后效性的。 于是考虑从列入手。我们把这个三角形“左对齐”,变成一个直角三角形。 第$i$列第$j$个要取,则第$i$列前$j 1$个和第$i+1$列前$j 1$个肯 阅读全文
posted @ 2018-09-20 16:44 Qihoo360 阅读(115) 评论(1) 推荐(0) 编辑
摘要: "题目链接" 主席树=可持久化权值线段树。 如果你不会可持久化线段树,请 "右转" 如果你不会权值线段树,请自行脑补,就是线段树维护值域里有多少个数出现。 可持久化线段树是支持查询历史版本的。 我们对每个数都进行一次基于上个版本的单点修改操作,这样每个版本就是维护的前$p$个数,这个权值显然满足可减 阅读全文
posted @ 2018-09-19 17:34 Qihoo360 阅读(159) 评论(2) 推荐(0) 编辑
摘要: 这题因为一些小细节还是$debug$了很久。。。~~不过我第一次用脚本对拍,不亏。~~ 先随便找一个点作为根,算出答案,即所有点对到这个点的距离和的最大值,并记录 所有 距离最大的点对。如果这个点在任意一个距离最大的点对之间的路径上,那么答案显然不能再优了,因为这个点对的答案是不能减小了的。如果有两 阅读全文
posted @ 2018-09-19 17:02 Qihoo360 阅读(278) 评论(2) 推荐(0) 编辑
摘要: emacs配置(待补) 对拍(Linux): 保存为$.sh$文件,然后终端里输入$sh+$文件路径(拖到里面就好了)执行。 (Windows): 阅读全文
posted @ 2018-09-18 17:20 Qihoo360 阅读(217) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 对于一个区间$[x,y]$,设这个区间的总和为$S$ 那么我们在前缀和(设为$sum[i]$)的意义上考虑到原操作其实就是$sum[x−1]+=S$ , $sum[x]+S−S$ , $sum[y]−=S$ , $sum[y+1]+S−S$。 而且我们注意到,本来就有$sum[x−1] 阅读全文
posted @ 2018-09-18 16:59 Qihoo360 阅读(190) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 考试时暴搜50分。。。其实看到“单词”,“前缀”这种字眼时就要想到$Trie$的,哎,我太蒻了。 以一个虚点为根,建一棵$Trie$,然后$dfs$, 以当前点为根的答案就是$Ans_u=(\prod_{\text{v是u的子树}}Ans_v)+\text{有单词以这个点结尾 ? 1 阅读全文
posted @ 2018-09-18 14:27 Qihoo360 阅读(176) 评论(4) 推荐(0) 编辑
摘要: "题目链接" 可持久化线段树模板题。 这里总结一下可持久化线段树。 可持久化数据结构就是能恢复历史状态的数据结构,比如可持久化$Trie$,并查集,平衡树。 可持久化数组是最基础的,这里通过可持久化线段树来实现。 可持久化线段树 ·复杂度:时间$O(n\log n)$,空间$O(m\log n)$。 阅读全文
posted @ 2018-09-18 09:16 Qihoo360 阅读(246) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 没删除调试输出,原地炸裂,$80$ $0$。如果你要问剩下的$20$呢?答:数组开小了。 这题正向删边判连通性是很不好做的,因为我们并不会并查集的逆操作。于是可以考虑把断边改成逆向连边,某个猴子什么时候和$1$号猴子变成连通的,这就是他掉下去的时间,如果本来就与$1$号猴子连通,那么它 阅读全文
posted @ 2018-09-17 08:16 Qihoo360 阅读(322) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意:$n$个木块放到两个塔里,每个木块可放可不放,使得两塔高度相同且高度最大,求最大高度。 这个差值$DP$的思维难度还是很大的,没想出来,我就打了一个$dfs$骗了好像$20$还是$30$分吧(看来搜索也写挂)。 正解是$DP$,$f[i][j]$表示前$i$块木块使得两个塔的高度 阅读全文
posted @ 2018-09-17 08:02 Qihoo360 阅读(353) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 这题还是很好想的,看到$90%$的数据点时,我就知道要用$n^3$的算法~~(最后10分就算了吧)~~ 然后,数据水,直接暴力$n^3$卡过了。 显然是道DP。 设$f[i]$表示第$i$秒获取到的最多的金币。 三重循环更新状态。 第一重枚举机器人出发时间, 第二重枚举机器人出发地点, 阅读全文
posted @ 2018-09-13 11:19 Qihoo360 阅读(163) 评论(0) 推荐(0) 编辑
摘要: "题目链接" NOIP2017真的是不按常理出牌: 1、数学题不在Day2T1 2、一道水题一道细节极多的模拟题一道不知道怎么形容的题(小凯的疑惑)(因为我太菜了) 3、3道大火题 当时看到列队这题是毫无头绪的,因为数据大得让你存都存不下,于是果断打了个30分暴力(如果打个离散化还能多骗20分)。 阅读全文
posted @ 2018-09-11 16:40 Qihoo360 阅读(247) 评论(2) 推荐(0) 编辑
摘要: "点我下载" 10.3 每天准时拖更 阅读全文
posted @ 2018-09-10 11:37 Qihoo360 阅读(202) 评论(0) 推荐(1) 编辑
摘要: DP总结。 线性DP ·LIS ·LCS `数字三角形 ·LCIS(最长公共上升子序列) 背包 01背包 完全背包 多重背包 分组背包 区间DP 用$f[l][r]$表示区间$[l,r]$的最优解,然后枚举区间,用小区间的状态更新大区间的状态。 典型例题:合并石子 环形DP 环形DP的常用套路是断环 阅读全文
posted @ 2018-09-10 08:15 Qihoo360 阅读(207) 评论(0) 推荐(0) 编辑
摘要: This is a data structure summary. 并查集 一个维护连通性的神器,时间复杂度几乎为常数级别~~(加了按秩合并后就真的是常数级别了)~~ 把$n$个点看成一个森林,用一个数组记录每个点的父亲,初始时均为自己。 要合并两棵树时,也就是合并集合,把一棵个树的父亲指向另一棵树 阅读全文
posted @ 2018-09-09 20:39 Qihoo360 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 这是一个图论总结。 图的概念 ·图:由一些点和一些边组成的~~东西~~ ·有向图:边有方向(单向连通)的图 ·无向图:边无方向(双向连通)的图 ·入度:有多少边连入这个点 ·出度:有多少边连出这个点 ·DAG:有向无环图 建图 邻接矩阵 用一个二维数组表示两个点之间有没有连边 邻接表 用一个结构体记 阅读全文
posted @ 2018-09-09 16:56 Qihoo360 阅读(266) 评论(0) 推荐(0) 编辑
摘要: "题目链接" ~~怎么这么多随机数生成器~~ 题意见原题。 很容易想到$BSGS$算法,但是递推式是$X_{i+1}=(aX_i+b)\mod p$,这显然不是一个等比数列。 但是可以用矩阵乘法来求出第$i$项,所以好像可以用$BSGS$套矩阵乘法?但是总要把那个常数项除过来吧,矩阵除法是什么鬼? 阅读全文
posted @ 2018-09-09 16:01 Qihoo360 阅读(271) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意:给定一个$n\times m$的矩阵,每次可以向→↓←移动一格,也可以原地不动,求从$(x,y)$到最后一行的期望步数。 ~~此题标签$DP$~~ ~~看到上面这个肯定会想到~~ 方法一: $f[i][j]$表示表示从$(x,y)$走到$(i,j)$的期望步数,正推 方法二: $ 阅读全文
posted @ 2018-09-07 20:08 Qihoo360 阅读(630) 评论(3) 推荐(0) 编辑
摘要: "题目链接" 题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 这是道状压$DP$好题啊。。 定义状态:一个二进制数某一位为$1$表示该位放了国王,反之亦然。 设$f[i][j][k]$表示, 阅读全文
posted @ 2018-09-07 19:57 Qihoo360 阅读(199) 评论(0) 推荐(0) 编辑
You're powerful!