会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
新博客↓
http://progrom.cn/
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
10
11
12
13
14
15
16
17
18
···
23
下一页
2016年3月1日
POJ1741 Tree(树的点分治)
摘要: 题目给一棵边带权的树,统计路径长度<=k的点对数。 楼教主男人八题之一,分治算法在树上的应用。 一开始看论文看不懂,以为重心和距离那些是一遍预处理得来的。。感觉上不敢想每棵子树都求一遍重心和距离——那样时间复杂度怎么会只有O(nlogn)? 后来想通了,真的是对于每颗子树都把其所有结点单独提取出来,
阅读全文
posted @ 2016-03-01 09:58 WABoss
阅读(428)
评论(0)
推荐(0)
2016年2月29日
BZOJ2038 [2009国家集训队]小Z的袜子(hose)(莫队算法)
摘要: 神奇的莫队算法,用来解决可离线无修改的区间查询问题: 首先对原序列进行分块,√n块每块√n个; 然后对所有查询的区间[l,r]进行排序,首先按l所在的块序号升序排序,如果一样就按r升序排序; 最后就按顺序一个一个求出各个查询的结果:知道[l,r]的答案,并且在此基础上能在比较快地在O(x)得到相邻区
阅读全文
posted @ 2016-02-29 10:41 WABoss
阅读(938)
评论(0)
推荐(0)
2016年2月28日
POJ2559 Largest Rectangle in a Histogram(单调栈)
摘要: 题目给一个由几个相连接的矩形组成的多边形,计算多边形包含的最大的矩形的面积。 要求的矩形的高一定是某一个用来组合的矩形的高;如果枚举每个矩形作为高的话,那样长就是这个矩形能向左向右继续延伸矩形的长度了。 所以这题本质也是用单调栈在O(n)计算出每个数作为最小数向左和向右能延伸的最长距离。 1 #in
阅读全文
posted @ 2016-02-28 19:55 WABoss
阅读(951)
评论(0)
推荐(1)
POJ2796 Feel Good(单调栈)
摘要: 题意:给一个非负整数序列,求哪一段区间的权值最大,区间的权值=区间所有数的和×区间最小的数。 用单调非递减栈在O(n)计算出序列每个数作为最小值能向左和向右延伸到的位置,然后O(n)枚举每个数利用前缀和O(1)计算出以这个数为最小值能得到的最大的区间权。 以前写的单调栈,三个if分支,写得繁繁杂杂的
阅读全文
posted @ 2016-02-28 19:14 WABoss
阅读(237)
评论(0)
推荐(0)
POJ1226 Substrings(二分+后缀数组)
摘要: 题意:给n个字符串,求最长的子串,满足它或它的逆置出现在所有的n个字符串中。 把n个字符串及其它们的逆置拼接,中间用不同字符隔开,并记录suffix(i)是属于哪个字符串的; 跑后缀数组计算height; 二分答案,height分组,看组里面是否都包含了n个字符串的后缀; 注意n=1的情况。。 1
阅读全文
posted @ 2016-02-28 16:34 WABoss
阅读(245)
评论(0)
推荐(2)
POJ3345 Bribing FIPA(树形DP)
摘要: 题意:有n个国家,贿赂它们都需要一定的代价,一个国家被贿赂了从属这个国家的国家也相当于被贿赂了,问贿赂至少k个国家的最少代价。 这些国家的从属关系形成一个森林,加个超级根连接,就是一棵树了,考虑用DP: dp[u][m]表示以u国家为根的子树贿赂m个国家的最少代价 单单这样的话转移是指数级的,其实这
阅读全文
posted @ 2016-02-28 15:22 WABoss
阅读(287)
评论(0)
推荐(0)
2016年2月27日
POJ3294 Life Forms(二分+后缀数组)
摘要: 给n个字符串,求最长的多于n/2个字符串的公共子串。 依然是二分判定+height分组。 把这n个字符串连接,中间用不同字符隔开,跑后缀数组计算出height; 二分要求的子串长度,判断是否满足:height分组,统计一个组不同的字符串个数是否大于n/2; 最后输出方案,根据二分得出的子串长度的结果
阅读全文
posted @ 2016-02-27 19:03 WABoss
阅读(327)
评论(0)
推荐(0)
ZOJ1027 Travelling Fee(DP+SPFA)
摘要: 给一张有向无环图,边都有花费,从某点到某点走的那条路径上的那一条花费最多的边可以省掉,问从起点到终点的最少花费的多少, 往DP想的话,就可以写出这个状态dp[u][mx],表示到达u点已经省掉的花费为mx的最少花费。 用SPFA更新转移方程。。或者理解成队列+我为人人的转移。。其实这题这样子也能解有
阅读全文
posted @ 2016-02-27 17:00 WABoss
阅读(246)
评论(0)
推荐(0)
2016年2月24日
POJ2955 Brackets(区间DP)
摘要: 给一个括号序列,求有几个括号是匹配的。 dp[i][j]表示序列[i,j]的匹配数 dp[i][j]=dp[i+1][j-1]+2(括号i和括号j匹配) dp[i][j]=max(dp[i][k]+dp[k+1][j])(i<=k<j) 1 #include<cstdio> 2 #include<c
阅读全文
posted @ 2016-02-24 21:14 WABoss
阅读(208)
评论(0)
推荐(0)
2016年2月23日
POJ1655 Balancing Act(树的重心)
摘要: 树的重心即树上某结点,删除该结点后形成的森林中包含结点最多的树的结点数最少。 一个DFS就OK了。。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 #define MAXN
阅读全文
posted @ 2016-02-23 21:21 WABoss
阅读(187)
评论(0)
推荐(0)
2016年2月22日
POJ2774 Long Long Message(后缀数组)
摘要: 求两个字符串的最长公共子串。 拼接两个字符串中间用特殊字符隔开,max(height[i])(2<=i<=len,suffix(sa[i])与suffix(sa[i-1])分别属于两个字符串的后缀)就是答案! 1 #include<cstdio> 2 #include<cstring> 3 #inc
阅读全文
posted @ 2016-02-22 20:52 WABoss
阅读(196)
评论(0)
推荐(0)
2016年2月21日
URAL1297 Palindrome(后缀数组)
摘要: 求一个串的最大回文字串。 可以用后缀数组解决。 分别考虑奇数和偶数回文子串的情况,枚举原串S的每个位置i作为中间位置看其能向左右两边同时拓展都哪儿:把原串S反转成S',拼接SaS'(a为一个特殊字符),最远拓展的地方便可以通过LCP(suffix[i],suffix[i'])求得,i'为i对应在S‘
阅读全文
posted @ 2016-02-21 10:40 WABoss
阅读(197)
评论(0)
推荐(0)
2016年2月20日
SPOJ705 SUBST1 - New Distinct Substrings(后缀数组)
摘要: 给一个字符串求有多少个不相同子串。 每一个子串一定都是某一个后缀的前缀。由此可以推断出总共有(1+n)*n/2个子串,那么下面的任务就是找这些子串中重复的子串。 在后缀数组中后缀都是排完序的,从sa[1]到sa[n],这么思考以某个串为前缀的子串有几个,那么容易想到重复子串的个数其实就是∑heigh
阅读全文
posted @ 2016-02-20 16:16 WABoss
阅读(243)
评论(0)
推荐(0)
2016年2月19日
POJ3261 Milk Patterns(二分+后缀数组)
摘要: 题目求最长的重复k次可重叠子串。 与POJ1743同理。 二分枚举ans判定是否成立 height分组,如果大于等于ans的组里的个数大于等于k-1,这个ans就可行 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 usi
阅读全文
posted @ 2016-02-19 15:38 WABoss
阅读(232)
评论(0)
推荐(0)
2016年2月18日
POJ1743 Musical Theme(二分+后缀数组)
摘要: 题目大概是给n个数组成的串,求是否有多个“相似”且不重叠的子串的长度大于等于5,两个子串相似当且仅当长度相等且每一位的数字差都相等。 这题是传说中楼教主男人八题之一,虽然已经是用后缀数组解决不可重叠最长重复子串的经典题了。。但其实没那么简单,题目数据不强,网上一些代码都是不正确的。 首先把问题转化成
阅读全文
posted @ 2016-02-18 20:44 WABoss
阅读(3275)
评论(0)
推荐(13)
上一页
1
···
10
11
12
13
14
15
16
17
18
···
23
下一页
公告