POJ
青禾script
这个人太弱,所以也不知道能写什么23333
展开
-
[POJ 2823] Sliding Window · 单调队列
单调队列。会做BZOJ1047怎么可能连这种基础题都做不起来= =完全就是个裸的单调队列,不过队列里存的还是数组中对应值的下标,而不是值,方便做类似删除的操作。附:单调队列基本不可能要写二分的,但是这题太逗比了。。。而且就算写了二分再加上读入输出优化也只有C的才能过,GCC过不了。。。难道是表示对不会C的C++党的鄙视吗?!就当是练一下二分,顺便第一次写了输出优化(没想到还真有这种东西原创 2015-04-08 09:13:49 · 355 阅读 · 0 评论 -
[POJ 1228] Grandpa's Estate · 凸包
题目大意:给出一些点,保证是一个凸包上的顶点或边上的点,问这个凸包是否是唯一确定的,即是否能在凸包外再添加一点使得凸包变得更大。思路:首先可以确定,对于凸包上的两个顶点,如果这两个点的连边上没有点的话,那么我们可以加一个点使得凸包变得更大(如图)那么我们只要确定是否每两个相邻的顶点的边上是否已经有点就可以了。判断方法:首先,对于三点i,i+1,i+2,如果向量和的叉积为0,则这三点原创 2015-12-25 21:29:01 · 507 阅读 · 0 评论 -
[POJ 3744] Scout YYF I · 概率DP & 矩阵快速幂
题目大意:一个数轴上有n个地雷,坐标给定,熊孩子一开始在位置1,每次向前跳1格的概率是p,跳两格的概率是1-p,求他安全跳过这n个地雷的概率。第一次写概率DP,WA了两发以后莫名其妙就AC了。。。太弱了。。。首先对于一个地雷,我们肯定是要一次跳两格来过去;而每两个地雷之间的区间是安全的,我们可以直接用f[i]=f[i-1]*p+f[i-2]*(1-p)推算,f[i]表示到位置i的概率。假设原创 2015-11-09 21:52:22 · 872 阅读 · 0 评论 -
字符串 专题训练 · 最长回文子串之Manacher算法
在字符串问题中,有一类经典的问题是求字符串中的最长回文子串,而解决这类问题的算法也很多,例如后缀树或者分治+拓展KMP。但是后缀树的极为复杂,没有实用性;分治+拓展KMP的复杂度达到了O(NlogN),并不能算是非常高效。对此,我们可以学习一种专门的算法:Manacher算法。Manacher算法的核心可以用一句话来概括:在回文子串中找回文子串,带上这个思想应该会更好理解。可以参看星夜永恒原创 2015-08-16 10:48:36 · 591 阅读 · 0 评论 -
填(wa)坑计划
好吧这些都是唔蒟蒻暂时没写出来又找不到错的错题。。。以后有心情再来填坑吧。。。BZOJ 3916#include #include #include #include #define N 2001000using namespace std;bool a,b,c;char s[N];int n,m;int main(){ int i; scanf原创 2015-06-13 12:25:15 · 610 阅读 · 0 评论 -
[POJ 1195] Mobile phones · 树状数组
二维树状数组模板,不过注意要用读入优化。#include #include #include using namespace std;#define lowbit( x ) (( x ) & ( -x ))const int N = 1025 ;int n,f[N][N],x1,y1,x2,y2,c,p;void edit( int x , int y , int c ) {原创 2015-05-22 07:54:58 · 439 阅读 · 0 评论 -
[POJ 2135] Farm Tour · 费用流
乍一看题目,这特喵的怎么能扯上MCMF?乍一又思索,其实好像也是可以的样子......PS:我不会告诉你其实solution是EM。读入的每条边的长度作为费用,将每条边的流量设为1,这样就能限制每条边只走一次啦~那么问题来了,怎样保证只走两条边呢?于是我们再连一条0->1和n->n+1的流量都为2的边,并且程序从0做到n+1,于是此题就完美转化为了MCMF。(MCMF的讲解正在写-_-原创 2015-01-09 12:15:32 · 494 阅读 · 0 评论 -
树状数组初探
这两天笔者学习了一下树状数组,感觉真的是非常神奇的数据结构。(ORZ发明者)如果我们要求带修改的序列区间和,可以直接用数组或者用前缀和做,但是数组求和是O(N),前缀和修改是O(N),两者的劣势也非常明显了,这时——树状数组出现了,这可以形象地比喻为连接数组和前缀和的桥梁:树状数组修改和求和操作都是O(logN)级别的。原创 2015-03-18 15:25:55 · 436 阅读 · 0 评论 -
[POJ 1804] Brainman · 逆序对
归并排序求逆序对数。http://blog.csdn.net/acdreamers/article/details/16849761#include #include #include #include using namespace std;const int N=10005;int T,n,a[N],ans,tmp[N];void merge_sort(int l,int原创 2015-06-20 21:04:03 · 512 阅读 · 0 评论 -
[POJ 1469]COURSES · 二分图
借着这道模板题学了下二分图(orz蒟蒻)。题目大意是有p个课程和n个学生,每门课程会有k个学生愿意选择,但每个学生只能选择一门课程,问你能否使每门课程有且仅有一名学生。先讲一下二分图匹配:关于二分图原创 2015-05-14 09:42:48 · 495 阅读 · 0 评论 -
[POJ 2182] Lost Cows · 树状数组
着手准备pku夏令营所以得把英文题好好刷一刷。写树状数组只是觉得比较好写一开始机房里的小伙伴想到了逆推的方法,但没有想出来怎么确定值,然后发现可以用树状数组来搞。从后往前搞,第i个位置上原本的值是ans[i],那么之前比ans[i]小的数就是a[i] ,之后比ans[i]小的数就是sum(ans[i]),所以ans[i] = a[i] + sum( ans[i] ) + 1 ,其中a[原创 2015-05-20 21:20:15 · 404 阅读 · 0 评论 -
[poj 2417] Discrete Logging · BSGS
BSGS,baby step giant step,大步小步法,很形象的概括了这个算法的核心,算法用于解决一个很经典的问题:,给定A,B,P,其中P为素数,求一个可行解x大步小步法算法详解:猛戳这里#include #include #include #include #include using namespace std;#define ll long long原创 2016-02-15 22:55:27 · 597 阅读 · 0 评论