- 博客(35)
- 收藏
- 关注
原创 【HDU3341】AC自动机状态压缩DP,或者说hash枚举DP,-------出题人卡常数都是狗!!!!!
题意:给若干种个串,再给个主串,然后把主串打乱顺序,使得包含子串尽量多(一种可以有多个,两个之间可以部分重叠)。如第一组数据,ACGT,包含AC、CG、GT,三个,输出3。第二组数据A1A2A3,包含A1A2和A2A3两个“AA”,答案为2。其实我并没有AC。我被卡常数TLE了。。。实在不想写这种没意义的东西了。贴代码,待填坑。#include #include #
2014-11-26 18:04:43 1667
原创 【BZOJ2049】【SDOI2008】Cave 洞穴勘测 LCT裸题 模版题 数组版
数组,至少目前我只写数组,不写指针。LCT这种东西我不打算讲或者什么乱七八糟的,反正这一篇是自用。同样,看这篇博客的人可以先去别的地方学LCT,然后来我这扒代码。代码:#include #include #include #include #define ls son[x][0]#define rs son[x][1]#define is(x) (x==
2014-11-25 15:48:58 1478
原创 【BZOJ2464】【中山市选2009】小明的游戏 最短路水过
题解:最短路pqspfa200ms,一眼题,另一种想出来没写的做法:二分答案,上界n+m时间复杂度O(n*m*log(n+m)),二分+深搜看能不能找到t最短路代码:#include #include #include #include #define N 505#define NN 251000#define inf 0x3f3f3f3fusing
2014-11-25 10:19:34 1767
原创 【BZOJ1036】【ZJOI2008】树的统计Count 树链剖分裸题
题解:裸的,没什么好说的。树链剖分不会的先理解一下重链轻链,然后直接扒我代码理解就行了。贴代码:#include #include #include #include #define N 30100#define inf 0x3f3f3f3fusing namespace std;struct KSD{ int u,v,next;}e[N<<1];int head
2014-11-24 19:47:40 1179
原创 【BZOJ2243】【SDOI2011】染色 树链剖分
题解:线段树节点维护区间最左边的颜色,最右边颜色,总段,然后查询时加入所有链的段数,然后根据颜色判断哪俩链多算了一段。大水题。本来以为20min思路清晰地打完一发180行代码很屌。……俩小错误。(没有任何可以借鉴的价值)一个是EDIT(note一个是有一个地方忘了pushdown了。写了好久,调了好久,拍了好久,WA了好久。什么 状态啊。给代码、数据生成
2014-11-24 16:39:27 1405
原创 【POJ3237】Tree 树链剖分
题意:change,把第i条边权值改成vnegate,把a到b路径上所有权值取相反数(*(-1))query,询问a到b路径上所有权值的最大值树链剖分。以前一直不会,但是我恶补LCT了,所以先学一下。对于现在的水平来说,树剖太水了,自己翻资料吧,我只提供一个还算不错的代码。扒代码的时候可以用我的这个。附rand和pai。代码:#inc
2014-11-24 10:46:01 1110
原创 East!模拟赛 Round 1 题目,题解在上三篇博客。
一. 题目概况中文题目名称命星残陨云夕焱辰冥域血蛊英文题目名称ABC可执行文件名ABC输入文件名A.inB.inC.in输出文件名A.out
2014-11-22 10:32:05 1179
原创 【East!模拟赛】【Round1】【BZOJ1017】魔兽地图Dotr 树形DP
题意不多说。曰: 呃,首先显然这是一个树形DP。 然后我不会什么高大上的算法,我只能提供一种非常慢,但是能在BZ切的算法(因为是总时限并且还有O2)。题解: 不需要新建树,这个树就行。 首先这道题一眼就能想到树形背包。。但是树形背包怎么做呢? 因为需要合成,所以这里的状态F[i][j][k]并不是i节点有j个花费为k时的最大收益,而是i节点
2014-11-22 09:54:08 1720
原创 【East!模拟赛】【Round1】【BZOJ2324】营救皮卡丘 有下界的费用流
题意:不多说了。题解:begin 首先想到:我们要强制走过那些下界。 怎么强制呢?我们把费用赋为-inf!!看他走不走! 然后费用的初值就需要把这些扣掉的inf加回来。end.贴代码:#include #include #include #include #include #define N 500#define M 20100
2014-11-22 09:51:07 2670 1
原创 【East!模拟赛】【Round1】【codeforces455B】题解。
A:codeforces Round#260 div1 B [a lot of games].题解:俩人玩游戏,有若干个字符串,每一轮都是俩人轮流念一个字母,使得当前的这些字母是其中一个字符串或者其前缀,即在字典树上走,每人走一步,走不了的人输,然后有m轮,每轮输的下一轮先手,问最后一轮谁赢?题解: 显然这是一道博弈题,但是如果我们单纯地计算每一局是先手赢还是后手赢,那就要跪了。
2014-11-22 09:17:10 1402
原创 【BZOJ1056/BZOJ1862】【ZJOI2006】【HAOI2008】游戏排名系统 splay
题意:自己看。题解:splay。注意:…………………………我特么在?+数字时只读了一位,导致什么?11啊,?10啊全读成了1。今天狠下心来写拍子,才,发,现,我就是个大沙茶!先附随机数生成器,这个比较挫,能生成的数据范围比较小。#include #include #include #include #define N 50#define M 12us
2014-11-16 09:06:00 1529
原创 【POJ3272】Cow Traffic 拓扑DP
题意:给一个有向图,边严格由编号小的点到编号大的点,现在计数所有的极大路径,求每条边遍历次数的最大值。题解:正着扫一遍,倒着扫一遍,dp值相乘。#include #include #include #define N 5050#define M 50500using namespace std;struct KSD{ int v,next; long long cnt;
2014-11-07 16:42:20 1354
原创 【POJ1905】Expanding Rods 二分答案+推公式
题意: 给出L,n,c,通过公式可以得到L’。 然后L是弦长,L’是弧长,从圆心向该弦做垂线,若长为d,求半径-d。题解: 二分答案。 首先弧长通过圆心角和半径是可以计算的,那么我们可以二分答案(r-d)。 然后有(r-mid)^2+(L/2)^2=r*r,通过这个可以O(1)算出r。 这样就可以通过 弧长=(圆心角/360°)*2π
2014-11-07 09:50:33 1184
原创 【POJ3258】River Hopscotch 二分答案,贪心check
题意:第一行knm,有n+2个石头在数轴上(k是第n+2个石头离第一个的距离),要删掉m个,使两两间距的最小值最大,并求这个值。题解:排序一下,然后扫一遍贪心决定删哪些。#include #include #include #define N 50500#define inf 0x3f3f3f3fusing namespace std;int dist[N],n,m;int
2014-11-06 20:54:28 1180
原创 【POJ2325】Persistent Numbers 贪心+高精度/低精度
题意:我们可以把一个数A变成B=A的各位乘积,现在给出B,求是否可以有某个A通过计算得到B,有的话,是多少。题解:贪心。我们先分解B,若质因数有大于等于10的显然就不行了。否则则一定可以把他的各因数排在一起成为A,使A的各位乘积=B。贪心策略:把小数放前面。注意:一、不一定要质因数,10以内即可。二、需要高精度。三、A!=B代码:#include #inc
2014-11-06 16:21:48 1588
原创 【POJ1700】Crossing River 贪心,附贪心问题的一系列详细解析
题意:一群人过河,船每次只能装两人,每次过河时间为两人权值较大的那个。题解: 这种题的贪心策略往往不是很好想,这个时候我们就需要依照尽量逼近正解的思路,进行多种贪心,在每种贪心都保证正确的前提下,取多个答案的最值,这样往往就是正解,而即便可以卡,数据也很难出,并不是写个rand+debug拍上两个小时就能拍出来的。 而这种 多线程贪心 可以有两种:一、单独做每种,然后取
2014-11-05 16:48:52 1798
原创 【POJ1328】Radar Installation 贪心
题意: 有n个在x轴上方的小岛的坐标,还给出雷达的范围,现在要求在x轴上放尽量少的雷达使岛都被覆盖到,问最少数量。题解: 贪心。确定每个岛在x轴上的映射范围(此范围内有雷达则能扫到小岛),然后按右界排序,然后类似于单调队列(当然要水多了),把雷达尽量往右放。细节:注意一: 雷达不用非得在整点上,别被示意图骗了。注意二: 如果数据有误输出-1
2014-11-05 16:17:17 1093
原创 【POJ1323】Game Prediction 博弈,或者说贪心(本博客用栈处理)
题意: 输入m,n,表示有若干张卡牌,权值两两不同,且最大为m*n,交给至多m个人。 每回合所有人各出一张牌,权值最大者胜! 现在主角手里有n张牌,问他至少能赢多少局。题解: 贪心。每次出最大牌看是否可以有人压制你。 或者换一种说法,就是所有人一起坑你,而且提前知道了你出什么牌,总之就是各种坑你!所以我们不考虑能赢多少把,我们考虑有多少
2014-11-05 15:20:45 1126
原创 【POJ3636】Nested Dolls Dilworth定理(偏序集定理二)
题意:别问我,直接扒1065或者1548代码,然后改一下cmp函数为y值递减,然后最长下降子序列改成最长不上升子序列,收工。贴代码:(当然你要看这个定理可以去我的前两篇博客看)啊,这个的求最长不上升子序列必须nlogn了,n^2会TLE了~~#include #include #include #define N 50000#define inf 0x3f3f3f3fusin
2014-11-05 11:18:32 1250
原创 【POJ1065】Wooden Sticks Dilworth定理(偏序集定理2)
题意: 可以视为跟POJ1548相同,就是n个点(二维),要求分堆,每堆中点要求单调递增(A的x和y值都比B小则A题解:参见我的上一篇博客然后贴代码:#inclu
2014-11-05 10:21:31 1819
原创 【POJ1548】Robots Dilworth定理(偏序集定理2)
题意: 有一些位置有垃圾,让机器人从左上角开始走,只能往右或者往下,问最少走多少次可以清理完所有垃圾、题解: 一看就是网络流经典题,或者说是二分图—最小路径覆盖;但是现在毕竟是在做一些贪心,这道题用的是一种贪心相关定理,Dilworth定理。 这道题可以理解为部分两点之间有偏序(可走的关系),呃,可以视为当xa 比如题中的数据1,我们经过处理得到2 4
2014-11-05 09:47:19 2026
原创 【POJ1042】Gone Fishing 黑书上第一道贪心题。
题意:有n个鱼塘,t个小时,鱼塘都在一条线上,一行n数,鱼塘i初始时垂钓5分钟能得到fi条鱼;一行n数,鱼塘i每垂钓5分钟fi就减少di;一行n-1数,表示鱼塘i和上一个鱼塘的距离,第一个鱼塘没输入,距离原点0。题解:贪心,黑书里有题解 : P13。先枚举走到哪个鱼塘。然后把路上时间去掉,然后爆扫,每次取能钓到鱼数最大的池塘来钓5分钟。答案出来了,输出就行了。
2014-11-04 17:53:44 1300
原创 【VIJOS1321】魔塔 并查集+建树+栈 ※※※※※有详细题解和代码注释
可以说是算法和数据结构之间的一种完美利用,使得这道VIJOS难度六的题目得到了解答。当然,其实我是自己想出来的解法,并不知道大家都是怎么解的,所以即使做过这道题的,不妨也来看一看这种思路。
2014-11-03 21:01:49 1776
原创 【POJ3660】Cow Contest Floyd传递闭包
题意:n头牛有优劣关系,现在可以根据这些关系判定排名,求有多少头牛的排名是固定的。题解:我们可以用Floyd传递闭包,三层for循环后的代码为:map[i][j]|=(map[i][k]&map[k][j]);应该很好理解吧? 就是若有A个点能到某点,而此点又能到另B个点,那么若A+B==n-1(该点),则该点的排位确定,即前A个点之后,后B个点之前的这个唯一位置。好了,
2014-11-03 19:52:40 1106
原创 【POJ3615】Cow Hurdles 最短路,你若LCA,我仍不拦你。
NOIP2013货车运输,只不过数据范围小了许多。不到150s打完并且AC。。额,当然,我写的是Floyd。写LCA的真过分。#include #include #include #define N 305#define inf 0x3f3f3f3fusing namespace std;int n,m,q;int map[N][N];int main()
2014-11-03 16:50:57 1126
原创 【POJ3377】Ferry Lanes 最短路
我只是贴一下手写堆优化的dij模板,虽然,它,TLE了……****#include #include #include #include #define N 2001000#define inf 0x3f3f3f3f#define longlong intusing namespace std;struct Katarina{ int v,next; longlong l
2014-11-03 16:28:23 1723 1
原创 【POJ3268】Silver Cow Party 最短路
题意:一堆奶牛去某个地方,去了又回,然后求去回和的最大值。题解:两遍最短路,结束,邻接矩阵存边可以避免建反图。#include #include #include #define N 1005#define inf 0x3f3f3f3fusing namespace std;int map[N][N],n,m,s;int dist1[N],dist2[N];bool v
2014-11-03 10:14:55 972
原创 【POJ3159】Candies 裸的pqspfa模版题
不多说了,就是裸的模版题。贴代码:#include #include #include #include #include #define N 30500#define M 200000#define inf 0x3f3f3f3fusing namespace std;struct KSD{ int v,len,next;}e[M];int head[N],cnt
2014-11-03 00:53:05 1150
原创 【POJ3037】Skiing 最短路
题意: 有个n*m的滑雪场,bessie要从(1,1)滑到(n,m),问最小时间。起始有一个速度v,然后每从一个点A到一个点B(只能上下左右走,每次一格),速度就会乘上2^(权值A-权值B)。然后每次移动的耗时是当前速度的倒数。题解: 分析一下就能发现,乘乘除除后,从一个点出发时的速度都是固定的,即与从起点直接到该点的速度是一致的,那么我们就可以建成一个边权
2014-11-03 00:28:54 1436
原创 【POJ2253】Frogger 最短路,你想写LCA我不拦你
题意:多组数据,0停止。给出n个点的坐标,然后使1到2!!!!!!是到2!!不是到n!!!的最长边边长最小,并求该长。题解:懒,所以直接写个一行floyd。#include #include #include #include #define N 505using namespace std;double map[N][N];int n,x[N],y[N];int main
2014-11-02 21:01:41 867
原创 【POJ1724】ROADS 某邪恶最短路
题意:p,n,m,然后m行表示入点出点长度花费。 求花费在p以内的最短路。我写的一定不是pqdij!一定不是!一定是dfs!题解:做一个pq优化的dij,然后看每次跑出来的路的花费是否完事。看代码!快看我的水代码!#include #include #include #include #include #include #include #d
2014-11-02 15:06:11 1008
原创 【POJ1125】Stockbroker Grapevine 最短路
题意:Floyd!!!直接说输入格式你们一定会做。就是说多组数据,然后每组先一个n,然后n行,一个数是有几条出边(单向边),然后每条出边俩数分别为点和边权。好了,现在求的是点x,使从x出发最远的点 最近,不懂直接看代码,风格良好!!!#include #include #include #define N 105#define inf 0x3f3f3f3fus
2014-11-01 21:41:43 877
原创 【POJ1062】昂贵的聘礼 最短路 题目描述还有数据都坑爹
题意:中文题,这里只提供题目传送门 http://poj.org/problem?id=1062题解:首先若物品1可以由物品2加上x元得到,连一条B -> A的单向边,边权为x。 然后源点向每个物品连一条物品直接价格的边。 然后枚举点权的下限和上限。 好吧,很水。但是数据范围坑爹!!!点权还能是0!!而且酋长等级不一定最高!!贴代码:#
2014-11-01 21:08:31 960
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人