摘要: "题目链接" 斜率优化+1,好吧不水分了。 玩具装箱那题以后再做,当作复习吧。 $f[i]=f[j] (sum[i] sum[j]) dis[i]+p[i]$ $f[j]= dis[i] sum[j]+sum[i] dis[i]+f[i] p[i]$ 阅读全文
posted @ 2019-01-28 11:45 Qihoo360 阅读(177) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 假设有$3$段$a,b,c$ 先切$ab$和先切$bc$的价值分别为 $a(b+c)+bc=ab+bc+ac$ $(a+b)c+ab=ab+bc+ac$ 归纳一下可以发现切的顺序并不影响总价值。 于是设$f[i][j]$表示前$i$个数切$j$次的最大价值,转移方程就很简单了。 然后斜 阅读全文
posted @ 2019-01-28 10:12 Qihoo360 阅读(148) 评论(0) 推荐(0) 编辑
摘要: "题目链接" "双倍经验" 设$H$表示长,$W$表示宽。 若$H_i include using namespace std; const int MAXN = 50010; define ll long long inline ll min(const ll a, const ll b){ re 阅读全文
posted @ 2019-01-27 22:02 Qihoo360 阅读(109) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 一开始我的$dp$方程列错了,其实也不能说列错了,毕竟我交上去还是把暴力的分都拿到了,只是和题解的不一样,然后搞半天没搞出来去看题解,又看不懂,对不上,原来状态设置不一样~~自闭了~~。 $f[i]=all sum[j] dis[j] (sum[i] sum[j]) dis[i]$ $ 阅读全文
posted @ 2019-01-27 20:59 Qihoo360 阅读(147) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 简单网络流。 源点向蜥蜴连流量为$1$的边。 能跳出去的点向汇点连流量为$INF$的边。 把每个点拆成$2$个点,$O(n^4)$枚举两两点,如果距离小于等于$d$,就互连流量为$INF$的边。 然后跑$dinic$就行了。 cpp include include include in 阅读全文
posted @ 2019-01-27 14:54 Qihoo360 阅读(140) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 最大流裸题,没什么好说吧,恰好点数多,考验网络流的效率,正好练$Dinic$。 cpp include include include define INF 2147483647 using namespace std; const int MAXN = 1000010; const 阅读全文
posted @ 2019-01-27 14:19 Qihoo360 阅读(267) 评论(0) 推荐(0) 编辑
摘要: "题目链接" $g[i][j]$表示不走在$i\text{~}j$时间段中会关闭的港口(哪怕只关$1$天)从$1$到$m$的最短路。 $f[i]$表示前$i$天的最小花费。于是有: $$f[i]=\min_{j=0}^{i 1}[f[j]+g[i][j] (i j)+k]$$ 就是枚举在哪天改计划。 阅读全文
posted @ 2019-01-27 12:03 Qihoo360 阅读(132) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 又调了我两个多小时~~巨亏~~ 直接$O(n^4)$枚举4个点显然不行。 数据范围提示我们需要一个$O(n^2)$的算法。 于是$O(n^2)$枚举对角线,然后在这两个点两边各找一个点使其和对角线构成的三角形面积最大,也就是叉积的绝对值最大。显然具有单调性,于是旋转卡壳维护。 阅读全文
posted @ 2019-01-27 10:15 Qihoo360 阅读(168) 评论(1) 推荐(0) 编辑
摘要: 字符串 (doing) KMP (√) "[HNOI2008]GT考试" AC自动机 (√) "[TJOI2013]单词" "[POI2000]病毒" "[JSOI2007]文本生成器" "[USACO12JAN]视频游戏的连击Video Game Combos" 后缀自动机 (√) "[TJOI2 阅读全文
posted @ 2019-01-26 16:28 Qihoo360 阅读(187) 评论(1) 推荐(0) 编辑
摘要: "题目链接" 易得第$i$关的最小攻击力为$\max_{j=1}^i\frac{sum[i] sum[j 1]}{x+d (i j)}$ 十分像一个斜率式,于是看作一个点$P(x+d i,sum[i])$和点$Q(d j,sum[j 1])$的斜率 于是就是求当前$i$的点$P$和之前的所有点$Q$ 阅读全文
posted @ 2019-01-26 14:59 Qihoo360 阅读(148) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 斜率优化总结待补,请催更。~~不催更不补~~ $$f[i]=f[j]+a (sum[i] sum[j])^2+b (sum[i] sum[j])+c$$ $$=f[j]+a sum[i]^2+a sum[j]^2 2a sum[i] sum[j]+b sum[i] b sum[j]+c 阅读全文
posted @ 2019-01-26 14:19 Qihoo360 阅读(157) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 把线段以斜率为第一关键字,截距为第二关键字升序排序。 然后维护一个单调栈,保证栈中两两线段的交点的$x$坐标单调上升就行了。栈中的线段即为所求。 cpp include include using namespace std; const int MAXN = 50010; struc 阅读全文
posted @ 2019-01-26 09:15 Qihoo360 阅读(150) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 嗯,毒瘤题。 首先有一个结论,就是最小矩形一定有条边和凸包重合。脑补一下就好了。 然后枚举凸包的边,用旋转卡壳维护上顶点、左端点、右端点就好了。 上顶点用叉积,叉积越大三角形面积越大,对应的高也就越大。两边的点用点积,点积越大投影越大。 然后就是精度问题。这种实数计算最好不要直接用比较 阅读全文
posted @ 2019-01-25 21:31 Qihoo360 阅读(212) 评论(2) 推荐(0) 编辑
摘要: "题目链接" 旋转卡壳模板题把。 有时间再补总结吧。 阅读全文
posted @ 2019-01-24 20:31 Qihoo360 阅读(140) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 维护整个数列的异或前缀和和$s$,然后每次就是要求$s[N]\text{^}x\text{^}s[k],l 1=l 1$的节点。 cpp include define re register const int MAXN = 20000010; inline int read(){ i 阅读全文
posted @ 2019-01-24 16:55 Qihoo360 阅读(230) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 二维凸包板子。。有时间会补总结的。 cpp include include include using namespace std; const int MAXN = 10010; struct point{ double x, y; }p[MAXN]; int cmp1(const 阅读全文
posted @ 2019-01-24 16:52 Qihoo360 阅读(162) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 两眼题。。 第一眼裸SA 第二眼要复制一倍再跑SA。 一遍过。。 cpp include include include using namespace std; const int MAXN = 1000010; int sa[MAXN], x[MAXN], c[MAXN], y[M 阅读全文
posted @ 2019-01-22 22:36 Qihoo360 阅读(124) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 先占个坑,以后再补。 $SA$的总结肯定是要写的。 等理解地深入一点再补。 cpp include include const int MAXN = 1000010; int sa[MAXN], x[MAXN], c[MAXN], y[MAXN], n, m = 122; char s 阅读全文
posted @ 2019-01-04 21:17 Qihoo360 阅读(129) 评论(2) 推荐(0) 编辑
摘要: "题目链接" 掌握了分块打表法了。原来以前一直想错了。。。 块的大小$size=\sqrt n$,每隔$size$个数打一个表,还要在$0\text{~}size 1$每个数打一个表。 然后就可以做到$O(1)$查询了。 比如要求$A^{n}$,只需要算出$biao[n/size] pow[n\mo 阅读全文
posted @ 2019-01-03 22:08 Qihoo360 阅读(162) 评论(2) 推荐(0) 编辑
摘要: "题目链接" 开始还以为是尺取。发现行不通。 一看标签二分答案,恍然大悟。 二分一个$mid$(实数),把数列里每个数减去$mid$,然后求前缀和,在用单调队列维护$sum[i t\text{~}i s]$的最小值,用$sum[i]$减去它,如果大于等于$0$就说明$mid$可行。 阅读全文
posted @ 2018-12-30 15:35 Qihoo360 阅读(163) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 6/23 这是网络流23题里我第一个没看题解自己写出来一遍过的。。 这题应该是最简单的模型了吧。 从源点向每个类型连一条流量为这个类型要的题数,再从每个类型向可以属于这个类型的所有试题连一条流量为1的边,最后从所有试题向汇点连一条流量为1的边。 跑最大流就行。判断边有没有流量。 cpp 阅读全文
posted @ 2018-12-29 20:51 Qihoo360 阅读(142) 评论(1) 推荐(0) 编辑
摘要: "题目链接" 首先,这题我是没A的。。~~太毒瘤了~~ 题目本身不难,都是$Splay$的基操,但是细节真的容易挂。 调了好久自闭了,果断放弃。。 希望本节目停更。 放上最终版本 cpp include include define INF 2147483647 define lc t[u].ch[ 阅读全文
posted @ 2018-12-29 19:20 Qihoo360 阅读(135) 评论(2) 推荐(0) 编辑
摘要: "题目链接" 最大权闭合图模型, "参考" 具体做法是从源点向每个实验连一条流量为这个实验的报酬的边,从每个实验向这个实验需要的所有器材各连一条流量为$INF$的边,再从每个器材向汇点连一条流量为这个器材的费用的边。 然后跑出最小割(即最大流),用所有的报酬和减去这个最小割就行。 不知道为什么我的$ 阅读全文
posted @ 2018-12-22 10:43 Qihoo360 阅读(142) 评论(1) 推荐(0) 编辑
摘要: "题目链接" 第四题。 初看题目很懵,~~网络流这么厉害的吗,~~毫无头绪去看题解。。 所以这和网络流有什么关系呢? 把规则用二进制保存下来,然后跑最短路救星了。 在线跑,离线连边太慢了。 (以后干脆不管什么题直接开100W,Re变成Wa调了我好久 阅读全文
posted @ 2018-12-20 20:25 Qihoo360 阅读(116) 评论(1) 推荐(0) 编辑
摘要: "题目链接" 这不是裸的二分图匹配吗? 而且匈牙利算法自带记录方案。。 但既然是网络流24题,那就用网络流来做吧。 具体就是从源点向左边每个点连一条流量为1的边,两边正常连边,流量都是一,右边所有点向汇点连一条流量为1的边,然后跑$Dinic$就行了。 怎么记录方案?枚举左边所有点连的所有边,如果剩 阅读全文
posted @ 2018-12-17 18:46 Qihoo360 阅读(207) 评论(2) 推荐(0) 编辑
摘要: "题目链接" 突然发现Dinic很好写诶。。 第一次数组开小了,玄学$WA$,~~what?数据范围描述有误?~~ 分层图,每天为一层。 把上一天的每个空间站向这一天连一条流量为inf的边,表示可以原地不动。 把一个周期内上一天上一个和这一天这一个连一条流量为这艘太空船的容量的边,表示去下一站。 然 阅读全文
posted @ 2018-12-15 21:56 Qihoo360 阅读(177) 评论(1) 推荐(0) 编辑
摘要: "题目链接" $Splay$先练到这吧(好像还有道毒瘤的维护数列诶,算了吧) 记录下光标的编号,维护就是$Splay$基操了。 另外数据有坑,数据是$Windows$下生成了,回车是'\n\r',我就被坑了。 阅读全文
posted @ 2018-12-14 22:11 Qihoo360 阅读(227) 评论(1) 推荐(0) 编辑
摘要: "题目链接" debug了$N$天没debug出来,原来是找后继的时候没有pushdown。。。 ~~众所周知,~~,Splay中每个编号对应的节点的值是永远不会变的,因为所有旋转、翻转操作改变的都是父节点和子节点的指针。 于是记录每个数在$Splay$中的位置,然后按大小升序排序,每次把第$i$个 阅读全文
posted @ 2018-12-08 14:42 Qihoo360 阅读(185) 评论(0) 推荐(0) 编辑
摘要: $\Huge{\color{blue}{AFO}}$ 哎,还是忍痛写一下吧。 Day 1 讲了一下注意事项,写了下模板,把上次考试手写的$Splay$ debug出来了。。 ~~还有GT~~ Day0 上午考了一场,下午改题,写模板,讲注意事项,然后就没了。 Day1 先%了%$ych$巨佬,吸点欧 阅读全文
posted @ 2018-11-16 15:14 Qihoo360 阅读(359) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 可持久化并查集,就是用可持久化线段树维护每个版本每个节点的父亲,这样显然是不能路径压缩的,否则我们需要恢复太多状态。 但是这并不影响我们启发式合并,于是,每次把深度小的连通块向深度大的上并就好了。 cpp include define re register inline int re 阅读全文
posted @ 2018-11-09 15:24 Qihoo360 阅读(187) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 这种求方案数的题一般都是$dp$吧。 注意到范围里$k$和$n$的范围一样大,$k$是完全可以更大的,到$n$的平方级别,所以这暗示了我们要把$k$写到状态里。 $f[i][j]$表示前$1$~$i$的排列逆序对数为$j$的方案数。 现在考虑把$i$插入到$i 1$的排列里。 $i$肯 阅读全文
posted @ 2018-11-03 17:06 Qihoo360 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 先考虑一个$O(N^2)$做法。 设选的两个点为$x,y$,则一定可以将树分成两个集合$A,B$,使得$A$集合所有点都去$x$,$B$集合所有点都去$y$,而这两个集合的分界点就是树上的一条边。于是考虑枚举断哪条边,然后对两边分别跑一遍带权树的重心,统计答案加起来取最小值就行了。 现在进行优化,求 阅读全文
posted @ 2018-10-29 16:23 Qihoo360 阅读(455) 评论(0) 推荐(0) 编辑
摘要: RT 如果$NOIP$出成绩后此帖不在了,说明我的退役时间延期至了省选后 阅读全文
posted @ 2018-10-26 22:11 Qihoo360 阅读(621) 评论(4) 推荐(0) 编辑
摘要: "题目链接" ~~位运算+$DP$=状压$DP$?(雾~~ $a\&b =min(a,b)$在集合的意义上就是$a\subseteq b$ 所以对每个数的子集向子集连一条边,然后答案就是这个$DAG$的最长链了,跑一遍拓扑排序就行了。 直接连边的复杂度是$O(n^2)$,显然只能拿$60'$。 题解 阅读全文
posted @ 2018-10-23 10:09 Qihoo360 阅读(163) 评论(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 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 每个点的出度都为$1$,很容易看出是基环外向树~~然而并没有用~~ 贪心+拓扑排序,如果一个点不选,则他的儿子一定要选。 最后还剩下环,随便找个位置拆开就行了。 cpp include define Open(s) freopen(s".in","r",stdin);freopen(s".out", 阅读全文
posted @ 2018-10-20 17:06 Qihoo360 阅读(252) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 并查集+贪心当然是可以做的。 但我用二分图+二分答案。 二分一个$mid$,删去所有边权小于等于$mid$的边,看有没有奇环存在,如果存在,则$mid$不行。 阅读全文
posted @ 2018-10-19 09:19 Qihoo360 阅读(212) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 先$Tarjan$缩点,记录每个环内的最大值和最小值。 然后跑拓扑排序,$Min[u]$表示到$u$的最小值,$ans[u]$表示到$u$的答案,$Min$和$ans$都在拓扑排序中更新和传递。 最终答案就是$ans[n]$。 $100$多行敲着~~心累~~ cpp include i 阅读全文
posted @ 2018-10-19 08:20 Qihoo360 阅读(203) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意:给一张无向图和$M$个询问,问$u,v$之间的路径的必经之点的个数。 对图建出圆方树,然后必经之点就是两点路径经过的原点个数,用$(dep[u]+dep[v] dep[LCA] 2)/2+1$即可算出。 什么你不知道圆方树~~(说的跟我知道一样)~~ $APIO2018$出来的黑 阅读全文
posted @ 2018-10-18 08:22 Qihoo360 阅读(153) 评论(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 阅读(172) 评论(0) 推荐(0) 编辑
You're powerful!