上一页 1 ··· 46 47 48 49 50 51 52 53 54 ··· 61 下一页
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063二分匹配水题,求最大匹配数(即求边数最多的匹配),匈牙利算法实现。。View Code 1 #include<iostream> 2 const int MAXN=507; 3 using namespace std; 4 int k,m,n; 5 int map[MAXN][MAXN]; 6 int cx[MAXN],cy[MAXN]; 7 int mark[MAXN]; 8 9 int dfs(int u){10 for(int v=0;v<n;v++){11 ... 阅读全文
posted @ 2013-03-30 15:29 ihge2k 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 砝码称重:View Code 1 /* 2 设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),用他们能称出的重量的种类数。 3 */ 4 /* 5 输入: 6 a1 a2 a3 a4 a5 a6 7 (表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个,中间有空格)。 8 */ 9 /*10 样例输入:11 1 1 0 0 0 012 正确输出:13 314 */15 //分析:把问题稍做一个改动,已知a1+a2+a3+a4+a5+a6个砝码的重量w[i], w[i]∈{ 1,2,3,5,10,20}16 //其中砝码重量可以相等,求用这些... 阅读全文
posted @ 2013-03-27 22:22 ihge2k 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1158很不错的一道题,可是一开始没看出来。。。刷的题不够多!!!View Code 1 #include<iostream> 2 #include<algorithm> 3 const int inf=1e9; 4 const int N=14; 5 using namespace std; 6 int num[N]; 7 int dp[N][111];//dp[i][j]表示前i个月(包括第i个月)招了j个员工的最小花费 8 9 10 int main(){11 int n 阅读全文
posted @ 2013-03-26 21:23 ihge2k 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 今天学了求最长递增子序列的O(n*log(n))算法。。。View Code 1 /* 2 【问题描述】 3 PALMIA国家被一条河流分成南北两岸,南北两岸上各有N个村庄。北岸的每一个村庄有一个唯一的朋友在南岸,且他们的朋友村庄彼此不同。 4 每一对朋友村庄想要一条船来连接他们,他们向政府提出申请以获得批准。由于河面上常常有雾,政府决定禁止船只航线相交(如果相交,则很可能导致碰船)。 5 你的任务是编写一个程序,帮助政府官员决定批准哪些船只航线,使得不相交的航线数目最大。 6 */ 7 /* 8 测试样例: 9 30 410 711 22 412 2 613 10 314 15 1215 . 阅读全文
posted @ 2013-03-26 17:09 ihge2k 阅读(577) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1025经典题。。。最长非递减序列的n*log(n)求法。。。orz...View Code 1 #include<iostream> 2 const int N=500007; 3 using namespace std; 4 int city[N]; 5 int dp[N];//dp[i]保存的是长度为i的最长不降子序列的最小尾元素 6 7 //二分查找返回num在dp中的位置 8 int Search(int dp[],int len,int num){ 9 int low=1,hi 阅读全文
posted @ 2013-03-26 16:45 ihge2k 阅读(1108) 评论(0) 推荐(0) 编辑
摘要: 动态规划的思想有时候很难体会,我觉得debug是一件很有帮助的事情。。。View Code 1 /* 2 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 3 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K, 4 他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<...<Ti>Ti+1>…>TK(1<=i<=K)。 5 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。 6 */ 7 /* 8 样例输入: 9 810 186 186 阅读全文
posted @ 2013-03-25 21:55 ihge2k 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 其实dp之前早就做过了,感觉有点遗忘,拿来复习复习。View Code 1 /* 2 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。 3 但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。 4 某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 5 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数), 6 计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。 7 */ 8 /* 9 分析:10 最多能拦截多少导弹,相当于. 阅读全文
posted @ 2013-03-25 21:05 ihge2k 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1023下面这位仁兄的博客讲的很清楚。。。http://hi.baidu.com/cykun/item/e2550938ab434308cfb9fe70我就直接上代码了。。。View Code 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 vectorvet; 7 8 string Mul(string &str,int n){ 9 string s="";10 int len=st 阅读全文
posted @ 2013-03-25 19:26 ihge2k 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 若菜只会3题,orz,继续刷题吧。。。hdu 4520:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4520思路:就是一个去掉最高分和最低分求平均分,在和原来的分数比较,看哪个裁判最接近。View Code 1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 5 int main(){ 6 int n; 7 double num[40]; 8 while(~scanf("%d",&n)&&n){ 9 d 阅读全文
posted @ 2013-03-25 13:27 ihge2k 阅读(450) 评论(1) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4474思路:bfs,用pre[]来记录到达u的前一个结点,num[]来保存当前数的最后一位。具体见代码:View Code 1 #include 2 #include 3 #include 4 const int N=10010; 5 using namespace std; 6 int n,m; 7 int a[10]; 8 int pre[N],num[N]; 9 10 void print(int u){11 if(pre[u]!=-1)print(pre[u]);//pre[]保存... 阅读全文
posted @ 2013-03-24 15:36 ihge2k 阅读(466) 评论(0) 推荐(0) 编辑
上一页 1 ··· 46 47 48 49 50 51 52 53 54 ··· 61 下一页