摘要: 老C的键盘题解 和 "这一道" 几乎一模一样, 代码: cpp include define ll long long define lc (x'9'){if(ch==' ') F= 1; ch=getchar();} while(ch ='0'&&ch 1; if(lc=1; j) for(int 阅读全文
posted @ 2019-10-24 16:40 lsoi_ljk123 阅读(106) 评论(0) 推荐(0) 编辑
摘要: SAO题解 不知道为什么,我第一次想到的式子竟然就是正解式子; 设$f[x][i]$为x点在排在子树中权值第i个的方案数: 对$\forall v \in son[x]$,x状态为:$f[x][j]$,v状态为:$f[v][k]$ 若$w[v] define ll long long using n 阅读全文
posted @ 2019-10-24 16:37 lsoi_ljk123 阅读(367) 评论(0) 推荐(0) 编辑
摘要: Gem 气垫车题解 ~~假~~紫题, 主要难度在证明权值数 using namespace std; const int N=1e4+6; int n,t1,t2,cnt=0,head[N],f[N][4],minx; struct edge{int nxt,to;}e[N'9'){if(ch==' 阅读全文
posted @ 2019-10-24 08:16 lsoi_ljk123 阅读(97) 评论(0) 推荐(0) 编辑
摘要: Karen and Supermarket题解 每个物品只对一个物品有依赖性,所以是一颗树的结构; 但是显然,$b$的范围是$1 using namespace std; const int N=5006; int n,t,w,siz[N],c[N],d[N],cnt=0,head[N],f[N][ 阅读全文
posted @ 2019-10-24 08:11 lsoi_ljk123 阅读(95) 评论(0) 推荐(0) 编辑
摘要: [SDOI2016]游戏题解 这道题太恶心了,调了我整整一晚上, ~~结果发现是一个bi——错误,多多捂脸~~ 这道题比之前的题多了一个初始化和区间查询的操作, 主要是区间查询~~恶心~~ 因为要区间查询,所以必须维护区间最低点, 修改和查询操作被改得面目全非。 我们要维护的话,必须从现值,子值,新 阅读全文
posted @ 2019-10-23 16:54 lsoi_ljk123 阅读(131) 评论(0) 推荐(0) 编辑
摘要: Segment题解 对于初学李超树的我简直是噩梦,它比之前的模板题(上一篇博客)恶心在所有线段不再覆盖全区间。 我们要分情况讨论了: 对于被插入线段包含的区间,我们仍像之前一样操作; 部分包含的,像普通线段树一样分割插入线段的区间就行了,并不要修改。 总代码: 阅读全文
posted @ 2019-10-23 08:24 lsoi_ljk123 阅读(123) 评论(0) 推荐(0) 编辑
摘要: Blue Mary开公司题解 李超树模板题啦,所有线段覆盖全区间,而且还是单点查询,太良心了。 什么?你不会李超树,看看我的 "这篇博客" 吧 本来不想写注释的,但为了自己以后能看懂,还是打一打吧。 $line[x]:$存的是第$x$条线段的斜率和截距,$tag[x]:$存的是线段树上点$x$的优势 阅读全文
posted @ 2019-10-23 08:18 lsoi_ljk123 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 李超树学习笔记 这东西有点恶心啊,搞了好久才懂一点。 1.有什么用? 对于一个区间$[l,r]$每个点可以取的权值符合表达式:$y=kx+b$的线段 有k条线段覆盖在所有点上,可以动态插入线段,求每个时刻某个点或某个区间的最大/最小值。 它的思想是:尽可能不将 优势线段 下传, 2.什么叫优势线段? 阅读全文
posted @ 2019-10-22 21:28 lsoi_ljk123 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 归程题解 不知道我是看错了还是咋的, 步行可以走没有积水的边, 这样接下来他就可以步行经过有积水的边 我看到这一句话,总以为只能走有积水的边, ~~又屈辱看题解~~ 咳咳,使步行总长最小,我们可以考虑预处理出每个点到1的最短路, 看看车子通过没积水的边能到哪些点,输出最小值, 这怎么搞? 来一波Kr 阅读全文
posted @ 2019-10-21 20:11 lsoi_ljk123 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 超级钢琴题解 将序列之和转化为$sum[r] sum[l 1]$,固定右端点,左端取最大值 用堆丢出一个丢进两个就行了, 阅读全文
posted @ 2019-10-20 19:20 lsoi_ljk123 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 城市题解 3s $O(n^{2})$过5000怎么也说是没问题的吧,~~不想想啊,就让脑子锈吧~~ 也并不需要什么信仰, 直接暴力枚举删那条边,然后选择连起来最小的点,跟删后两部分的直径取max就行了。 cpp include using namespace std; const int N=500 阅读全文
posted @ 2019-10-20 19:13 lsoi_ljk123 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 寿司晚宴题解 先理解一下题目吧: 两人所选数的质因数集合不能有交集, 22$的大质因子, 我们可以按大质因子排序,想同的大质因子里用,用dp表示选了它的情况,用dp2表示没选的情况,然后转移, 不同的时候就继承之前的值. 阅读全文
posted @ 2019-10-20 19:01 lsoi_ljk123 阅读(95) 评论(0) 推荐(0) 编辑
摘要: GT考试 说实在话,这题在湖南省选中实属简单, ~~但我就是太弱了不会~~ 我们用kmp预处理出从i位匹陪到j位的方案数g[i][j] 然后就可以矩阵优化了。 cpp include using namespace std; const int N=26; int n,m,k,t=0,ans=0,n 阅读全文
posted @ 2019-10-20 17:43 lsoi_ljk123 阅读(193) 评论(0) 推荐(0) 编辑
摘要: Peaks题解 这是一道经典的Kruskal重构树的题目,还是得好好写写, 题目中 每组询问询问从点v开始只经过困难值小于等于x的路径所能到达的山峰中第k高的山峰 中 从点v开始只经过困难值小于等于x的路径 难以实现 所以我们要借助Kruskal重构树的黑科技, 建一颗Kruskal重构树, 如有不 阅读全文
posted @ 2019-10-18 07:39 lsoi_ljk123 阅读(168) 评论(0) 推荐(0) 编辑
摘要: Kruskal重构树学习笔记 为做 "这道题" ,特意去学了一波Kruskal重构树。 以下写写学习心得: 首先像Kruskal一样按权值排序, 不过将Kruskal生成树的并查集合并操作改为了 新建点,为合并的两点的父亲,点权为加入的边的权值的操作 ~~作者不要脸地剽图了~~ 变为: 有一些性质: 阅读全文
posted @ 2019-10-17 22:43 lsoi_ljk123 阅读(181) 评论(0) 推荐(0) 编辑
摘要: Speed Dial题解 和 "这道题" 差不多: 不过主要要想到建一棵Trie树,就成了树型DP了。 直接放代码吧: cpp include define ll long long using namespace std; const int N=506,K=12; int n,k,p=1,t,l 阅读全文
posted @ 2019-10-17 19:49 lsoi_ljk123 阅读(101) 评论(0) 推荐(0) 编辑
摘要: Riv 河流题解 从 "这道题" 来的,做法差不多: 我们可以将题目转化一下: 求出原来全送到0点的费用sum,再看看多建k个伐木场最多能减少多少费用, 设$f[i][j][k]:$为在i节点,最近的伐木场离i的距离为(祖辈里),子树内建k个伐木场的最大能减少的费用: 我们考虑每个点i对伐木场x的贡 阅读全文
posted @ 2019-10-17 19:43 lsoi_ljk123 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 线段树合并学习笔记 学了一波,其实类似于fhq treap, 直接贴代码吧: 至于为什么总复杂度是$O(n log n)$: 在某一机房大佬为我讲解后总算明白了?: 其实线段树合并是O(总结点数)的,但一般开始时每一刻线段树(动态开点)有$log n$个节点,便是$O(n log n)$的了, 为什 阅读全文
posted @ 2019-10-16 22:25 lsoi_ljk123 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 谈笑风生题解 怎么说呢,这道题出得倒挺好, 首先明确只有在一条链上才会有贡献 , 我们要分情况讨论: 1.b在a下:每一个b的子树(除b外)都会有贡献,所以我们对每一个深度的b都加上siz[x] 1,贡献为深度为[deep[a],deep[a]+k 1]的权值之和; 2.a在b下:每一个a的子树(除 阅读全文
posted @ 2019-10-16 22:05 lsoi_ljk123 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 最大异或和题解 其实很简单了, xor 分位操作 动态维护 只可能是可持久化0、1 trie 树了吧 然后每次加入新点便更新版本, 将查询$\sum_{i=p}^{N} a[i] xor X(p \in [l,r])$,(这里的$\sum!=+, = xor$), 变为$(\sum_{i=1}^{N 阅读全文
posted @ 2019-10-16 20:01 lsoi_ljk123 阅读(128) 评论(0) 推荐(0) 编辑
摘要: Sonya and Ice Cream题解 这道题是一位一遍A了快餐店的巨佬推荐给我的,说快餐店巨简单,不过还是先做一下简化版,就是这道题(~~照顾我太弱了~~) 好了回到这一题, 首先,这条路径一定在直径上(若有一段不是直径,一定比直径的长) ~~巨佬说随便画图理解一下就行了~~ 然后我们可以二分 阅读全文
posted @ 2019-10-16 18:03 lsoi_ljk123 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 拯救莫莉斯题解 实际上是水题啦, 观察数据发现,$m n using namespace std; const int N=56,M=147; int n,m,t,p,g[N][M],f[N][M][M],q[N][M][M],o[M],ans1=2e9,ans2=2e9; inline int r 阅读全文
posted @ 2019-10-14 22:36 lsoi_ljk123 阅读(92) 评论(0) 推荐(0) 编辑
摘要: Looking for Order题解 倒是一道简单题, 状压dp, 没什么说的, cpp include using namespace std; const int N=17e6+7,M=26; int n,p,f[N],dis[M][M],x[M],y[M],inf,w,t,pre[N],q; 阅读全文
posted @ 2019-10-14 22:17 lsoi_ljk123 阅读(149) 评论(0) 推荐(0) 编辑
摘要: Palindrome Degree题解 其实是道水题, 但是我太弱了!!! 开始想着如何判断后缀是回文, ~~屈辱~~看题解后发现, 只要判断前缀,然后判断后缀的反向是否与前缀相等即可, 但是我居然将kmp与回文弄混了,直接判前后缀相不相等, 太弱了!!~~败犬的哀嚎~~ 阅读全文
posted @ 2019-10-14 22:07 lsoi_ljk123 阅读(114) 评论(0) 推荐(0) 编辑
摘要: Bindian_Signalizing题解 $O(n)$做法有点恶心, 将环变链的操作我为什么没想到,咕咕咕。 首先将环变链,以最高的为第一个,所有有贡献的就在$1~n+1$之间 然后我们处理出每个点可以拓展的区间(小于等于它),那么每个点可以对与它相等的点和区间两边的点做贡献, 但注意,当两边是同 阅读全文
posted @ 2019-10-14 22:00 lsoi_ljk123 阅读(128) 评论(0) 推荐(0) 编辑