![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
poj解题报告
文章平均质量分 69
指间沙砾
这个作者很懒,什么都没留下…
展开
-
POJ2586-Y2K Accounting Bug
这题最难的是读懂题意。。。 题意ru原创 2014-11-16 23:25:28 · 456 阅读 · 0 评论 -
POJ3259 - Wormholes
bellman-ford算法判断环。 //Memory Time //1260K 360MS //不添加delete //488K 985MS //添加delete之后 #include #include using namespace std; struct edge{ edge* next; int dst; int cost; }; struct vexte原创 2014-12-08 22:52:50 · 244 阅读 · 0 评论 -
POJ1125 - Stockbroker Grapevine
果然还是写一题发一个博客好一点,现在都有点记不清自己写的是什么了。。。 Floyd算法的题,需要判环 //Memory Time //224K 0MS #include using namespace std; void floyd(int dis[][101], int vexNum); int dis[101][101]; int main() { int sto原创 2014-12-08 23:34:03 · 296 阅读 · 0 评论 -
POJ2240 - Arbitrage
又是各种钱币换来换去,问能不能赚钱。 Floyd算法判环。 //Memory Time //228K 32MS #include #include using namespace std; char dollarName[30][30]; float edge[30][30]; int outMatch(char src[30], char dst[][30], int dollarT原创 2014-12-08 23:37:25 · 291 阅读 · 0 评论 -
POJ2253 - Frogger
有两只青蛙A和B,以及n-2个节点,这n个节点两两相连,边权为节点之间的距离。显然,青蛙A是必定可以到达青蛙B的,设所有路径集合为S,求路径a属于S,使路径a的最大边权在路径集合S中最小。 这题当时是借鉴了bellman-ford算法的思路解决的,现在发现用dijkstra的思路也可以解。。。 核心思路是 edge[s][d] = max( min( edge[s][k]), min原创 2014-12-08 23:13:23 · 306 阅读 · 0 评论 -
POJ1062 - 昂贵的聘礼
非负权的单源最短路径,果断用dijkstra算法 需要注意的是这里是有交易的双方是有等级限制的,假设族长等级为Level0,最大可交易等级差为M,解决方案是,依次假设旅行者的等级为 Level0-M、Level0-M+1、Level0-M+2.......Level0+M,然后让旅行者只和等级不低于他的人交易,然后比较这2M+1次的结果,取最小值。 //Memory Time /原创 2014-12-08 22:56:46 · 288 阅读 · 0 评论 -
POJ1094 - Sorting It All Out
从A到Z中给出n个字母和m个关系 问根据这m关系能否找到n个字母的关系,有以下三种情况: 1、可以确定n个字母的排序,输出 按序排列的字母,以及通过前几个关系发现,输出样例如下 Sorted sequence determined after 4 relations: ABCD. 2、有矛盾,输出通过前几个关系发现的矛盾,样例: Inconsistency found aft原创 2014-12-21 23:16:14 · 295 阅读 · 0 评论 -
POJ3026 - Borg Maze
此题可以分为拆分为两个问题: 1、求起止点S和n个外星人A,共n+1个顶点的两两距离 2、求这n+1个顶点的最小生成树 //Memory Time //220K 16MS #include #include #include using namespace std; #define MAXCONST 2000000000; char s[100][10原创 2014-12-19 23:04:06 · 309 阅读 · 0 评论 -
POJ1258 - Agri-Net
求最小生成树总权值 //Memory Time //196K 16MS #include #define MAXCONST 2000000000 int dis[100][100]; int cost[100]; int que[100]; int main() { int N; while(scanf("%d", &N) != EOF) { for(int j = 0原创 2014-12-19 23:01:47 · 284 阅读 · 0 评论 -
POJ3041 - Asteroids
此题说难也难说简单也简单。关键就看有没有理解这样的一条定理: 最小点覆盖数=最大匹配数 解题思路如下: 1、以行和列分别建立两个顶点集V1,V2 2、将障碍物(x1,y1)视为两个顶点集中的两点V1(x1),V2(y1)的边 3、求V1和V2的最大二分匹配,由最小点覆盖数=最大匹配数可知,此即为答案(the minimum number of times Bessie原创 2015-01-06 22:00:59 · 252 阅读 · 0 评论 -
POJ1860 - Currency Exchange
给定N种货币,某些货币之间可以相互兑换,现在给定一些兑换规则,问能否从某一种货币开始兑换,经过一些中间货币之后,最后兑换回这种货币,并且得到的钱比之前的多。 可以把初始兑换的货币看成源点,采用bellman-ford进行求解,若可以实现要求,则说明图中存在可以无限增大的环,这个可以通过bellman-ford算法判断环是否存在求出来,若在求解过程中发现已经兑换回原货币,并且钱比之前多,则可以原创 2014-11-24 22:15:49 · 403 阅读 · 0 评论 -
POJ2993 - Emag eht htiw Em Pleh
POJ2996的逆,注意细节。原创 2014-11-23 22:25:46 · 321 阅读 · 0 评论 -
POJ1573 - Robot Motion
给一个N*M的矩阵(N <= 10, M <= 10)原创 2014-11-21 22:12:12 · 281 阅读 · 0 评论 -
POJ2996 - Help Me with the Game
//Memory Time //216K 0MS #include #include using namespace std; /* 1、输出先列后行 2、行号是从下往上计数的,最上面的行是8 3、:黑 .白 4、白 行号为从小到大 黑相反 */ struct chess { char name; char row; char c原创 2014-11-22 23:03:22 · 340 阅读 · 0 评论 -
POJ2623 - Sequence Median - 寻找第K数算法
输入n个数(n 250000),qiu原创 2014-11-21 21:18:08 · 303 阅读 · 0 评论 -
POJ1068-Parencodings
对于给出的原括号串,存在两种数字密码串: 1.p序列:当出现匹配括号对时,从该括号对的右括号开始往左数,直到最前面的左括号数,就是pi的值。 2.w序列:当出现匹配括号对时,包含在该括号对中的所有右括号数(包括该括号对),就是wi的值。 题目的要求:对给出的p数字串,求出对应的s串。原创 2014-11-19 21:35:54 · 259 阅读 · 0 评论 -
POJ3295-Tautology
大致题意: 输入由p、q、r、s、t、K、A、N、C、E共10个字母组成的逻辑表达式, 其中p、q、r、s、t的值为1(true)或0(false),即逻辑变量; K、A、N、C、E为逻辑运算符, K --> and: x && y A --> or: x || y N --> not : !x C --> implies : (!x)||y原创 2014-11-17 22:47:59 · 254 阅读 · 0 评论 -
POJ2485 - Highways
用prim求最小生成树 //Memory Time //552K 157MS #include #define MAXCONST 2000000000 int dis[500][500]; int cost[500]; int que[500]; int main() { int T; scanf("%d", &T); for(int i = 0; i < T; i++) {原创 2014-12-11 23:29:48 · 304 阅读 · 0 评论