随笔分类 -  bzoj

摘要:"传送门" 这个题好难卡啊。 看到这种题自然会想到字符串hash是不是,但是对于每次操作造成的影响需要$O(n)$的时间去更新,自然是不优的 可以发现这个更新可以用数据结构来维护,对于每个hash值开一颗线段树之类的支持区间修改的数据结构 然后就可以愉快的解决了 注意: 1、hash值请使用map和 阅读全文
posted @ 2019-02-18 13:51 蒟蒻--lichenxi 阅读(236) 评论(0) 推荐(0) 编辑
摘要:"传送门" 可以知道一共最多只有3种情况:基环树,环,自环 先考虑最少杀死: 首先发现入度为0的点一定能活下来,那么入度为0的点指向的人一定会死,他指向的人指向的人如果入度为0就一定能活下来(其实是不一定的,但是要保证死的人最少) 这样就可以拓扑排序写一下了,剩下的就是环的情况了,能活下来的显然是$ 阅读全文
posted @ 2019-02-17 14:54 蒟蒻--lichenxi 阅读(158) 评论(0) 推荐(0) 编辑
摘要:"传送门" 提示:被删掉的点也要算点对,$(i,j)$和$(j,i)$是不同的点对 显然找出割点就行了,记下size,对于各子树统计一下答案 代码: c++ include include include using namespace std; void read(int &x) { char c 阅读全文
posted @ 2019-02-17 11:48 蒟蒻--lichenxi 阅读(151) 评论(0) 推荐(0) 编辑
摘要:"传送门" 异常激动,跑了bzoj的rank2 这个题一共有两个要求,先考虑第二个要求,可以知道每一次修改都会导致答案账户余额+2/ 2 所以修改方案是唯一的,可以$O(1)$算出来 然后考虑第一个要求,显然有结论:如果当前值为负,你可以修改当前位置之前的一个负号为正号,并且修改当前位置之后的一个正 阅读全文
posted @ 2019-02-16 17:35 蒟蒻--lichenxi 阅读(140) 评论(0) 推荐(0) 编辑
摘要:"传送门" 读入输出题,看样例解释得出结论,具体原因不详 代码: 阅读全文
posted @ 2019-02-16 16:07 蒟蒻--lichenxi 阅读(92) 评论(0) 推荐(0) 编辑
摘要:"传送门" 很容易发现和置换有关系,然后就可以推出在一个置换内,用代价最小的那个去做就行了 但是这不一定是最优的(我一开始也只考虑了这个,悲催的wa了) 看了篇题解发现还有一种情况没考虑 就是你可以选择用全局代价最小的交换到一个置换内,可以知道交换置换内代价最小的是最优的,然后做完再交换出来就行了 阅读全文
posted @ 2019-02-16 15:46 蒟蒻--lichenxi 阅读(145) 评论(0) 推荐(0) 编辑
摘要:"传送门" 很显然的结论题啊,只要图中有环就一定可行,但是题目不保证联通,所以可能有多个联通块,需要分别判,dfs和并查集都行 洛谷要求输出方案,这个就把环找出来弄一弄就好了 代码(无输出方案): 阅读全文
posted @ 2019-02-16 14:08 蒟蒻--lichenxi 阅读(115) 评论(0) 推荐(0) 编辑
摘要:"传送门" 阶梯nim模型 代码: 阅读全文
posted @ 2019-02-16 12:59 蒟蒻--lichenxi 阅读(134) 评论(0) 推荐(0) 编辑
摘要:"传送门" sb单调栈,唯一要注意的是高度相同的时候不需要更新答案 代码: c++ include include include using namespace std; void read(int &x) { char ch; bool ok; for(ok=0,ch=getchar(); !i 阅读全文
posted @ 2019-02-16 12:04 蒟蒻--lichenxi 阅读(79) 评论(0) 推荐(0) 编辑
摘要:"传送门" 很显然看的出是中位数吧,那只要动态维护一下中位数和区间和就差不多了吧 平衡树太难写,我选择权值线段树 洛谷的这个题要输出方案,但是不打紧 代码(bzoj): c++ include include include using namespace std; void read(int &x 阅读全文
posted @ 2019-02-16 12:02 蒟蒻--lichenxi 阅读(157) 评论(0) 推荐(0) 编辑
摘要:"传送门" 有个非常显然的技巧,就是你可以反向建图,并且将图上下翻转,如果$i$能到其他所有道路,其他所有的道路也能到$i$ 这有什么好处呢,这就可以使$i$可以非常方便的转移到$i+1$ 我们设$f[i]$为$i$左边至少要建的公路数,然而$f[i]=i 1 lis$ 所以只要求lis就行了,树状 阅读全文
posted @ 2019-02-15 17:37 蒟蒻--lichenxi 阅读(111) 评论(0) 推荐(0) 编辑
摘要:"传送门" 很显然的结论,$(x,y)$与$(y,x)$关于$y=x$对称 那么就可以知道所有点一定是在直线的一侧(暂时不考虑移动石子的代价),这样得出来的就是最小的篱笆长度 有一些点可以不需要动,那么第二问分四种情况讨论即可 代码: c++ include include include incl 阅读全文
posted @ 2019-02-15 13:40 蒟蒻--lichenxi 阅读(144) 评论(0) 推荐(0) 编辑
摘要:"传送门" 很显然有一个结论:最大不过1,最小不过 1 然后dp,设$f[i][j]$为满足前$i$个不下降,当前放的是$j 2$,转移就比较好想了 具体方程看代码吧,终于有一个自己会写的题了 代码(写了好多没用的min): c++ include include include include u 阅读全文
posted @ 2019-02-14 17:36 蒟蒻--lichenxi 阅读(126) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这个题比较水,很容易看出 1、最短路小于d,直接看奇偶性就好了 2,最短路大于d,puts("NIE\n"); 主要就是判奇偶性的问题,将每个点拆成奇点和偶点跑bfs就行了 在线需要开short,不然空间会炸,离线就没有这个忧虑 代码: c++ include include inclu 阅读全文
posted @ 2019-02-14 16:42 蒟蒻--lichenxi 阅读(194) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这道题要将图形转化为字符串,可以发现,只要角相同,边长相同就存在一条对称轴,所以只要转换成字符串S,倍长为SS,拿反串匹配一下就好了。 代码: c++ include include include include using namespace std; void read(int & 阅读全文
posted @ 2019-02-14 15:52 蒟蒻--lichenxi 阅读(176) 评论(0) 推荐(0) 编辑
摘要:"传送门" 线段树套线段树会TLE+MLE! 树状数组不仅空间小,常数也小(我写的除外) 思考一下求逆序对需要的条件,树套树就过了 代码: c++ include include include include using namespace std; void read(int &x) { cha 阅读全文
posted @ 2019-02-14 09:43 蒟蒻--lichenxi 阅读(88) 评论(0) 推荐(0) 编辑
摘要:"传送门" 虚树裸题,建完虚树上tree dp就好了 代码: 阅读全文
posted @ 2019-02-13 13:53 蒟蒻--lichenxi 阅读(122) 评论(0) 推荐(0) 编辑
摘要:"传送门" 最小圆覆盖的板子题,和 "bzoj1336" 一样,双倍经验题 代码: 阅读全文
posted @ 2019-01-28 11:45 蒟蒻--lichenxi 阅读(122) 评论(0) 推荐(0) 编辑
摘要:"传送门" 期望$O(n)$的神奇算法 代码: 或者也可以选择put("nan"); 阅读全文
posted @ 2019-01-28 11:42 蒟蒻--lichenxi 阅读(83) 评论(0) 推荐(0) 编辑
摘要:"传送门" 这个题我改了好久呢。(最终居然是挂在常识上,我的算法完全没写错) 算是计算几何的第一步啦 这个题很容易想到四边形的四个点在凸包上,但是暴力枚举复杂度依然感人 可以考虑先枚举对角线,那么另外两个点就满足单峰,可以用三分优化,据说这样写卡卡常能过 然后发现枚举对角线的过程中,另外两个点也是跟 阅读全文
posted @ 2019-01-26 17:29 蒟蒻--lichenxi 阅读(137) 评论(0) 推荐(0) 编辑