wjyi

人这么弱,有什么资格颓废(ಥ _ ಥ)

  博客园  :: 首页  :: 新随笔  :: 联系 ::  :: 管理

2016年7月8日

摘要: 插头dp 感受: 我觉得重点是理解,算法并不是直接想出怎样由一种方案变成另一种方案。而是方案本来就在那里,我们只是枚举状态统计了答案。 看看cdq的讲义什么的,一开始可能觉得状态很多,但其实灰常简单 就像lyd说的,考插头dp的题目就是在考模板2333 (学这个之前连hash_map都没写过2333 阅读全文
posted @ 2016-07-08 20:27 wjyi 阅读(478) 评论(0) 推荐(0) 编辑

2016年7月3日

摘要: 4516: [Sdoi2016]生成魔咒 Description 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示。例如可以将魔咒字符 1、2 拼凑起来形成一个魔咒串 [1,2]。 一个魔咒串 S 的非空字串被称为魔咒串 S 的生成魔咒。 例如 S=[1,2,1] 时,它的生成魔咒有 [1]、[2] 阅读全文
posted @ 2016-07-03 15:57 wjyi 阅读(370) 评论(0) 推荐(0) 编辑

2016年7月1日

摘要: 两种转移: f[x][s] 在点x,当前关键点的连通状态为S 子集合并 f[x][s]=f[x][s']+f[x][s-s'] 出现圈 求出s这一层后,最优可以去更新其他的点 f[x][s]=f[y][s]+dis(x,y) 常用spfa 这样就求出了某些点连同的连通块,直接求出的就是最小生成树 题 阅读全文
posted @ 2016-07-01 16:12 wjyi 阅读(343) 评论(0) 推荐(0) 编辑

2016年6月29日

摘要: 。。。 阅读全文
posted @ 2016-06-29 11:36 wjyi 阅读(173) 评论(0) 推荐(0) 编辑

2016年6月27日

摘要: 求完美消除序列 最大势算法: 一开始所有的点权值都为0,每次选权值最大的一个点,放到序列的最前面,将与它相连的所有点权值加1。 不要问我怎么证明QAQ 完美消除序列性质:i~n中与i相连的点所构成的图是完全图 可以解决的问题: 1.最小染色: 每次染能够染的最小的颜色 2.有c种颜色,求方案数 *( 阅读全文
posted @ 2016-06-27 15:42 wjyi 阅读(594) 评论(0) 推荐(0) 编辑

摘要: 从问题可以看出是求补图的连通块及点数 但补图太大。所以考虑缩小规模。 当一个点归属于一个连通块后,它以后就不需要了。所以可以用链表,删去这个点,也就减小了规模。 一个点开始bfs,每个点只会进队一次,就被删除了,但是具体的时间复杂度不好估计。。 1 #include<bits/stdc++.h> 2 阅读全文
posted @ 2016-06-27 14:50 wjyi 阅读(155) 评论(0) 推荐(0) 编辑

摘要: ..k次最短路后,考虑如何满足先走一些点 用状压dp,每一个点考虑它所需要经过的点a[i],当当前走过的点包含a[i]时,i 这个点才可以到达。 写的时候用记忆化搜索。 1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespac 阅读全文
posted @ 2016-06-27 14:44 wjyi 阅读(181) 评论(0) 推荐(0) 编辑

2016年6月26日

摘要: ... 1068: [SCOI2007]压缩 Description 给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息。压缩后的字符串除了小写字母外还可以(但不必)包含大写字母R与M,其中M标记重复串的开始,R重复从上一个M(如果当前位置左边没有M,则从串的开始算起)开始的 阅读全文
posted @ 2016-06-26 21:13 wjyi 阅读(170) 评论(0) 推荐(0) 编辑

摘要: ... #include<bits/stdc++.h> using namespace std; int q[255]; char s[205]; char p[]={'W','I','N','G'}; int f[205][205][4],num[4]; char a[4][20][2]; boo 阅读全文
posted @ 2016-06-26 21:12 wjyi 阅读(210) 评论(0) 推荐(0) 编辑

摘要: 后缀数组height排序后并查集合并 也就是height较大的合并不影响较小的 num[i]=num[i+1] ans[i]=ans[i+1] 合并时,num+=sz[x]*sz[y],ans=max(mn[x]*mn[y],mx[x]*mx[y],ans) 这种思路适应于求点对,还可以考虑启发式合 阅读全文
posted @ 2016-06-26 20:01 wjyi 阅读(202) 评论(0) 推荐(0) 编辑

2016年6月25日

摘要: 补一发题解。。 整体二分这个东西,一开始感觉复杂度不是很靠谱的样子 问了po姐姐,说套主定理硬干。。 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define inf 1e9 4 #define N 300005 5 using names 阅读全文
posted @ 2016-06-25 18:54 wjyi 阅读(153) 评论(0) 推荐(0) 编辑

摘要: 未完待续。。。 终于改对了 热泪盈眶.jpg 错误原因:pushdown的时候没有判断是否有左右儿子,也没当x=0 return,于是出现一些奇怪的错误 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 500005 4 cha 阅读全文
posted @ 2016-06-25 15:01 wjyi 阅读(211) 评论(0) 推荐(0) 编辑

摘要: 动态树分治+堆 动态点分治 阅读全文
posted @ 2016-06-25 11:35 wjyi 阅读(104) 评论(0) 推荐(0) 编辑

摘要: 最经典的点分治题目,在递归子树的时候减去在算父亲时的不合法方案。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #include<algorithm> 6 #include<cmath> 阅读全文
posted @ 2016-06-25 11:03 wjyi 阅读(117) 评论(0) 推荐(0) 编辑

2016年6月23日

摘要: 区间dp. 一种是分段dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); 一种是这一段可以缩写dp[i][j]=min(dp[i][j],dp[i][l]+2+calc((j-i+1)/(l-i+1))); calc表示计算十进制的位数 边界就是l==r f[l] 阅读全文
posted @ 2016-06-23 21:41 wjyi 阅读(176) 评论(0) 推荐(0) 编辑