POJ
asdfgh0308
这个作者很懒,什么都没留下…
展开
-
poj3415 Common Substrings,后缀数组、单调栈
poj3415 后缀数组+单调栈后缀数组真是博大精深……呃,其实也很浅,翻来覆去也就几种题目,都出烂了所以比赛都见不到了。。但是把后缀数组模板用熟练还是很重要,万一它真出了呢。。这题要统计串s1、s2中这样的三元组{i,j,k},(s1[i..i+1-k]等于s2[j..j+1-k],k>=K)统计这样的三元组有多少个。换一种说法就是对于所有的i,j,求sum{lcp(原创 2013-06-11 17:17:33 · 762 阅读 · 0 评论 -
poj2942 Knights of the Round Table,点双连通分量,奇环判断
联通分量是以前研究很久的东西,但是发现还是有很多理解原创 2014-08-09 15:32:18 · 582 阅读 · 0 评论 -
poj3252.Round Numbers,组合数
曾经,离开的时候,utoppia同学和我打赌说我的POJAC题数不会超过300。现在,我又回来,固执地做着没落的POJ,只为那个约定。你却再没有机会和我并肩作战。不久,我们队又将出发,带着utoppia的名字,继续未完成的梦。废话完毕。Poj3252.Round Numbers。将数化成二进制,问在[start,finish]区间内的数满足0的位数大于1的位数的数有多少个。原创 2014-09-19 11:30:34 · 457 阅读 · 0 评论 -
poj2376 Cleaning Shifts 贪心
poj2376 Cleaning Shifts 贪心问最少选多少个区间能包含整个区间。如果一个区间包含另一个区间,那么那个区间就没有作用。先处理这些区间,使得后一个区间的起始值大于前一个区间的起始值,区间的结束值大于前一个区间的结束值。再用一个结束值递增的栈,对于每个区间,如果这个区间和栈次顶的区间能相连,能包含栈顶的区间,那么栈顶区间无用,弹出。最后栈中元素个数就原创 2014-09-19 14:01:21 · 527 阅读 · 0 评论 -
poj3233 Matrix Power Series,矩阵快速幂
(A个水题也要发一篇,是不是病了)好吧来看题目,poj3233原创 2014-08-09 12:53:21 · 551 阅读 · 0 评论 -
poj3378 Crazy Thairs 高精度,树状数组
poj3378 Crazy Thairs 高精度,树状数组为了比赛,准备整理一套高精模板。虽然赵老师会Java,但是这玩意总是莫名不靠谱。本题,给一个有序集合,问原序满足从小到大而且值满足从小到大的五元组有多少个。按值建树状数组。每个点保存5个值,代表以当前节点为最后一个元素,长度为i(1然后按原数组序从左到右插入。每次查找比当前点值小的,长度为i-1的有集合总数,则当原创 2014-09-20 11:20:16 · 861 阅读 · 0 评论 -
poj1821 Fence,dp
题意,给k个worker,n个plank,每个worker有l(刷plank的连续区间最长长度)、p(刷一个plank的工资)、s(这个worker坐在哪个plank前面)。问最大工资总和是多少。要求每个工人刷的plank是连续的,且要包含s位置的plank。dp[i]表示做到第i个plank的最大值。做每个worker时,将第i个位置的dp值加上(n-i)*p[i],这样,转移的时候原创 2014-08-24 11:35:47 · 679 阅读 · 0 评论 -
poj1741 Tree,平衡树,启发式合并
poj 1741 Tree 平衡树,启发式合并。楼教主男人八题之一。点分治看腻了吧。来点新鲜的。关于启发式合并,我的上篇博客已经写了一些,请移步这里:http://blog.csdn.net/asdfgh0308/article/details/39790613这题和hdu4812一样,也是询问是否存在/存在多少个树某个路径满足条件。同样,每个叶节点建一个包含自原创 2014-10-07 03:19:56 · 2887 阅读 · 6 评论 -
poj3016 K-Monotonic,左偏树,dp
今天学习了一下左偏树(Leftist Tree)。左偏树是个二叉树,满足堆性质,它最神奇的地方就是右边比较短(嗯,然后他就可以往最右边递归合并,这样合并的复杂度也就是O(logn)级别插入就是将要插入节点作为一个树合并。弹出呢,只要把根节点的两个儿子合并一下就好了。 貌似这个东西应用不是很多啊。做了个poj3016练手。这个题问的是将一个数列变成k个严格单调串需要的总变原创 2014-08-12 11:39:40 · 687 阅读 · 0 评论 -
poj2528 Mayor's posters,优先队列
poj2528 Mayor's posters,优先队列给你一些海报,贴在墙上的顺序,问最后可见的有几张。墙可以看成一个线段,没有高度。这种问题当然线段树可以解决。区间更新。最后扫一遍有几种。但是这种离线的区间问题,用左进右出的做法更简单。这里用到一个堆/优先队列。连离散化都不用,排个序即可。每条线段化为两个点,左端点和右端点+1。排序一下这些点。还是从左往右扫原创 2014-10-14 17:49:22 · 897 阅读 · 11 评论 -
poj2404 Jogging Trails 欧拉回路、最短路、搜索
poj2404,很有趣的题目。 1.欧拉回路的充要条件:所有点度为偶数。2.将两个奇度点补充到偶度的最佳方法是选择任意两个奇度点连最短路径为权的边。 因为如果存在另外的点使得g[a][c]+g[b][c]3.如此,最小的答案就是把求奇度点之间的最小权匹配了。由于这是个一般图网络流或KM好像是搞不定的。 计算了一下状态压缩dp的复杂度(状态)(2^14)*(转移)(14*13/2)原创 2013-05-09 00:02:49 · 1254 阅读 · 0 评论 -
poj1321 棋盘问题,状态压缩dp
好久不做题了。虽然是水题,还是写个解题报告吧。普通的暴搜要8^8的复杂度,还是有点危险的。随便想一下可以发现这题存在最优子结构等动态规划的要素,所以可以用状态压缩DP解决。状态就是每层,当前已有哪几个列已被占。二维。转移就是两种:1.当前行不加棋子,就是f[i][j]+=f[i-1][j];2.当前行加一个棋子,就是f[i][newst]+=f[i-1][j],而且加棋原创 2012-12-31 00:12:08 · 1713 阅读 · 4 评论 -
poj1509 Glass Beads,后缀自动机
后缀自动机是愈发流行的字符串工具。两年前我就学习了这个玩意,但是,现在拿起来还是那么陌生。似乎poj1509 Glass Beads每次找最小的字母边转移,转移l次,找到的就是最小串表示的结尾点。为什么每次找最小的子字母边转移,不会使得在没找到l次后就到达结束状态(没法再转移下去了)呢?因为,后缀自动机可以串接受所有后缀。如果一个后缀长度小于l,由于开始倍增过,这个原创 2014-08-15 20:35:01 · 673 阅读 · 0 评论 -
poj2426 Remainder 数学、BFS
一个比较巧妙的题目。开始以为要用高精度,实在不想打啊,就搜了下解题报告。点啊点的,开了几个链接,不知怎的就点进了“于娟日记”里的文章。哎,我惆怅的心情啊。。。。人太过渺小,为何我们还无止境地贪求,能够做好一些,真正重要的事,生命也就无憾了。回到题目吧。高精度嘛,果然是不用的。利用了一点数学知识。考虑只有+、-、*的计算,可以发现,只要每次模k原创 2013-09-03 17:52:18 · 962 阅读 · 0 评论 -
poj3167 Cow Patterns KMP、树状数组
最近的日子被考试压得喘不过气来,说好的每天水两道题又荒废了。。。为了让写解题报告和看解题报告不那么无聊,我决定从这篇起每篇加几句心得或感慨(很大几率是废话):数据结构是好东西,必须信手拈来,或者准备好模块,熟练得像std::sort那样,才能克服一些稍显复杂的堆砌算法的题目。另外,KMP是神奇的算法。poj3167KMP&树状数组。这题要求第一串中间是否有与原创 2013-06-03 13:09:35 · 775 阅读 · 0 评论 -
poj1010 STAMPS 简单搜索
此题题意比较晦涩。大意是:给n(n多,或者种数最多时总邮票张数最少,或者前面两者都相同时,邮票最大值最大的一种方案。如果还有上述条件都相同的不同方案,则输出"tie",而无解输出"none"。显然应该用搜索的方法吧。这里应该注意一下搜索的目标。如果你的目标是每种邮票需要多少张,那么写得最丑的情况下需要5^25的复杂度,当然一般人不会写成那样……如果搜索的目标原创 2013-03-20 00:48:49 · 710 阅读 · 0 评论 -
poj3216 Repairing Company 二分图匹配、最小路径覆盖
poj3216.求最少的修理工完成修理任务。根据数据范围猜解法,很容易想到网络流啊,匹配神马的。。然后就悟了是一个很裸的最小路径覆盖问题,然后就匈牙利啊随便就过了。。。说一些可能错的地方吧:1.一开始修理工可以在任何区域。2.题目中“ has a deadline ti on any repairman’s arrival, which is also its star原创 2013-05-10 00:04:43 · 644 阅读 · 0 评论 -
poj3204 Ikki's Story I - Road Reconstruction 网络流dinic
poj3204暴搞。显然,增加的必定是割边的容量。如果不是割边,就有剩余容量,原来的容量都流不满,再加也没用。做一遍网络流,记录割边。将割边容量加一点点(就是1),在残量网络上继续网络流。如果有可行流说明这条边是OK的啦!注意如果直接增加割边容量,从空图开始网络流可能会超时。记录一下原图的流量情况,每次枚举恢复一下原图就ok了。#include#include#原创 2013-05-09 01:09:54 · 745 阅读 · 0 评论 -
poj3622 Gourmet Grazers 贪心,multiset
poj 3622 贪心,multiset装死好一阵子了,考研压力山大。好吧,其实做题的时间只是被游戏占用了。点开一道水题poj3622。一看就是贪心嘛。每次用最便宜的食物看能不能满足某只牛。如果能满足多只牛,就选greenness score需求最大的那只牛。显然正确就不作证明了。这样就要用到一个平衡树找到现有牛中Bj小于等于食物Di最大的那只。multiset原创 2013-08-30 11:46:55 · 704 阅读 · 0 评论 -
poj2449 Remmarguts' Date A*
学习了一下K短路。复习一下A*算法的知识。估价函数f=g+h。g是已走的距离。启发函数h要满足 h(i)同时又要满足,对于j是i扩展到的节点,g(i)+h(i)其实dijkstra算法也是A*算法的一种,它的h函数是0。而本题设计启发函数为到终点最短路的距离,h=h*,这是显然满足以上两个性质的启发函数。其实这已经不能叫做“估价”了,是已经知道实际的“价格”了。原创 2013-09-06 16:11:46 · 795 阅读 · 2 评论 -
POJ2250 Compromise,map、dp
又到一年校赛时。。转眼已经大四。奇葩的学校,校赛是个人赛。。其实我挺喜欢个人赛原创 2014-04-08 23:54:01 · 627 阅读 · 0 评论 -
poj3343 Against Mammoths,二分图匹配
poj3343 二分图匹配一道有(hen)趣(shui)的题目。二分时间上界,可以将最优化问题变成判定性问题。然后用二分图匹配判断是否每个星球都被匹配上就可以啦。有几个trick:1.时间上界可能达到1600080000左右。2.当人类星球初始值是0时,至少要1年时才能出发。3.如果人类某星是0,0 ,外星人某星是0,0 也是不合法地。原创 2014-08-18 17:08:31 · 568 阅读 · 0 评论 -
poj1200 Crazy Search,字符串hash or 后缀数组
题目说了构成的字符串最多不会超过16000000,所以才能用这样的hash方法。原创 2014-08-18 21:07:30 · 675 阅读 · 0 评论 -
poj1625 Censored! AC自动机DP、高精度
poj1625 Censored! AC自动机DP、高精度这是AC自动机的经典题目了吧。嗯,难度不大,就是代码长而已。。poj的数据一如既往地奇葩,会有大于128的字符,读入变负,需要处理一下。结果最大是50^50,大概是10^85,高精度的长度可以计算一下。#include#include#includeusing namespace std;#def原创 2013-06-13 21:14:14 · 601 阅读 · 0 评论 -
poj3694 Network 双连通分量、并查集
好题。边双联通分量。题目给了一个连通的无向图。那么,双连通分量缩点后,就得到一棵树。每个操作就是将树上两个点和一直到公共祖先的所有点缩成一个点。用并查集可以巧妙地完成这个操作。每次找到两个点的最近公共祖先,将两点到该祖先路径上的点都合并到祖先的并查集里,并进行路径压缩。路径上的边有多少,就将桥的数目减少多少。很方便就统计出剩下的桥的数目了。算法每条边最多遍历一次,这样,原创 2012-10-31 23:39:24 · 753 阅读 · 0 评论 -
poj2528 Mayor's posters,线段树,离散化
线段树+离散化。离散化的时候要记得将端点的左边一个点和右边一个点也加进去,不然是错的。也有不用线段树的做法,例如用个堆,参考这篇点这里。#include#include#include#includeusing namespace std;#define N 60100#define ls (p<<1)#define rs (p<<1|1)#define mid(p) (t原创 2015-01-06 10:18:25 · 636 阅读 · 0 评论