- 博客(16)
- 收藏
- 关注
原创 9.21做题整理
T1 51nod 1639 系鞋带n条鞋带,进行n次正确操作后才会变成一个环。每次进行正确操作的几率是(2*i-2)/(2*i-1),每次进行正确操作后会鞋带数量会减一,可以递归完成。T2 poj 1275本质是一个建模稍复杂的差分约束系统,加上二分,spfa判负环 其实也没特别理解..T3 动态逆序对cdq分治。 %一发cdq大神。先按t排序,接着类似归并排序地解决..每次用左边的修改更新
2017-09-22 08:04:45
287
原创 洛谷 P1021 邮票面值设计-简单搜索+dp
是一道很基础的搜索题啊。 但是我对这种简单搜索的练习真的比较少,大多是图上搜索,所以写了这道题的题解。题目传送门怎么说呢,就是 从1到k 暴力枚举每种邮票的面值,到k+1时更新答案。 唯一需要好好想想的就是 每次枚举面值的上界和下界。 下界是 上一枚邮票的面值+1,上界是前几枚邮票能组成的MAX面值+1。因为如果这枚邮票面值为MAX+2,很明显MAX+1的总面值不能被组成。至于代码.. 参
2017-09-17 10:04:37
718
原创 树形DP例题整理
与普通dp类似,但是状态遍历不能简单的++i,而应该按由儿子到父亲的顺序完成。可以通过DFS递归完成,也可以按DFS(BFS)序从大到小完成,以保证先完成儿子再完成父亲。例题一 皇宫看守 tyvj_3384/vijos_1144 每个节点有三个状态 f[i][0]代表i子树全都被染色的代价,由每个儿子的min(0,2)转移而来,且有一个儿子必须为2; f[i][1]代表i子树(不包括i)全部被染
2017-08-17 17:40:56
627
原创 树状数组区间修改区间查询
刚学的 折腾了一上午终于弄好了树状数组几种用法(不全): ①单点修改区间查询(基本) ②区间修改单点查询(差分) ③区间修改区间查询(维护贡献) 我只特意整理了第三种用法 下方代码#include<cstdio> #include<iostream> #define db delta_before #define da delta_after #define ll long long us
2017-08-16 17:59:42
561
原创 POJ 2406-巧用next数组
原题 这道题我还没弄懂 但是看了看题解把代码写出来并且A掉了…#include<cstdio> #include<iostream> #include<cstring> using namespace std; int n,next[10000010]; char s[10000010]; void get_next(const char s[],int next[]){ next[0]=
2017-07-26 15:47:57
245
原创 UVA1572 Self_Assembly-拓扑排序
先上一发淳朴的拓扑排序模板 大家如果想检验自己写的拓扑排序模板对不对,可以交一下哈理工oj1631,是一道纯拓扑排序。 这个讲拓扑排序的文章也很好。↓↓↓ http://blog.youkuaiyun.com/dm_vincent/article/details/7714519#include<cstdio> #include<queue> #include<iostream> #include<vect
2017-07-25 14:40:08
329
原创 算法整理:最小生成树(mst)-Prim+Kruskal
Kruskal大概思想:用并查集储存两点是否连通,将边按权重排序,每次取出权重最小的边,如果该边两端的点未连通,将该边的权重加入ans。最后判断是否每个点都和1(任意点)连通,若连通说明存在最小生成树,权和为ans;否则不存在最小生成树。 时间复杂度:O(e loge) 接下来是我的代码,在luogu通过了测试。#include<cstdio> #include<iostream> #inclu
2017-07-23 16:48:16
332
原创 POJ3461-字符串匹配(基础)
这道题很水..很基础.. 纯kmp就能过.. 但这是我第一次用kmp,感觉好厉害,所以写这个博客来加深对kmp的印象。 附上我看的kmp算法讲解 (这么好的博客居然只有25粉丝) http://www.cnblogs.com/c-cloud/p/3224788.html 然后是我的蒟蒻幼稚代码 代码风格幼稚到底算是优点还是缺点呢?#include<cstdio> #include<i
2017-07-22 17:04:53
409
原创 NOIP2012 Day2 借教室-二分答案+差分
我 我 我 我怎么就想不起来二分答案呢… 老规矩先上原题http://codevs.cn/problem/1217/ 然后是我看的题解http://www.cnblogs.com/iwtwiioi/p/3536121.html 真的是 相当水的二分答案啊..(虽然我没想到ORZ) 但是题解的丧病加速还是给了我惊喜23333上我的蒟蒻代码 因为犯懒所以全用的long long#inc
2017-07-21 15:50:43
511
原创 POJ1185-状态压缩dp
有了poj3254的基础后,这道题实际上是一道很基础的状态压缩dp,听说是acm??感觉不难啊??? 大体做法和poj3254相同 这是我写的poj3254的题解 自认为我的代码是网上能找到的最简单(最幼稚)的。#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> using namespace st
2017-07-20 16:26:10
341
原创 UVA1599-字典序+BFS
第一次写这么复杂的bfs,卡了我近一周,需要注意的细节很多,很多地方感觉跟题解差不多,但是就是不对。失之毫厘谬以千里啊。这里是原题 这里是我当时看的一个比较好的题解(里面用的指针我不懂 但思路非常棒)大概做法先从n开始bfs,得到每个点到n的最短距离d[i]。然后从起点开始bfs,每一步保证d[v]=d[u]-1,同时储存最小字典序代码#include<cstdio> #include<iost
2017-07-19 14:15:40
488
原创 poj3254-二进制状态压缩
第一次接触二进制状态压缩 感觉很玄学很厉害 这里是原题 这里是我当时看的题解 题目大意:有n*m(1<=n,m<=12)的矩形草场 能放牛地方用1表示 不能的地方用0表示 两头牛不能挨着 求有多少种放牛方法(放0头牛也算一种方法) 嗷我翻译的好垃圾 很明显是一道dp题 dp[i][j] i为第几行 j为草场状态(如:100011101) 可以将草场状态看作二进制 然后用int 表示
2017-07-18 14:57:13
446
原创 最长不下降子序列的o(nlogn)算法
原理用数组d[k]存储 长度为k的子序列们的最小末尾值 可知d[k]是单调不下降的 所以可以用二分查找 可以用set+结构体实现 但是我二分查找不太好..所以手写二分查找 而且手写的跑起来也比stl快代码#include<cstdio> #include<cstring> #include<iostream> using namespace std; int n,a[100010],d[1
2017-06-30 17:40:17
942
原创 [NOIP2003]区间dp-加分二叉树
题目描述见luogu https://www.luogu.org/problem/show?pid=1040是很明显的区间dp 我企图用平行四边形优化 未遂 因为我区间dp不是很熟 所以把这道题摆上来 是一道很好的模板题 其中用d[i][j]记录切点也给二叉树的遍历提供了不错的例子 需要注意的点都在代码里注释了 f[i][j]=f[i][k-1]*f[k+1][j]+a[k]#inclu
2017-06-28 16:53:30
402
原创 一个开始
一个开始开始对自己学过的东西、做过的题做整理,以此加深印象,希望是个好的开始。对自己起的用户名总是不满意。 附:markdown真神奇 2017.6.28 16:01
2017-06-28 16:02:36
262
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人