Processing math: 1%

01 2019 档案

摘要:"题目链接" Tree Ⅱ=【模板】LCT+【模板】线段树2。。 分别维护3个标记,乘的时候要把加法标记也乘上。 还有就是模数的平方刚好爆int,所以开昂赛德int就可以了。 我把初始化放在连边的那个循环里了,而那个循环是1n 1的,所以第n个没初始化到。。WA了好久。 阅读全文
posted @ 2019-01-29 11:56 Qihoo360 阅读(185) 评论(0) 推荐(0)
摘要:"题目链接" 把每个点和能跳到的点连边,于是就构成了一个森林。 查询操作就是该点到根的路径长度,修改操作就相当于删边再重新连边。 显然是LCT的强项。 查询时access(x),splay(x),然后输出size[x]就行了。 修改时access(x),splay(x),然后双向断掉 阅读全文
posted @ 2019-01-29 09:59 Qihoo360 阅读(147) 评论(0) 推荐(0)
摘要:"题目链接" 做出二维ST表,然后O(n^2)扫一遍就好了。 cpp include include include using namespace std; const int MAXN = 1010; const int MAXLOGN = 12; int Max[MAXN][MAXN] 阅读全文
posted @ 2019-01-28 20:04 Qihoo360 阅读(189) 评论(0) 推荐(0)
摘要:"题目链接" LCT裸题。。 阅读全文
posted @ 2019-01-28 19:09 Qihoo360 阅读(129) 评论(0) 推荐(0)
摘要:"题目链接" RT。 "FlashHu巨佬的博客" cpp include define R register int define I inline void define lc c[x][0] define rc c[x][1] const int MAXN = 300010; inline 阅读全文
posted @ 2019-01-28 17:51 Qihoo360 阅读(221) 评论(0) 推荐(0)
摘要:"题目链接" 斜率优化+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 阅读(179) 评论(0) 推荐(0)
摘要:"题目链接" 假设有3a,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 阅读(153) 评论(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 阅读(110) 评论(0) 推荐(0)
摘要:"题目链接" 一开始我的dp方程列错了,其实也不能说列错了,毕竟我交上去还是把暴力的分都拿到了,只是和题解的不一样,然后搞半天没搞出来去看题解,又看不懂,对不上,原来状态设置不一样~~自闭了~~。 f[i]=all sum[j] dis[j] (sum[i] sum[j]) dis[i] $ 阅读全文
posted @ 2019-01-27 20:59 Qihoo360 阅读(150) 评论(0) 推荐(0)
摘要:"题目链接" 简单网络流。 源点向蜥蜴连流量为1的边。 能跳出去的点向汇点连流量为INF的边。 把每个点拆成2个点,O(n^4)枚举两两点,如果距离小于等于d,就互连流量为INF的边。 然后跑dinic就行了。 cpp include include include in 阅读全文
posted @ 2019-01-27 14:54 Qihoo360 阅读(148) 评论(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 阅读(269) 评论(0) 推荐(0)
摘要:"题目链接" g[i][j]表示不走在i\text{~}j时间段中会关闭的港口(哪怕只关1天)从1m的最短路。 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 阅读(134) 评论(0) 推荐(0)
摘要:"题目链接" 又调了我两个多小时~~巨亏~~ 直接O(n^4)枚举4个点显然不行。 数据范围提示我们需要一个O(n^2)的算法。 于是O(n^2)枚举对角线,然后在这两个点两边各找一个点使其和对角线构成的三角形面积最大,也就是叉积的绝对值最大。显然具有单调性,于是旋转卡壳维护。 阅读全文
posted @ 2019-01-27 10:15 Qihoo360 阅读(170) 评论(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 阅读(157) 评论(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 阅读(160) 评论(0) 推荐(0)
摘要:"题目链接" 把线段以斜率为第一关键字,截距为第二关键字升序排序。 然后维护一个单调栈,保证栈中两两线段的交点的x坐标单调上升就行了。栈中的线段即为所求。 cpp include include using namespace std; const int MAXN = 50010; struc 阅读全文
posted @ 2019-01-26 09:15 Qihoo360 阅读(157) 评论(0) 推荐(0)
摘要:"题目链接" 嗯,毒瘤题。 首先有一个结论,就是最小矩形一定有条边和凸包重合。脑补一下就好了。 然后枚举凸包的边,用旋转卡壳维护上顶点、左端点、右端点就好了。 上顶点用叉积,叉积越大三角形面积越大,对应的高也就越大。两边的点用点积,点积越大投影越大。 然后就是精度问题。这种实数计算最好不要直接用比较 阅读全文
posted @ 2019-01-25 21:31 Qihoo360 阅读(218) 评论(2) 推荐(0)
摘要:"题目链接" 旋转卡壳模板题把。 有时间再补总结吧。 阅读全文
posted @ 2019-01-24 20:31 Qihoo360 阅读(148) 评论(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 阅读(240) 评论(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 阅读(171) 评论(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 阅读(128) 评论(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 阅读(134) 评论(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 阅读(164) 评论(2) 推荐(0)

You're powerful!
点击右上角即可分享
微信分享提示