算法竞赛进阶指南练习
做题做题
没有自旋的π介子
北斗诛邪,除凶去殃
展开
-
油箱POJ3635(tle)
油箱POJ3635(tle)思路题干在这:POJ3635优先队列BFS但不知道为什么就超时了,可能是有细节没处理好,改天再回来改tle代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<queue>#define...原创 2020-02-24 20:26:32 · 564 阅读 · 0 评论 -
Bloxorz POJ3322
Bloxorz POJ3322思路题干在这:POJ3322学习广搜,抄的算法竞赛进阶指南的事例代码ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<queue>using namespace std;str...原创 2020-02-19 00:06:42 · 155 阅读 · 0 评论 -
加法链POJ2248
加法链POJ2248思路题干在这:POJ2248m迭代加深dfs,注意剪枝ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<map>using namespace std;int a[200] = { 0,...原创 2020-02-18 20:52:50 · 237 阅读 · 0 评论 -
生日蛋糕POJ1190
生日蛋糕POJ1190思路题干在这:POJ1190深度优先搜索,多剪剪枝ac代码#include<cstdio>#include<algorithm>#include<iostream>#include<cmath>#define inf 0x3f3f3f3fusing namespace std;int N, M, S = i...原创 2020-02-14 21:59:36 · 676 阅读 · 0 评论 -
木棒POJ1011
木棒POJ1011思路题干在这:POJ1011按着《算法竞赛进阶指南》的代码写的,熟悉一下深搜和剪枝ac代码#include<cstdio>#include<algorithm>#include<iostream>using namespace std;int a[100], v[100], n, len, cnt;bool dfs(int ...原创 2020-02-14 15:52:53 · 191 阅读 · 0 评论 -
黑盒子POJ1442
黑盒子POJ1442思路题干在这:POJ1442对顶堆,讨论讨论即可ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#include<queue>#include<cstring>#include<v...原创 2020-02-12 13:15:46 · 209 阅读 · 0 评论 -
电话单POJ3630
电话单POJ3630思路题干在这:POJ3630依次把电话号码插入字典树。如果一个号码插入过程中到了一个结束节点,或者插完这个号码并没有建立新节点,说明是no;否则是yes。ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#inclu...原创 2020-02-11 21:58:09 · 257 阅读 · 0 评论 -
挤奶网络POJ2185
挤奶网络POJ2185!!!补:这个方法是错的,但是能过……见 这个思路题干在这:POJ2185按行按列kmp,各自求出最小公倍数,和长度取最小,然后相乘就好ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#include<...原创 2020-02-11 20:42:32 · 1517 阅读 · 0 评论 -
项链BZOJ1398
项链BZOJ1398题干在这:BZOJ1398最小表示法对比一下就好(我把Yes打成YES,一直WA,过了好久才发现,傻哭)ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#include<queue>#include&...原创 2020-02-11 19:21:04 · 132 阅读 · 0 评论 -
滑动窗口POJ2823
滑动窗口POJ2823思路题干在这:POJ2823写一个单调队列就好ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#include<queue>#include<cstring>#include<v...原创 2020-02-11 12:45:12 · 212 阅读 · 0 评论 -
城市游戏POJ1964
城市游戏POJ1964思路题干在这:POJ1964逐行单调栈就好了ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#include<queue>#include<cstring>#include<ve...原创 2020-02-10 21:32:01 · 273 阅读 · 0 评论 -
荷马史诗BZOJ4198
荷马史诗BZOJ4198思路题干在这:BZOJ4198Huffman编码,没啥好说的ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#include<queue>#include<cstring>#defi...原创 2020-02-10 20:21:02 · 125 阅读 · 0 评论 -
数据备份BZOJ1150
数据备份BZOJ1150思路题干在这:BZOJ1150我们注意到选取的一定是相邻的边,那我们先求出两两之间相隔的距离d[i]。可知如果我们选了d[i],那么我们就不能选d[i-1]和d[i+1]。我们每次找到一个最小的值d[i],并把d[i],d[i-1]和d[i+1]删去;我们又要保留选d[i-1]和d[i+1]的可能性,所以再在原位插进去值为d[i-1]+d[i+1]-d[i]的点。我...原创 2020-02-10 19:10:46 · 214 阅读 · 0 评论 -
超市POJ1456
超市POJ1456思路题干在这:POJ1456先按照过期时间由小到大排序,然后建立一个优先队列(利润的小根堆),挨个商品询问。如果商品过期时间大于队列中元素,直接入队,否则只留下和堆顶之中利润较大的。询问完后堆中利润之和就是答案ac代码include<cstdio>#include<iostream>#include<algorithm>#inc...原创 2020-02-09 22:34:21 · 166 阅读 · 0 评论 -
循环节POJ1961
循环节POJ1961思路题干在这:POJ1961KMP模式匹配如果i-next[i]能整除i,就找到了最小循环节ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;char s[1000010]...原创 2020-02-09 16:17:12 · 176 阅读 · 0 评论 -
回文POJ3974
回文POJ3974思路题干在这:POJ3974回文可能是奇数个字符或者偶数个字符,我们先扫一遍字符串,算出正向和反向的hash,然后枚举中心点,二分向左右的最大延伸,取最大值即可ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#def...原创 2020-02-09 13:41:18 · 133 阅读 · 0 评论 -
雪花POJ3349
雪花POJ3349思路题干在这:POJ3349数据比较大,就先用Hash离散一下,再逐项比对。两个雪花我是暴力比对的,还能用最小表示法优化。本题数据多,注意cin会超时,使用scanf。ac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>...原创 2020-02-07 21:47:57 · 231 阅读 · 0 评论 -
最大子矩形POJ2559
最大子矩形POJ2559思路题干在这:POJ2559简简单单的单调栈ac代码#include<cstdio>#include<vector>#include<algorithm>#define ll long longusing namespace std;struct rectangle { ll height; ll length;...原创 2020-02-07 17:31:51 · 193 阅读 · 0 评论 -
最大子矩阵和POJ1050
最大子矩阵和POJ1050思路题干在这:POJ1050假设最大子矩阵和是在rowup行到rowdown行之间,那我们把其中各列元素加和存储在工作数组中,然后求这个工作数组的最大子段和即可。数据比较小,我直接暴力算的。ac代码#include<iostream>#include<cstdio>#include<algorithm>#include&...原创 2020-02-06 23:10:54 · 215 阅读 · 0 评论 -
士兵 POJ1723
士兵 POJ1723思路题干在这:POJ1723y坐标是一个很标准的中位数做法,x坐标把表达式写写发现调整一下x坐标值也是一个中位数做法ac代码#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;int x...原创 2020-02-06 22:18:30 · 168 阅读 · 0 评论 -
糖果传递 BZOJ1045
糖果传递 BZOJ1045思路题干在这:BZOJ1045就是前缀和+排序+中位数,没什么好说的qwqac代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>using namespace std;long long a[1000010] = {...原创 2020-02-06 21:47:59 · 100 阅读 · 0 评论 -
牛栏POJ3179
牛栏POJ3179(待补)思路题干在这:POJ3179统计各地点草的个数同时算一个最大的边长,然后求出二维前缀和,二分正方形边长,枚举算出答案。但这个题我非常chun地直接做,结果超出内存限制……我们能发现输入的点的个数很少,我们应该离散化处理,缩小二维数组的内存。但我现在懒得改了,待补ml代码#include<cstdio>#include<cmath>...原创 2020-02-06 17:13:12 · 189 阅读 · 0 评论 -
袭击POJ3714
袭击POJ3714(待补)思路题干在这:POJ3714就是求两组点之间的最近距离。分治+平面最近点对,但不知道我的代码为什么超时了……(待补)tl代码#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>#define MAX 100001#defi...原创 2020-02-06 17:07:22 · 173 阅读 · 0 评论 -
分形POJ2083
分形POJ2083思路题干在这里:POJ2083我们找一个数组存储图像,然后递归调整即可。因为n<=7,我就先分形求出n=7时的图形,然后读入数据,根据读入在适当地方添加‘\0’,输出,然后再改回空格。这个题我用pow()结果poj说我编译错误,反正数据很小,我就随便写了个pow()。ac代码#include<cstdio>#include<cstring&g...原创 2020-02-05 21:41:24 · 355 阅读 · 0 评论 -
逆序对 POJ2299
逆序对POJ2299思路题干在这:POJ2299我们采用归并排序的方法,边排序边统计逆序对,输出即可。注意边界条件。有一个坑就是最后的结果超过int范围,我提交WA,还是看了别人的题解才知道是这里有问题……ac代码#include<stdio.h>#include<iostream>using namespace std;int in[500001] = ...原创 2020-02-05 19:11:57 · 146 阅读 · 0 评论 -
中位数 POJ3784
中位数POJ3784思路题干在这:POJ3784本题求输入一串数据时动态变化的中位数。建立一对对顶二叉堆,左边是大根堆右边是小根堆,第一个值是第一个中位数。然后对于偶数次输入,根据其与中位数的大小放入相应的堆中,然后记录放入的哪一堆。对于下一个奇数次的输入,要根据上一个数放入的堆和这个数与中位数的大小来更新中位数和两个堆。小根堆我比较懒,就在优先队列放一个数的相反数。还有就是本题的样例给错...原创 2020-02-04 13:36:10 · 261 阅读 · 0 评论 -
最好的牛栏POJ2018
最好的牛栏 POJ2018思路题干在这:POJ2018本题就是求一个正整数数列中平均数最大且长度不小于 f 的子段二分最大的平均数,让每个元素都减去这个平均数,再求子段和,如果最大的子段和大于0,就说明平均数还能更大,以此二分答案。注意输出要求,二分左右端点l,r应该输出1000*r(结果应该是一个整数的话,l * 1000会少一)ac代码#include<stdio.h>...原创 2020-02-04 10:18:20 · 247 阅读 · 0 评论 -
最高的牛 POJ3263
最高的牛 POJ3263思路题干在这:POJ3263给出一条关系a能看见b,就把a,b之间的牛高度减一。我们可以用前缀和表示高度,简化区间减一操作。最高的牛高度必为初始设置的0。各牛的高度为前缀和加上最高牛的高度,输出即可。注意可能会有重复的关系,注意排除这种情况。ac代码#include<stdio.h>#include<map>#include<i...原创 2020-02-03 20:23:55 · 191 阅读 · 0 评论 -
激光炸弹 BZOJ1218
激光炸弹问题链接:BZOJ1218思路先统计各位置的总价值,然后直接原数组求出二维前缀和。根据几何关系算(i,j)到(i+R-1,j+R-1)的正方形内部的价值,边算边更新最大值。注意i+R-1和j+R-1可能会越界,和5000取min即可。ac代码#include<cstdio>#include<iostream>#include<algorithm&...原创 2020-02-03 15:24:54 · 186 阅读 · 0 评论 -
奇怪的汉诺塔 POJ1958
奇怪的汉诺塔 POJ1958思路题干在这里:POJ1958就是求汉诺四塔问题设d(i)表示三塔步数,f(i)表示四塔步数显然有f(n)=min(2*f(i)+d(n-i))直接做就好ac代码#include<cstdio>#include<algorithm>#include<iostream>#include<math.h>...原创 2020-02-03 19:47:42 · 214 阅读 · 0 评论