POJ
文章平均质量分 64
severus_vinegar
这个作者很懒,什么都没留下…
展开
-
codeforces 400(div2) D
题意:现在有n个点,但是有k种类型,每种类型有ci个。现在有m条边连接这n个点,现在问对于每个type里面的点是不是可以cost为0到达自己同类型的点。如果可以输出Yes,并且找到每个类型间相互到达的最短距离。输出矩阵。思路:对于同一个类型的就用bfs,如果某个点能够到达跟它同类型的其他点,那么这个类型一定能够相互达到。然后缩点。用floyd就可以求解。trick:这道题目不难原创 2014-03-28 21:41:58 · 499 阅读 · 0 评论 -
POJ1011 POJ2362(9.7博文)
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->(忘了上传)泪奔啊。。。神们两个月前过的题我现在才做,还不太会。。。呜呜。。。首先鸣谢叶神。。。我终于把神博客里的搜索写完了。原创 2011-10-04 15:53:42 · 279 阅读 · 0 评论 -
POJ 2983 && POJ 1201
做了两道差分约束的题目。但是都是用的bellman-ford来写的。其中POJ1201开始的时候TLE 了,就是在最后一个更新的时候由min到max的更新d[ ].这样的话会重复操作。后来将其由max到min就200+飘过。POJ2983是最开始的时候存边点的时候有问题。所以WA原创 2011-09-24 21:29:32 · 464 阅读 · 0 评论 -
POJ2513
开始的时候只是用了tire树。。但是没有判断图是否连通。。。觉得只要奇数个的是0或2就好了。。后来发现了这样的情况:b b\n s r\n s t\n满足奇数个那个条件但是是impossible的。。于是用并查集。。想原来最开始学习的就是并查集,现在竟然很是生疏。。。union原创 2011-09-21 15:00:07 · 359 阅读 · 0 评论 -
POJ3253
这完全是一道记录我成长的题目。 开始的开始看到这道题目,貌似是watercube的第一场比赛。貌似是第一次网络赛。那时候是盐在想这道题目。YY了各种方法没有能过sample。后来叶神告诉我那是什么哈夫曼树。但还是没有去写,那时根本不懂什么是哈夫曼树。原创 2011-09-21 09:33:14 · 385 阅读 · 0 评论 -
POJ1584
很久没有写过解题报告了。但是今天这题,太伤我了。是我看了数据才发现自己哪里有问题。真是,判断一个多边形是不是一个凸的多边形直接用叉乘就好了。我还想当然的求出它的凸包,然后想当然的将多边形的点数与凸包的点的个数作对比。。。我太傻叉了。结果后来有懒得重新再写一份,于是在原来的代码的基原创 2011-08-24 23:45:42 · 419 阅读 · 0 评论 -
POJ2503
写了几道hash的题目,结果都是水过的。只有这一道老老实实的用链表,用折叠法(完全看不懂这代码)。最开始想水过,结果MLE。后来想的是将所有的字母全部加起来然后hash,结果TLE了,后来又想尝试着将所有的字母乘起来然后mod一个素数。结果RE了。心如槁灰。于是看DISCUSS,原创 2011-09-19 23:16:23 · 516 阅读 · 0 评论 -
POJ2299
对于这道题我的收获很多。原来第一次写树状数组的时候没有注意自己写的是求逆序数的。现在又弄来用了。求逆序数有两种方法,一种是用数状数组,而另一种就是用归并排序。今天终于懂了什么是离散化。当数据我只是求他们的关系,而与他们本身无关的时候就可以用树状数组。把大数弄小直到我能够用数组打开原创 2011-09-16 22:01:06 · 630 阅读 · 0 评论 -
POJ3436
这是第二道网络流。。=。=我是有多落后。。这题完全是看的别人的思路,照着别人的代码敲的。感觉这样的拆点方式很是巧妙,是按机器的流入流出进行拆点。分为两个点。然后再进行连接。开始的时候一直WA。是因为没有将为2的机器某点与源点相连。也没有将其与汇点相连。只是感受到了网络流的一点点美原创 2011-09-16 20:43:29 · 498 阅读 · 0 评论 -
POJ3080
字符串的题目,第一次感受到了C++里面string的美啊!!!完全是太棒了。很是喜欢find。和substr。。。太方便了。对于找子串来讲。当然这道题用C来写就不得不用KMP相对来讲要麻烦很多啊~~~上代码:#include#includeusing namesp原创 2011-09-16 20:37:20 · 454 阅读 · 0 评论 -
POJ2187
不是题目本身只是想存一下旋转卡壳的模板~~~这是一道标准的模板题。上代码:#include#includeusing namespace std;struct point { int x, y; };bool mult(point sp, point原创 2011-08-12 23:46:15 · 378 阅读 · 0 评论 -
POJ1094
从昨天写到今天,真是弱爆了。就是用拓扑排序。但是我的存在几个问题。首先,我没有想到如果得到的关系既不能确定他们的大小关系,又有矛盾的地方就应该输出矛盾。。。所以当我一发现不能确定就return,导致我WA了。。。后来睡觉的时候想到优先级,但是又懒得起来改,于是今天晚上编完了离散的答案后,就来改,其中还有一些零碎的小细节需要注意,就不赘述了。上代码:#include#include#原创 2011-11-13 23:48:38 · 672 阅读 · 0 评论 -
POJ2528
这是一道很值得一说的题目,首先这道题又用到了我不会的离散化。通过看HH神牛的博客,大概懂所谓的离散化。离散化就是将大区间映射到小区间内。这道题有几个要点首先是先将所有的值排一个序列,然后将其中重复的值消去。。。如果两个值间的的距离值相差2个距离则在中间加上一个值。在这里要说明HH神牛的代码貌似有两个小错误,首先是在两个数之间再加上一个数的时候,应该是x【m++】=x【i-1】+1;第二是x数组开小原创 2012-01-12 17:48:18 · 567 阅读 · 0 评论 -
编号(长度)动态规划
题库a) 最长不下降子序列以一元组(i)作为状态,表示第i个作为序列的最后一个点的时候的最长序列。于是很容易想到O(n2)得算法。但本题可合理组织状态,引入一个单调的辅助数组,利用单调性二分查找,优化到O(nlogn)。关于优化详见优化章。一些问题可将数据有序化,转化成本题。 应用:拦截导弹(NOIP99 Advance 1) 就是原题。原创 2012-01-15 23:11:41 · 423 阅读 · 0 评论 -
codeforces 228(div1) C
题意:有几堆卡片 每堆卡片里面有多张 每张卡片上面有一个数字,两个人轮流拿,一个只能拿最上面那张,一个只能拿最下面那张。假设每个人都是最优的策略,求最后两人拿到的卡片上的数字和分别为多少。思路:对于每堆,拿最上面的人拿上半部分,拿最下面的人拿下半部分,如果该堆的卡片数是奇数,就把中间那张放在一边。偶数就是双方对半拿。最后将拿出来的奇数的中间那张卡片从大到小排个序,两个人按顺序来拿。最后原创 2014-02-05 23:37:13 · 761 阅读 · 0 评论 -
pku3013
将求的值算一下,会发现其实是求从1到每个点的最短路乘以点的权值的和,转化成简单的最短路,但是有几个很烦的地方,就是不能用vector,后来手写邻接表每次都遍历一遍结果也是T,后来存了每个链表的最后一个节点就过了。代码:#include#include#include#includeusing namespace std;long long w[100000];lon原创 2013-07-28 15:41:33 · 482 阅读 · 0 评论 -
pku2449[第k短路]
打算开始做题了。在这样耗散下去实在是不好意思跟别人讲弄过ACM。这是一道最基本的第k短路的题,很久没有做过A*的题几乎都忘了原理。还有就是这次写个dij都一直手贱。思路:1.A*:现在对于A*的理解是:f(x)=h(x)+g(x).其中h(x)是从起始点到当前节点的花费,g(x)是估价函数,估计的是当前节点x到目的节点的花费。这个估计值一定要比实际值小,对于A*的不同就是估价函原创 2013-07-26 20:22:10 · 758 阅读 · 0 评论 -
codeforces-Problem 193B - Xor
这道题的减枝很好。如果是我自己写肯定不会写这样的减枝。这个减枝主要是剪掉了连续的两次异或的所有情况。代码如下:#includeusing namespace std;int b[50],p[50],k[50];__int64 ans;int n,u,r;void dfs(int step,int a[],int way){ int a1[50]; i原创 2012-07-02 21:01:37 · 552 阅读 · 0 评论 -
POJ 3352 || POJ3177
开始的时候是去做论坛上的poj上的2942,但是发现我不会做,于是去查关于双联通的问题,然后就看到了tarjan算法,记得国庆在家的时候,就想学来着,结果本身对于强连通什么的基础的东西都没有弄懂,跟不要说去看tarjan算法了。。。全是一团雾水。一周前各种找资料,但是发现很多博主没有真正的理解tarjan,于是混用,找了很多份博客来看由于大家的理解是不同的于是我越来越糊涂。后来看到一个博客里面提到原创 2011-12-09 23:44:04 · 679 阅读 · 0 评论 -
POJ3659
我讨厌这样的题!!!就是你有思路,你的状态方程什么的都是正确的,但是就是因为敲码的什么其他原因,你直到现在才过!!这道题,开始的时候没有仔细的读题,把它当成了线段覆盖来做,然后就WA了。。后来发现不对,这是一道点覆盖的题目。最开始想的是用01两个状态来记录节点,后来手跑的时候发现有bug。。每个点需要有三个状态。0状态是该点没有tower,但是覆盖了该点。1状态是该点有tower,覆盖该点。2状态原创 2012-06-17 22:08:21 · 797 阅读 · 0 评论 -
POJ1849
这道题开始的时候完全没有理解它在说什么,后来看了别人的解题报告,然后自己画图理解。但是由于没有太懂,直到现在也没有完全明白,只是直观上的感觉是这样,并没有严格的证明。借用一下别人的思路:思路1:这道题画图分析了以后会慢慢的发现答案其实就是所有边的和的二倍减去从某个节点出发的最长两个路径之和。因为除了从某节点出发的两条路径之外其他的边都要走两边。这个节点是可以选的,这两条路径也是可以选的,因此我原创 2012-06-17 13:29:10 · 625 阅读 · 0 评论 -
POJ1383
树的直径。开始写了一个dfs的然后RT了。于是后来改成写两个bfs,然后就过了。思路,两次bfs,第一次随便从哪一个节点开始找到一个距离它最远的节点。然后第二次bfs从找到的最远的节点开始找最远的路,即为树的直径。这里有一个很好的证明,从别人博客看来的:BFS找到的最长路即为树的直径;原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点证明: 1) 如果u 是直径上的点原创 2012-05-19 00:37:41 · 510 阅读 · 0 评论 -
HDU2196
很早之前就说要把树形DP学会,现在才开始。暑假就快到了,而我却无所事事了一个月,这一个月几乎没有学算法,几乎没有敲题。周末和队友做了金华的题,觉得还好。但是那么简单的B我却无从下手,又觉得眼熟,原来之前的练习赛中出现了这道题,然后不会就不会了。现在开始恢复状态了,好好打完一个暑假,尽全力,不要留遗憾也就够了。回归到这道题目中来,就是简单的两次DFS。首先第一次是建树,并且求出经过它儿子节点的最原创 2012-05-15 17:14:13 · 1653 阅读 · 0 评论 -
POJ1742
会DP的都是大神。这道题主要想说的就是在use这个数组的应用上,之前一直敲出来都是错误的代码,百思不得其解,现在明白了,是在求的时候对于硬币的使用不是一次的之前就是没有用use,少了一个状态,使整个思路都是错的。唉,DP的道路漫漫啊。。。还有图论,今天如果不是碰到做过的那道双连通分量的题,不知道死得有多惨。唉。。上代码:#include#includeusing namespace原创 2012-01-30 00:12:49 · 408 阅读 · 0 评论 -
POJ3259
这是我的第一道bellman-ford模板题。但是还是要记录一下。这里有一个很不错的模板。贴上来~~~【zz】地址:http://www.wutianqi.com/?p=1912/** About: Bellman-Ford算法* Author: Tanky W原创 2011-09-07 22:23:28 · 724 阅读 · 0 评论 -
POJ2159
这道题是开始没有理解题意,然后进入DISCUSS去看别人的理解,结果有个人讲了思路和题意,所以很快就过了。上代码:#include#include#includeusing namespace std;int a[27],b[27];char c[11原创 2011-08-08 00:07:51 · 215 阅读 · 0 评论 -
POJ3278
其实昨天完会之后,还是很失落的。去不了现场赛一个假期的努力,没有了。其实今天做了搜索之后觉得去不了也是正常的,我的水平实在是太低了。这道BFS结果我弄成了DFS。。结果一直TLE 。。后来看了DISCUSS 才发现这道题是BFS。哎,很是失落。我的搜索几乎都没有做过。这道题的还是原创 2011-09-02 21:39:53 · 1667 阅读 · 1 评论 -
POJ2407
大水题,直接用欧拉函数就好。。但是在其中发现了一个关于筛法素数的问题:就是我不能找到大于50000的素数。还有在求素数的时候,我也不知道是哪里的问题每次prime[0]的值都不是2.得我自己在后面再次定义。附上代码:#include#includeint a[原创 2011-08-02 21:48:38 · 389 阅读 · 0 评论 -
POJ2398(POJ2318的姊妹篇)
太恶心了。。。这道题题目有残缺。没有告诉需要排序,没有告诉数据变大需要用long long.开始一看不就是2318么。于是只是把输入输出改掉。然后第一个SAMPLE就错了。对比发现它的数据是没有顺序的,好吧。于是开始排序用的qsort很不幸,交上去就WA了。。。想想怎么可能错呢。原创 2011-07-31 21:08:39 · 430 阅读 · 0 评论 -
POJ2506
我被恶心到了。这又是一道水题高精度+递推就好了。。得了WA主要是当n=0的时候居然是1.太伤人感情了。。。。上代码:#include#includeint a[260][100],b[260],c[100];void f(){int i,j,n;f原创 2011-07-30 01:07:33 · 527 阅读 · 0 评论 -
POJ2318
大水题,今天开始做计算几何,这应该是我的第一道计算几何。只是用叉乘判断了一下而已。今天看了一下午都还没有到凸包,这效率。。。上代码:#include#include#includestruct box{int x1;int x2;}s[5010];原创 2011-07-31 20:18:39 · 420 阅读 · 0 评论 -
POJ1811(没有AC依旧TLE)
今天估计我是脑残了才会来写这道题。。现在还在TLE中。。。用了miller_rabbin和pollard_rho其实到现在我也不太清楚pollard_rho是如何实现的。。。只是这道题真的好综合啊。。。而且好难啊。。。不会不会!!!!为毛我的代码现在还是TLE。。。附上代码:原创 2011-07-31 00:27:22 · 412 阅读 · 0 评论 -
POJ1142
又来一道题目。。。还是很水的题目,但是我还是MLE了一次。WA了两次。主要是做题的经验太少太少了。开始的时候开的是一个10^8的数组来存储结果。果断MLE了。但是后来突然想到如果一个数不能整除sqrt(n)前面的素数那么它肯定是一个素数啊。想到之后,又回想起貌似在哪里看到过这个结原创 2011-07-29 00:22:19 · 946 阅读 · 0 评论 -
POJ1061
其实这是一道正常人都可以秒掉的题目,看过扩展欧几里得,但是没有看到一些算法上的细节。以及求ax≡b(mod n)中的X解的细节。没有注意到X0要(mod n)所以不多说只是上代码:#includelong long n,m,x,y,l,d,x1,y2;void extend_Eu原创 2011-07-28 22:59:04 · 426 阅读 · 0 评论 -
poj2488坑爹的大水题
这是一道很多恶心细节的题目。在做完了这道题后给了我很多反思。为什么我的DFS总是不能一次的A过。。。现在发现代码的规范化是很有必要的。今天要学会规范自己的代码。。。这道题先不说它的其他的常规的坑,那些在DISCUSS里面就可以找到。对于我来说,这题之所以调了这么久还在于回溯本身的原创 2011-07-19 07:43:18 · 643 阅读 · 1 评论 -
POJ1012
我被自己雷得外焦里嫩。。又是一道模拟,但是只有13个输出的数据,开始有个邪恶的想法,人工手算模拟吧。。。后来想到阿里精英赛的惨痛教训,还是放弃了。于是开始敲代码。这是一道类似当年的猴子选大王的题,于是沿用那个思路敲啊敲,终于,有输出了~~~兴奋之下,再看SAMPLE也是对的~~前原创 2011-07-25 00:32:28 · 1122 阅读 · 0 评论 -
poj2249
果然是推荐题啊~~~果然有收获啊~~~这题就是让你求c(n,m)开始的时候我是这样想的不就是求(n*(n-1)*...*(k+1))/(n-k)!吗?觉得应该很是简单。。用数组进行记录n-k个数是否被除用两个循环不就好了啊记得离散的上机的那道题也是这样的。于是开心的敲完代码,提交原创 2011-07-23 19:01:37 · 775 阅读 · 0 评论 -
POJ1269(WA)实在不知道问题在哪里了。。。麻烦帮看。。
我真的不知道这份代码有毛问题。。。知道的同学麻烦指出,谢了~~~上代码:#include#includestruct point {int x;int y;};int det(int x1,int y1,int x2,int y2){ret原创 2011-08-03 00:24:46 · 285 阅读 · 0 评论 -
POJ2653
唔,这也是一道水题。判断线段相交~~~开始TLE那是在循环里面没有加break;加上就AC了~~~上代码:#include#include#includestruct point{double x;double y;};struct point原创 2011-08-03 22:54:57 · 333 阅读 · 0 评论 -
POJ2484
用对称做。当n>=3的时候,Bob只要对称着取硬币就好了。这应该事最简单的博弈了吧。。上代码:#includeusing namespace std;main(){int n;while(scanf("%d",&n)!=-1 && n!=0){if(n原创 2011-08-04 23:48:28 · 242 阅读 · 0 评论