03 2012 档案

摘要:A:bfs+优先队列。。。。第一天只能感染defence小于等于1的并且与之连接的机器,第二天只能感染defence小于等于2的并且与之连接的机器.。。。。。依次往后推。View Code #include <cstdio>#include <cstring>#include <iostream>#include <queue>#define maxn 505using namespace std;int g[maxn][maxn],ct[maxn*maxn];int dir[4][2] = {{0,1},{0,-1},{1,0},{-1,0}} 阅读全文
posted @ 2012-03-31 21:02 E_star 阅读(210) 评论(1) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3253View Code #include #include #include #include #define maxn 20007using namespace std;struct cmp{ bool operator() (int &a,int &b) { return a > b; }};int main(){ priority_queue,cmp>q; int n,i,sum,a; while (~scanf("%d",&n)) { while (!q.empty()... 阅读全文
posted @ 2012-03-31 11:25 E_star 阅读(223) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2503很简单的一个哈希,本来想求和然后模一个数哈希呢,提交果断tle。。。郁闷。最后看了看别人的哈希,在处理的时候好像用到了经典的unix的ELF哈希函数给输入字符串生产哈希值.我直接套的这个函数,提交就A了。。。unix的ELF哈希函数View Code unsigned int ELFHash(char* str){ unsigned int hash = 0; unsigned int x = 0; while (*str){ hash = (hash << 4) + (*str++); ... 阅读全文
posted @ 2012-03-31 10:12 E_star 阅读(177) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2002首先枚举正方形的任意两点,然后有由这两点确定其他两点,确定后再到给定的点中做二分查找如果都存在,则找到了一个正方形。首先排序,然后查找,记住这里重复计算了,要除以2推导过程转载自:http://blog.csdn.net/zsc09_leaf/article/details/6204705公式推导://如图所示,正方形的四个点分别为(x1,y1),(x2,y2),(x3,y3),(x4,y4)//假设一开始给出的点为(x1,y1),(x2,y2)且已排序//根据全等三角形,可以得知2个蓝色△全等,2个红色△全等(注:此处也可推右边的正 阅读全文
posted @ 2012-03-30 11:50 E_star 阅读(259) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1840刚拿到这道题时,想到的肯定是暴力枚举啊。肯定超时。想到了立方乘系数,如果再枚举的话,还是会超时的。。无语。。最后看了看了结题报告。。果然霸气。。。思维还是不够灵活是。。将式子a1*x1^3 +a2*x2^3 + a3 * x3^3 + a4 * x4^3 + a5 * x5^3 = 0;转化成a1*x1^3 +a2*x2^3 + a3 * x3^3 = - a4 * x4^3 - a5 * x5^3两边相等,将左边的数利用hash建立映射,然后枚举右边的数和利用hash查找。。。开散列:挂链 891msView Code #inclu 阅读全文
posted @ 2012-03-29 19:55 E_star 阅读(196) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2151题意是:对于acm出题,出m到题,你要保证每支队伍至少做出一道题目,并且冠军队伍要做出至少n道题目;我们只要求出所有队伍至少解决一道题目的概率(pa),和所有队伍解决出(1--n -1)到题目的概率pb,然后pa-pb就是我们所需要的答案了。。dp[i][j][k] 表示第i支队伍,在前j道题目中,解决了k道题目的概率;则有dp[i][j][k] = dp[i][j - 1][k]*(1 - p[i][j]) + dp[i][j - 1][k - 1] *p[i][j];分第j道题目做出来与没做出来两种情况dp[i][j][0] = 阅读全文
posted @ 2012-03-29 16:36 E_star 阅读(216) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/contest/168A:很水的题,可是个竟然错了一次丢人啊,当时舍友在给女朋友打电话,所以有点分心吵啊。。。粗心的错误。先求出总共需要的巫师数量t,然后与x参加的巫师数量比较,如果大于x输出t-x,否则输出0..这里LDJ处理的时候printf("%.lf",ans);这里会有四舍五入,所以导致了错误,借鉴。。。B:虽然属于简单题,但是题意没看懂。。。郁闷。。其实题意很简单:就是如果不是amplifying line,则不输出空格和换行,如果是amplifying line则原样输出,特殊情况:两个amplifying line 阅读全文
posted @ 2012-03-28 21:07 E_star 阅读(306) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3274看到这个题的时候直接给理解错了,以为求存在第k个属性,的牛的个数,直接谢了个排序+二分查找样例过了一交WA了。。心情很郁闷。。自己完全把题意理解错了。题意是求满足i到j 的差值最大且i到j牛的前k个属性每种属性求和,并且和要相等。求出最大的j - i;sum[i][j] 表示从第一头牛到第i头牛拥有j属性的牛的个数,则根据题意有,如果i -> j 最大则有sum[j][0] - sum[i][0] = sum[j][1] - sum[i][1] = sum[j][2] - sum[i][2] = .......... = sum 阅读全文
posted @ 2012-03-27 21:56 E_star 阅读(247) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3349用开散列的方式处理哈希,才开始的时候,在isok判断两个雪花是否行等时,我错认为只要找到一个相同的数字,然后顺时针逆时针寻找如果没能查找到就算是不想等了,两组数据可能有形同的数字不知一个,所以在这里贡献了好几次WA.笨啊。。。例如数据:21 2 3 2 4 52 4 5 1 2 3应该是相同的。。。挂链方式处理。。View Code #include <iostream>#include <cstdio>#include <cstring>#define maxn 177777using names 阅读全文
posted @ 2012-03-26 21:14 E_star 阅读(227) 评论(0) 推荐(0) 编辑
摘要:#include <iostream>#include <map>#include <string>#include <cstdio>using namespace std;int main(){ map<int,string>mp; mp.insert(pair<int,string>(1,"GGGH")); mp.insert(map<int,string>::value_type(2,"FFF")); mp[3] = "UGUIHGUH"; pa 阅读全文
posted @ 2012-03-25 23:28 E_star 阅读(245) 评论(0) 推荐(0) 编辑
摘要:http://acm.sdut.edu.cn/web/contest_show.php?contest_id=1097A题:(字符串问题)就是给定字典。然后查找错误。分三种情况1:One letter is missing (e.g.,letteris writtenleter)or too much (e.g.,letteris writtenlettter).2:One letter is wrong (e.g.,letteris writtenketter)3:The order of two adjacent letters is wrong (e.g.,letteris writte 阅读全文
posted @ 2012-03-25 18:43 E_star 阅读(338) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/contest/166这次rating终于涨了。。呵呵。。。A:水题,不过看了好长时间才看懂,才开始我的下标是从0开始的k忘减一了,结果贡献了一次wa。。。。先按解题数和罚时排序,然后统计相同名次的人的个数。。C:大部分的时间都花在了调这个程序上了,唉。。不过到了最后1Y呵呵。。。题意:给你随便的n个数,以及要求得到的中位数x.让你随便添加任意数,是的添加后的序列的中位数是x。求最少添加个数。。。思路:首先检查x是否存在序列中,如果不存在则添加x然后从小到大排序,求出中位数zh。然后将求的中位数zh与x比较,如果中位数zh>x则在左边添加比中位 阅读全文
posted @ 2012-03-24 10:50 E_star 阅读(232) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1611思路:统计出和0能够联系在一起的点,然后输出其个数View Code #include <cstdio>#include <iostream>#define maxn 30004using namespace std;int f[maxn],num[maxn];//num记录与0有联系的个数int n,m;int find(int x){ if (x != f[x]) { f[x] = find(f[x]); } return f[x];}void Union(int x,int y){ x... 阅读全文
posted @ 2012-03-23 21:32 E_star 阅读(202) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2299归并虽然知道了过程但是敲起代码来还是出现各种小错误。。。唉,,,View Code #include <cstdio>#include <iostream>#define maxn 500007using namespace std;int a[maxn];int n;int tmp[maxn];__int64 ct;void merge(int s,int m,int e){ int i = s,j = m + 1; int k = 0; while (i <= m && j <= 阅读全文
posted @ 2012-03-23 20:56 E_star 阅读(190) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3080学习:http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html才开始自己,思路搞错了,先把前两个求最长公共子序列,然后依次用最长公共子序列与2,3,4,。。。m比较求最长公共子序列。。贡献了3次wa直到看到这组数句才发现自己的错误:13AAATTTGGGTTTGGGAAAGGGTTTAAAprint:AAA按我的思路会输出TTT的。。唉。。因为前两个最长公共子序列为TTTGGG再将它与第三组比较时,就出来TTT了。而第1,2组可以得到AAA然后在于第三组的AA 阅读全文
posted @ 2012-03-22 20:55 E_star 阅读(272) 评论(0) 推荐(0) 编辑
摘要:View Code #include <stdio.h>#include <string.h>int main() { char a[5] = "ABCD"; char b[8] = "abcdefg"; char c[8] = "abcdefg"; char d[5] = "ABCD";strcpy(a,b); //长的复制给短的strcpy(c,d);//短的复制给长的printf("%d\n",strlen(a));//a的长度直接增加了printf("% 阅读全文
posted @ 2012-03-22 18:59 E_star 阅读(389) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1035开始自己把它想成了一个模拟题,就是模拟整个过程,纯暴力,不过把输入的字符串按长度排序,记录每个长度的起点终点,然后在长度范围内查找,输出时注意不能出线重复,以及按在输入序列中的出现顺序输出,所以要编号,输出时,按编号排序输出,对编号进行hash映射,判重,可是就是TLE那整的我叫个郁闷啊。。。下面这个方法很简洁明了,自己还是思维不够完善,没考虑好。View Code #include <cstdio>#include <cstring>#define maxn 10007using namespace std; 阅读全文
posted @ 2012-03-21 20:28 E_star 阅读(274) 评论(0) 推荐(0) 编辑
摘要:昨天晚上做了一下tc桑心啊。。。现自己对c++类不会写啊。哎。。悲剧啊。。。以后要坚持写tc锻炼自己的编码能力。300:给定一个序列,其中包括L(向左走),R(向右走),?(不确定可以玩左也可以往右)。分析题目可知:?既可以增加向左的距离,又可以增加向右的距离,?如果向左比较远那么?就全是L,如果向右距离远那么?就全是R这样就可以求出最远距离了。。500: 按照要求从(0,0)出发,到每一个点其实每个点的x+y就是从(0,0)到达这个点的步数,只要有一个满足就可以输出can,如果没有一个满足就输出cannotView Code #include <iostream>#include 阅读全文
posted @ 2012-03-21 13:12 E_star 阅读(240) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3436题意好难懂,有n个工厂加工电脑半成品,半成品电脑需要p个部件。输入p(需要的部件数) n(工厂数)Qi (工厂最大生产量) Si,1Si,2...Si,P (s表示在工厂i声场必须满足的条件1必须已经有了,0可以没有,2可以有,也可以没有)Di,1Di,2...Di,P,(经过i厂生产之后,所满足的条件1有,0木有)题目建图不好了理解,建完图后就是套最大流模板的问题了。。。首先构建网络图,一台电脑在进入生产线之前各部分的零件状态肯定全为0,离开生产线时,各部分的零件状态肯定全为1.所以源点与输入状态全为0的机器相连,输出状态全为1机器 阅读全文
posted @ 2012-03-20 19:39 E_star 阅读(304) 评论(0) 推荐(0) 编辑
摘要:A:http://acm.sdut.edu.cn/web/problem.php?action=showproblem&problemid=2216polla队长很快就做出来了。本以为是水题,可是今天看了看,也不是那么水。orz之。。自己刚开始把题意给理解错了,以为只有IXCM可以重复出现,其他只能出现一次,而且IXC只能出现三次。愚蠢啊。。。题意是给你罗马数字然后你求和后再输出罗马数字,rule里面的第二条我给理解错了。其实就是说明出现减式时只能是连续的两个其组合是I (X,C) X(L,C) C(D,M)其实根据后一个不能大于前一个的10被就能推出这个组合。。。然后 IX = 4 阅读全文
posted @ 2012-03-17 19:20 E_star 阅读(374) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1459才开始套自己的那个模板就是过不了一直TLE,最后看了别人过得修改了一下自己的模板最后1391s险过。。。本题是一个多源点,多汇点问题,建立超级源点与汇点,然后套用模板求解。。EK O(V*E^2)View Code #include<iostream>#include<queue>#include<cstdio>#include<cstring>using namespace std;const int inf=100000000;const int maxn=105;int map[m 阅读全文
posted @ 2012-03-17 11:21 E_star 阅读(361) 评论(0) 推荐(0) 编辑
摘要:学习地方:http://www.wutianqi.com/?p=3107EK模板:O(V*E^2)临街矩阵实现:int bfs(int s,int e){ int i; queue<int>q; CL(vt,false); CL(pre,-1);//初始化 for (i = 0; i <= n + 1; ++i) f[i] = inf;//注意这里的范围 q.push(s); vt[s] = true; while (!q.empty()){ int u = q.front(); q.pop(); for (i = 0; i... 阅读全文
posted @ 2012-03-16 21:18 E_star 阅读(337) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3020求最小路径覆盖问题 ,对于有向图最小路径覆盖 = 一边的点数 (x集或y集)- 最大匹配无向图最小路径覆盖 = 一边的点数 (x集或y集)- 最大匹配/2注意建图的细节实现。。。还有注意转化点后的取值。。View Code #include <iostream>#include <cstring>#include <cstdio>#define maxn 45using namespace std;int map[maxn*15][maxn*15],num[maxn][15];//注意这里的map坐 阅读全文
posted @ 2012-03-15 17:16 E_star 阅读(243) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3041将行与列转化为左右点集,只要出现Asteroids的点(i,j)就对i j建边,然后求最小点覆盖即可。。。View Code #include <cstdio>#include <cstring>#include <iostream>#define maxn 507using namespace std;int map[maxn][maxn];int link[maxn];bool vt[maxn];int n,m;bool dfs(int rpos){ int i; for (i = 1; i & 阅读全文
posted @ 2012-03-14 22:05 E_star 阅读(290) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3687本人强烈推荐这道题。。。才开始自己理解错了题意,以为单纯的利用优先队列每次从入度为0的队列中选出编号最小的点即可,样例过了可是无限WA最后看了看解题报告,原来我理解错了。要求序列小的要尽量靠前,而且输出的不是得到的序列,而是根据序列得到的重量。。很不错的解题报告,本人转载:在基本的拓扑排序的基础上又增加了一个要求:编号最小的节点要尽量排在前面;在满足上一个条件的基础上,编号第二小的节点要尽量排在前面;在满足前两个条件的基础上,编号第三小的节点要尽量排在前面……依此类推。(注意,这和字典序是两回事,不可以混淆。)如图1所示,满足要求的拓 阅读全文
posted @ 2012-03-14 21:03 E_star 阅读(261) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3267从后往前推,只要发现匹配的就进行匹配。dp[i] = min(dp[i) ,dp[t] + t - i - len[j])dp[i]表示在i位置至少要删掉多少个字母,t记录了完成单词匹配后的下一个位置,t - i - len[j]表示在i起始位置完成单词匹配这个中间最少要删去的单词数View Code #include <cstdio>#include <cstring>#include <iostream>#define maxn 307using namespace std;char str[6 阅读全文
posted @ 2012-03-14 09:32 E_star 阅读(240) 评论(0) 推荐(0) 编辑
摘要:A:http://acm.sdut.edu.cn/web/problem.php?action=showproblem&problemid=2372题意是给定一个n*m的矩形,初始颜色都为0(代表一种颜色)然后给你一个r*c的矩形刷子可以讲r*c内部的颜色0或者是1变为相反色(注意一共有0,1两种颜色,他俩互为相反色)。对于每一个出现的1,可定会至少被刷过一次,我们只要很据目标矩阵统计,遇到1是时就将r*c的大小的矩阵进行翻转,如果出现i+r >n 或者 j + c > m 则表明无法实现。注意这里的ij是map[i][j] = 1 的情况、、View CodeBhttp: 阅读全文
posted @ 2012-03-12 22:11 E_star 阅读(289) 评论(0) 推荐(0) 编辑
摘要:http://acm.sdut.edu.cn/web/showproblem.php?pid=2099&cid=1088才开始掉下了中间可能有多个空格的处理,WA了好几次。。。还有这里对表达式的理解一定要透彻,表达式有三种1:常数;2:A+B形式;3:A>B的形式。。。View Code #include <cstdio>#include <cstring>#include <iostream>#define maxn 107using namespace std;struct node{ int num;//存编号 char op[10];/ 阅读全文
posted @ 2012-03-12 20:39 E_star 阅读(418) 评论(0) 推荐(0) 编辑
摘要:http://acm.sdut.edu.cn/web/showproblem.php?pid=2098&cid=1088相当于一道模拟题吧。纠结死我了、、各种WA各种不爽。。好多情况要考虑。。自己的思维全面性,以及编码能力还是不够啊。。。最重要的一点就是要静下心来。。。不能浮躁。。。1:整个浮点数前后的空格不考虑,开始我考虑在内了所以WA了很多次。。2:分三中情况a: 只有小数点,无e(E)...b:只有e(E),无小数点。。c:既有小数点,又有e(E)..View Code #include <cstdio>#include <cstring>#include 阅读全文
posted @ 2012-03-12 16:40 E_star 阅读(661) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1094题意相当的坑爹,才开始我的步骤是:1 判断是否有环,如果存在环,就输出Inconsistency found after 2 relations.不能确定该序列大小2 如果不存在环,然后判断是否能够判断出唯一的该序列,每次去入读为0的点时,一定会有一个,而且最终取完。。。3 然后判断。可是Discuss里面的数据就是不过。。。于是看了看讨论。原来,只要在出现环之前,能够判断出该序列的顺序就输出顺序,后面的就只输入不处理了(不管了)。。。还有判断环的优先级要高于序列唯一性判断的优先级。。。这样的话要每输入一条边,就要进行一次拓扑排序,然 阅读全文
posted @ 2012-03-11 17:29 E_star 阅读(259) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1789很裸的一道最小生成树题目,就是建立map[][]后直接套模板。。。。http://poj.org/problem?id=2485求最小生成树中的最大权值。。。做这个题时犯了个很2的错误,贡献了好几次WA。。最后重敲了一遍A了。。不说那2的错误了。http://poj.org/problem?id=1258裸的最小生成树http://poj.org/problem?id=3026注意这里the group may split in two or more groups 应为他在最小生成树专题里,看看题目就可以理解转换成最小生成树求解。如 阅读全文
posted @ 2012-03-10 10:31 E_star 阅读(335) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2240刚开始看到题目时,看到数据量很小,就想到了搜索,搜索所有的环然后将边的权值相乘看是否大存在于1.0的环。。结果果断的TLE无语。。。最后看了看Discuss floyd1AView Code #include <iostream>#include <cstring>#include <cstdio>#include <cmath>#define maxn 34#define eps 1e-8using namespace std;char str[maxn][maxn];double m 阅读全文
posted @ 2012-03-09 19:34 E_star 阅读(204) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1125刚开始以为是求最小生成树,可是打完代码一看结果根本不对。最后看了一下discuss原来是的那个一个点和m个点连接时,可以同时传送信息。所以只要转换成dijkstra求原点到所有点的最短然后找出最大时间,就是从原点到最后一个点的时间长度了,,循环遍历所有点当做原点情况,然后找出最佳值。。View Code #include <iostream>#include <cstring>#include <cstdio>#include <cmath>#define maxn 107using n 阅读全文
posted @ 2012-03-08 21:29 E_star 阅读(209) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2253这道题的提议就是就最小生成树中的最大权所以我用了最小生成树prim算法View Code #include <iostream>#include <cstring>#include <cstdio>#include <cmath>#define maxn 207using namespace std;const double inf = 99999999.0;bool vt[maxn];double dis[maxn],map[maxn][maxn];struct node{ doubl 阅读全文
posted @ 2012-03-08 00:09 E_star 阅读(241) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1062这道题太让我纠结了。。才开始把提议理解错了,就是那个等级问题,我以为只要交易的双方的等级差异<=m就可以呢。结果样例过了无限的wa最后搜了一下解题报告才看懂个那个等级问题。他是交易的所有人的等级差异都要<=m才是满足条件的。。。唉。。枚举所有可能参与交易的对象+Dijkstra求最短路就可以了。。。可是在这里我就卡死了。。。有个问题使我不解也讨论了很久还是没发现。。代码中见。。求解View Code #include <iostream>#include <cstring>#include < 阅读全文
posted @ 2012-03-07 22:00 E_star 阅读(282) 评论(0) 推荐(0) 编辑
摘要:Dijkstra 求单源最短路径,无法处理代负权的边。时间复杂度O(n^2)http://www.wutianqi.com/?p=1890Bellman_Ford 求单源最短路径,可以检查是否存在负权的环。时间复杂度O(v*e)http://www.wutianqi.com/?p=1912Spfa 求单源最短路径,是中国人发明的哦。。 同bellman可以检代负权的环,时间复杂度O(k*e)http://www.wutianqi.com/?p=2285floyd 求任意两地的最短路径,时间复杂度O(n^3)http://www.wutianqi.com/?p=1903Bellman-Ford算 阅读全文
posted @ 2012-03-06 20:37 E_star 阅读(196) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3259第一周的题,已经是第二周末了。。还没做完。。唉。。效率啊。。。就是一个简单的判断有无负权值的环。bellmen_ford做法View Code #include <iostream>#include <cstdio>#include <cstring>#define maxn 5240#define inf 0x7fffffffusing namespace std;struct node{ int u,v; int w;}g[maxn];int n,m,w;int dis[maxn];bool b 阅读全文
posted @ 2012-03-04 13:29 E_star 阅读(191) 评论(0) 推荐(0) 编辑
摘要:卡特兰数 Catalan数卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ... 中文:卡特兰数 原理: 令h(1)=1,h(0)=1,catalan数满足递归式: h(n)= h(1... 阅读全文
posted @ 2012-03-03 21:09 E_star 阅读(342) 评论(0) 推荐(0) 编辑
摘要:1000http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1000&cid=387水题,水过》注意一下,把第一个数标记下来。否则后面的a[n- 1]和a[0]处理是会影响结果1001http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1001&cid=387才开始想开个二维字符型数组一个一个的读出来,然后按字符排序,结果管开数组就已经不行了。。太大了。。后来是边读边比较,结果果断的TLE了好几次。。最后我又记录最小的字符的位置,结果还是TLE.. 阅读全文
posted @ 2012-03-03 20:34 E_star 阅读(257) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=186题意就是转化成求最短路的模型,不过这里是求最长应该。以前做最短路基本上都是用Dijkstra()对于其他几个算法没有弄的明白,所以做起来比较吃力。。。简介:SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。算法大致流程是用一个队列来进行维护。 初始时将源加入队列。 每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的点松弛成功,则将其入队。 直到队列为空时算法结束。它可以在O(kE)的时间复杂度内求出源点到其他所有点的最短路径,可 阅读全文
posted @ 2012-03-03 11:25 E_star 阅读(314) 评论(2) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3083题意就读了很长时间还是没读懂。。。无语。。。懂了之后才开始自己写了一个果断tle郁闷死我了。。最后看了别人很巧妙的方法。。0s过。。。牛啊。不过就是不明白,为什么初始方向没标记也能过。默认的也能过。。。默认初始方向为0的View Code #include <cstdio>#include <cstring>#include <queue>#include <iostream>#define maxn 50using namespace std;int vt[maxn][maxn];ch 阅读全文
posted @ 2012-03-02 22:47 E_star 阅读(187) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2049好纠结的一道题,刚拿过体来就已经懵了。这个图的信息到底该怎么存啊。。。纠结。看了别人的思路才A的。。he,ve两个数组分别存放这平行于x轴,y轴的墙,门信息。。。dis存储到达该点的最端距离。View Code #include <cstdio>#include <cstring>#include <queue>#define maxn 250#define inf 999999999using namespace std;struct node//优先队列的写法{ int x,y; int len 阅读全文
posted @ 2012-03-01 20:30 E_star 阅读(268) 评论(0) 推荐(0) 编辑
摘要:View Code #include <cstdio>#include <cstring>#include <iostream>#include <functional>#include <queue>using namespace std;int ar[13] = {14,10,56,7,83,22,36,91,3,47,72,0};struct cmp1{ bool operator ()(int &a,int &b) { return a > b;//以后面的b为准a》b所以小的先出来 }};struct 阅读全文
posted @ 2012-03-01 16:17 E_star 阅读(273) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示