上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 29 下一页
摘要: 看成网络流建图想了好久... 实际上5个是可以状压的 设f[i][k]为到第i个围栏状态为k的方案数,因为考虑到重复,设g[i][k]记录i开始,状态为k的孩子有几个 状态转移很好想:f[j][k]=max(f[j 1][(k&15) include using namespace std; con 阅读全文
posted @ 2018-04-21 09:58 lokiii 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 参考:http://www.cnblogs.com/mmlz/p/4456547.html 枚举根,然后做树形dp,设f[i][1]为i是蓝线中点(蓝线一定是父子孙三代),f[i][0]为不是,转移很好想,但是这是n方的 考虑优化换根,记录最小值和最大值就能换根了 cpp include inclu 阅读全文
posted @ 2018-04-21 08:12 lokiii 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 用manacher找出本质不同的回文子串放在SAM上跑 阅读全文
posted @ 2018-04-20 16:21 lokiii 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 首先看这个得分方式,容易发现就相当于分k段,每段的值和两两乘起来。 这样就很容易列出dp方程:设f[i][j]为到j分成分成i段,转移是 $$ f[i][j]=max { f[k][j]+s[k] (s[j] s[k]) } $$ 然后显然这个可以斜率优化,随便推一推式子,假设k选p大于选q,那么 阅读全文
posted @ 2018-04-18 14:52 lokiii 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 参考:http://hzwer.com/6888.html 把k条道路权值设为0,和其他边一起跑MST,然后把此时选中的其他边设为必选,在新图中加上必选变缩成k个点,把所有边重标号,枚举k跳边的选取情况,和其他边做MST,建出树,k条边的权值在树上取min cpp include include i 阅读全文
posted @ 2018-04-18 10:38 lokiii 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 第一次听说斯坦纳树这种东西 先dfs预处理出来dis[i][j][k]表示格子(i,j)向k方向转移能到哪,记忆话搜索预处理,注意如果有环的话特判一下 设f[i][j][x][y]表示复合机器人i j在(x,y)生成需要推得步数,用spfa转移,因为时间比较紧所以优化spfa,把能转移的放进一个队列 阅读全文
posted @ 2018-04-16 16:04 lokiii 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 可并堆就可以,但是想复健一下主席树。 考虑枚举管理者,然后选忍者的时候在子树中贪心的从小到大选。做成dfs序就是选区间内和小于等于k的最多点。可以用主席树,查询的时候在主席树上二分即可 这里注意,为了方便起见,离散化的时候即使值相同也离散成不同值,这样可以保证主席树叶子结点的size最大为1,方便二 阅读全文
posted @ 2018-04-16 09:56 lokiii 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 关于没有忍者的区间用线段树判就好啦 然后把剩下的区间改一改:l/r数组表示最左/最右没被删的点,然后删掉修改后的左边大于右边的;l升r降排个序,把包含完整区间的区间删掉; 然后设f/g数组表示i前/后的最少需要忍者数,这个贪心来转移即可,就是把忍者放在区间的最右/左位置 然后对于每个r判断。为什么是 阅读全文
posted @ 2018-04-15 22:08 lokiii 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 我是智障 3,读优写错了调了半天没发现= = 虽然是个最短路却有网络流一般的神建图啊。 首先发现在拐角处转弯是最优的,于是先离散化,然后矩形的四个顶点向距离它最近的上下左右点连边,跑spfa即可。 就是难写啊,还要判断无解:st在矩形里;dis[t]=inf 阅读全文
posted @ 2018-04-15 17:04 lokiii 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 画图可知,每一行的状态转移到下一行只有两种:奇数列不变,偶数列^1;偶数列不变,奇数列^1 所以同一行相邻的变革染色格子要放到同一个并查集里,表示这个联通块里的列是联动的 最后统计下联通块数(不包括第一行的这一列已经被染色的情况)快速幂一下即可。 cpp include include includ 阅读全文
posted @ 2018-04-15 09:31 lokiii 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 参考:https://blog.csdn.net/qpswwww/article/details/45334033 讲的很清楚 做法比较像旋转卡壳但是具体是不是我也不清楚.. 首先知道只要求出每种方案在圆上和圆中的和就可以。 注意到题目中有一个限制:“保证任何三个房子都不在同一条直线 上,任何四个房 阅读全文
posted @ 2018-04-14 18:52 lokiii 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 仔细想想好像没学过斜率优化.. 很容易推出状态转移方程\\( f[i]=max\{f[j]+a(s[i] s[j])^2+b(s[i] s[j])+c\} \\) 然后考虑j的选取,如果选j优于选k,那么: $$ f[j]+a(s[i] s[j])^2+b(s[i] s[j])+c f[k]+a(s 阅读全文
posted @ 2018-04-14 16:20 lokiii 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 我是智障系列。用了及其麻烦的方法= =其实树形sp就能解决 设直径长度+1为len(环长) 首先k=1,直接连直径两端就好,答案是2\ n len 然后对于k=2,正常人的做法是树形dp:先求直径,然后把树的直径上的所有边权标为 1,再求一次直径设新直径+1为len2,答案是2\ (n−1)−len 阅读全文
posted @ 2018-04-14 11:27 lokiii 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 先把水泥路建生成树,然后加鹅卵石路,这里加的鹅卵石路是一定要用的(连接各个联通块),然后初始化并查集,先把必需的鹅卵石路加进去,然后随便加鹅卵石路直到k条,然后加水泥路即可。 注意判断无解 cpp include include using namespace std; const int N=20 阅读全文
posted @ 2018-04-13 22:07 lokiii 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 写题五分钟读题两小时系列…… 看懂题的话不算难,然而我去看了大佬的blog才看懂题…… 题目大意是:一个原字符串,其中有一种通配符,合法串的定义是这个串(不含通配符))可以匹配原串并且这个串最多分成k段就能使每一段字典序单调不降。求在所有合法串中字典序第r大的。 设f[i][j][k]表示第i个字符 阅读全文
posted @ 2018-04-13 21:08 lokiii 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 参考:https://blog.csdn.net/clover_hxy/article/details/70767653 人生第一次交互题...不是很难但是思维和传统题差别挺大的(以及并不会本地测试= =),详见参考blog和代码吧 阅读全文
posted @ 2018-04-13 19:37 lokiii 阅读(812) 评论(0) 推荐(0) 编辑
摘要: 用权值线段树会容易一些并快一些,但是想复健一下splay所以打了splay 然后果然不会打了。 解题思路: 首先把家和办公室在同一侧的提出来直接加进答案里; 对于k=1,直接选所有办公室和家的中位数即可,因为显然如果选的点两边的办公室和家的点不一样多的话,显然可以向多的一侧移动来使得总路程减少; 对 阅读全文
posted @ 2018-04-13 17:16 lokiii 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 居然要对不同的数据写不同的dp= = 首先记得开long long,\ include include using namespace std; const int N=2005,inf=1e9; int n,a,b; long long s[N],bt,ans; int read() { int 阅读全文
posted @ 2018-04-13 08:19 lokiii 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 明明是个最短路却有网络流一样的神建图= A = 首先要是暴力建图的话最坏有O(nm)条边。所以优化建图。 考虑分块思想,设bs=sqrt(n),对于p大于bs的,直接连边即可,最多有sqrt(n)条,注意边权不全是1了,因为要从b走过去;对于p小于等于bs,先把每栋楼建sqrt个辅助点,然后这些辅助 阅读全文
posted @ 2018-04-12 10:37 lokiii 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 参考:https://blog.csdn.net/FAreStorm/article/details/49200383 没有技术含量但是难想难写,枚举情况图详见参考blog~~懒得画了~~ bzoj蜜汁TTTTTTTTTTTTTTTLE upd:bzoj数据有问题,快读GG cpp include 阅读全文
posted @ 2018-04-11 22:05 lokiii 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 数组若干+手动二分一个的算法,bzoj rank8 ===============================废话分割线=================================== 我我我我我!一定要说一下我的心路历程!我只用了几个数组和一个手动二分!在洛谷和bzoj都过了所以应该是对 阅读全文
posted @ 2018-04-11 17:33 lokiii 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 明明优化了spfa还是好慢…… 因为只能取一次值,所以先tarjan缩点,把一个scc的点权和加起来作为新点的点权,然后建立新图。在新图上跑spfa最长路,最后把酒吧点的dis取个max就是答案。 阅读全文
posted @ 2018-04-11 11:24 lokiii 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 没有算法,但是要注意细节。 首先无解的情况,显然的是最小深度的叶子节点和最大深度的叶子节点的深度差大于1;还有一种比较难想,就是如果一个点的左右子树都有最大和最小深度的叶子节点,这样交换左右子树也不行。 答案比较容易,就是统计一下右子树size 左子树size的节点个数即可。 阅读全文
posted @ 2018-04-11 10:22 lokiii 阅读(145) 评论(0) 推荐(0) 编辑
摘要: ~~其实并不会分数规划~~ 因为要最大化 ans=总收益/总路程 ,所以考虑二分答案,找到一条 ans=0。建一张新图,(i,j)边权为w(i,j) d(i,j)\ ans,然后用Floyd在新图中检查是否有非负环即可。 阅读全文
posted @ 2018-04-11 09:20 lokiii 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 一眼做法,好处是好想好写坏处是常数大,容易被卡(bzoj loj 洛谷开O2 能AC,不开有90分…… 大概就是树剖之后维护线段树,在线段树的每个节点上上维护一个线性基,暴力\\( 60^2 \\)的合并儿子 对于每次查询,在树上跳重链,把这些区间的线性基暴力合并上,然后ans在合并之后的线性基上贪 阅读全文
posted @ 2018-03-28 15:56 lokiii 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 洛谷90,最后一个点死活卡不过去(也可能是我写的有问题? 比较暴力的做法,把询问带着标号建立AC自动机,用map存儿子。 然后用名字串在自动机上跑,以为是名或姓的子串就行所以把名和姓中间加个特殊字符拼起来即可。 注意trie的根最好设为1(now=1),然后把c[0][x]初始为1 cpp incl 阅读全文
posted @ 2018-03-28 09:55 lokiii 阅读(207) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-03-23 21:56 lokiii 阅读(3) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-03-22 22:01 lokiii 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 强烈安利:http://blog.csdn.net/qq_34637390/article/details/51313126 这篇讲标记讲的非常好,这个标记非常神奇…… 首先last表示扫描到last这个点了,val[x]表示x到last中的最小值,sum[x]表示last分别等于1,2,3.... 阅读全文
posted @ 2018-03-22 21:11 lokiii 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 只是想复健一下LCT没想到做了不得了的题……调了两天QAQ 题解是这么说的: 但是果然还不太理解……因为swap的前后问题调了好久,(所以一开始养成的习惯后面就不要再改啦…… 总之大概就是把对位置lct的操作映射到权值lct上,然后权值lct可以随便转没问题,只要位置lct不动就可以…… 注意rev 阅读全文
posted @ 2018-03-21 21:25 lokiii 阅读(250) 评论(0) 推荐(0) 编辑
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 29 下一页