2013年2月4日

HDU 2063--二分匹配

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2063该题解法思想是:从第一个女生开始遍历,用女生去选择男生,男生这时还没被选走则马上选走他,接着第二个女生开始选,如果他想要的男生没被选走,当然就选上了,如果该男生已经被选走的话,则开始和前面的选择此男生的女生商量,看她能不能选择别的女生,如果可以的话,就叫该女生选择别的男生,则该男生就属于你了,如果和这个女生商量不成,则换一个男生接着匹配,若没有男生了,则只能守寡了,以此类推……二分图思想:(匈牙利算法)二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不 阅读全文

posted @ 2013-02-04 20:34 acoderworld 阅读(61) 评论(0) 推荐(0)

HDU 1385--最短路 记录路径

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1385题意:有N个城市,已知每两个城市间的距离花费,以及经过每个城市需要收取的税金。然后若干组输入,每组输入是 起点s和终点t, 输出从s到t的最小费用路径,并输出最小费用。最小费用路径有多条时,输出字典序最小的。floyd 算法。这题参照了网上的代码,记录路径的方法挺巧,第一次写记录路径的题目。 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 #define INF 0x3f3f3f3f 5 #defi 阅读全文

posted @ 2013-02-04 20:28 acoderworld 阅读(158) 评论(0) 推荐(0)

HDU 1142--最短路 SPFA+DFS记忆化搜索

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1142这题题目看了非常久,英文不好伤不起啊。。题意:看样子很多人都把这题目看错了,以为是求最短路的条数。真正的意思是:假设 A 和 B 是相连的,当前在 A 处,如果 A 到终点的距离大于 B 到终点的距离,则可以从 A 通往 B 处,问满足这种的条件的路径条数。分析:1、以终点 2 为起点 SPFA; 2、直接DFS记忆化搜索。 1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 using namesp 阅读全文

posted @ 2013-02-04 20:22 acoderworld 阅读(52) 评论(0) 推荐(0)

HDU 1217--最短路

摘要: 大致题意:货币兑换,n种货币,m种兑换关系,是否存在一种赚钱途径,有输出"Yes",没有则输出"No"。可能的赚钱方式是这样的:假设有A,B,C三种货币,兑换关系是A 0.5 B,B 10.0 C,C 0.21 A。显然 0.5*10.0*0.21=1.05>1 可以赚钱。用少量的A可以换更多的A。思路:显然要找出每两种货币间的最大利率,然后判断货币i对其自身的利率是否大于一。直接floyd就可以过。但是因为是乘法,需要注意dist初始化问题。。View Code 1 #include<iostream> 2 #include<c 阅读全文

posted @ 2013-02-04 20:18 acoderworld 阅读(70) 评论(0) 推荐(0)

HDU 1690---最短路

摘要: 非常恶心的最短路。。我wa了一中午,因为VC的限制,long long运行不了,但是这题又需要定义一个大于int的常数,自己写了一段代码无限wa。。。题目不算难,就是有点恶心。。直接floyd暴力就可以水过。。不纠结,日后有空再写一遍。附上代码: 1 #include <iostream> 2 #include <stdio.h> 3 #include <memory.h> 4 #include <cmath> 5 using namespace std; 6 7 const long long INF = 99999999999LL; //注意 阅读全文

posted @ 2013-02-04 20:15 acoderworld 阅读(49) 评论(0) 推荐(0)

HDU 3342--拓扑排序

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3342拓扑排序的水题,利用拓扑排序判环。 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 #define maxn 1005 5 int g[1005][1005]; 6 int top,vis[maxn],rudu[maxn],n; 7 void topo() 8 { 9 int i;10 for(i=0;i<n;i++)11 {12 if(!rudu[i]&&!vis[i])1 阅读全文

posted @ 2013-02-04 20:10 acoderworld 阅读(62) 评论(0) 推荐(0)

HDU 3666--差分约束系统

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3666这题网上搜到的代码几乎都是错的,很多都是用队列写,然后判断负权回路都是大于sqrt(n)。这不科学。。。这题的正解是DFS版SPFA,或者改用栈写。题意:给你一个N*M的矩阵,求两列数a1,a2,a3...an 和 b1,b2.....bm使得对矩阵中的每个数进行下面的操作之后的值在[L,U]之间,操作为:a[i] * m[i][j] / b[j]。 N,M<=400思路:差分约束。由题意可知,对于矩阵中的每个元素要满足的条件是:L <=a[i] * m[i][j] / b[j] <= 阅读全文

posted @ 2013-02-04 20:03 acoderworld 阅读(112) 评论(0) 推荐(0)

POJ 3159 Candies---差分约束系统

摘要: 是一道裸的差分约束系统,无需建图,不等式关系已经直接给出。第一次用链接表写了SPFA,还不是很熟练。。。关于链接表还得再学习一下。。这题需要注意的是,不能用队列做,只能用栈,否则会超时。题目链接:http://poj.org/problem?id=3159 题目意思:flymouse是班里的班长,她(假设是女的哈)从老师那里拿来了一袋糖果,要发给班里的同学。好吧,flymouse与snoopy平时在班里是死对头,这下子,他(假设是男的啦)是要倒霉了。由于班里的同学都喜欢吃糖,但是每个同学都要说出一个条件,那就是A认为B同学的糖不能比他的多C,flymouse在发糖的时候要满足所有同学的要求,现 阅读全文

posted @ 2013-02-04 10:55 acoderworld 阅读(62) 评论(0) 推荐(0)

导航