2013年3月5日

HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

摘要: 题意:不解释。。。分析:裸的多重背包。AC代码: 1 #include<iostream> 2 using namespace std; 3 4 const int maxm=105; 5 int f[maxm],cost[maxm],val[maxm],num[maxm]; 6 int n,m; 7 8 int max(int a,int b){ 9 return a>b?a:b;10 }11 12 void CompletePack(int c,int v){13 int i;14 for(i=c;i<=m;i++)15 f[i]=max(f[i... 阅读全文

posted @ 2013-03-05 12:57 Acmer_Roney 阅读(194) 评论(0) 推荐(0) 编辑

2013年3月4日

HDU 1059 Dividing

摘要: 题意:有6种大理石(marble,怀疑是不是大理石的意思。。。几块大理石也值得争?!),每种若干件且每种大理石有一定的价值(分别为1,2,3,4,5,6)。问能否分成价值相等的两份。分析:多重背包。价值和费用相同。注意初始化。以下有两种解法。。。代码1(多重背包): 1 #include<iostream> 2 using namespace std; 3 4 int f[60005],num[7]; 5 int sum,half; 6 const int INF=0x3f3f3f3f; 7 8 int max(int a,int b){ 9 return a>b?a:b;1 阅读全文

posted @ 2013-03-04 23:25 Acmer_Roney 阅读(163) 评论(0) 推荐(0) 编辑

HDU 1284 钱币兑换问题

摘要: 钱币兑换问题Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3484Accepted Submission(s): 1964Problem Description在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。Input每行只有一个正整数N,N小于32768。Output对应每个输入,输出兑换方法数。Sample Input2934 12553Sample Output718831 131377 阅读全文

posted @ 2013-03-04 13:21 Acmer_Roney 阅读(794) 评论(0) 推荐(1) 编辑

2013年3月1日

HDU 1171 Big Event in HDU

摘要: 题意:共N种物品,每种价值为V且共有M件。要求分成两份,使得这两份的价值差最小。此题是多重背包问题。计算出总价值sum,再除以二得到总价值的一般half。背包容量half,物品的费用和价值均是V。尽量将容量为half的背包填满,则剩下的就是另一部分。代码一(多重背包做法): 1 #include<iostream> 2 using namespace std; 3 4 int sum,half; 5 int val[55],num[55],f[250005]; 6 7 int max(int a,int b){ 8 return a>b?a:b; 9 }10 11 void 阅读全文

posted @ 2013-03-01 12:55 Acmer_Roney 阅读(164) 评论(0) 推荐(1) 编辑

2013年2月28日

HDU 1114 Piggy-Bank

摘要: 题意:给出一个储钱罐的初始重量(E)和装满后的重量(F),有N种硬币,分别为价值P和重量W。问如何选择硬币使得储钱罐中的硬币总价值最小。此题是一个完全背包问题,且要求储钱罐必须装满,所以初始化时要注意。状态转移方程:f[i]=min(f[i],f[i-w]+p)。AC代码: 1 #include<stdio.h> 2 #define INF 0xfffffff 3 4 int f[10005]; 5 6 int min(int a,int b){ 7 return a<b?a:b; 8 } 9 10 int main()11 {12 int E,F,i,j,m,n,p,w,. 阅读全文

posted @ 2013-02-28 19:45 Acmer_Roney 阅读(266) 评论(0) 推荐(0) 编辑

2013年2月26日

ural 1004 Sightseeing Trip

摘要: floyd求最小环,递归打印路径。算法:本题AC代码: 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 6 const int cov=105; 7 const int maxn=0xfffffff; 8 int g[cov][cov],d[cov][cov],m[cov][cov]; 9 int c=0,path[cov];10 11 void dfs(int x,int y){12 if(m[x][y]==-1) return ;13 阅读全文

posted @ 2013-02-26 15:04 Acmer_Roney 阅读(251) 评论(0) 推荐(0) 编辑

2012年12月18日

POJ 3349 Snowflake Snow Snowflakes

摘要: 题意:每个雪花都有六个角,给出n个雪花的六个角的长度,问其中有没有相同的两片雪花。若有则输出:Twin snowflakes found. 否则输出:No two snowflakes are alike.题解:简单哈希。将每个雪花的六个角的长度加起来,存在一个vector里,判断有相同长度和的两片雪花是否相同。注意,这里逆反两个方向多要判断。 1 #include<iostream> 2 #include<vector> 3 #include<cstdio> 4 using namespace std; 5 6 const int MOD=199999;/ 阅读全文

posted @ 2012-12-18 16:13 Acmer_Roney 阅读(377) 评论(0) 推荐(0) 编辑

2012年12月11日

POJ 3640 Conformity

摘要: 题意:n个学生,每人5门课程代号(100~499)的组合,定义这些课程组合的重复次数为受欢迎度。问选受欢迎度最大的课程组合的学生人数是多少。题解:将每个学生所选的5门课进行从小到大排序,拼起来组成一个15位的数。即:for(int j=0;j<5;j++) temp=temp*1000+x[j];由于变换之后的数太大,所以要哈希一下在存储。接下来再判重即可。 1 #include<algorithm> 2 #include<iostream> 3 #include<cstring> 4 #include<cstdio> 5 using na 阅读全文

posted @ 2012-12-11 13:13 Acmer_Roney 阅读(345) 评论(0) 推荐(0) 编辑

2012年12月8日

HDU 1425 Sort

摘要: sortTime Limit: 6000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 18869Accepted Submission(s): 5578Problem Description给你n个整数,请按从大到小的顺序输出其中前m大的数。Input每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。Output对每组测试数据按从大到小的顺序输出前m大的数。Samp 阅读全文

posted @ 2012-12-08 13:31 Acmer_Roney 阅读(318) 评论(0) 推荐(0) 编辑

ural 1003 Parity

摘要: 转自:http://hi.baidu.com/jhbuuwehgimnprr/item/99b40d0b452242d11ff04605哈希+并查集。首先这道题需要一点点问题的转化,根据奇数偶数的性质“两个奇(偶)数的和差是偶数,一个偶数与一个奇数的和差是奇数”,如果设原01序列为a[1..n],再设sum[i]=a[1]+a[2]+..a[i],那么第i项到第j项的和a[i]+a[i+1]+...+a[j]就等于sum[j]-sum[i-1],于是“i j even”这类信息就等价于“sum[j]-sum[i-1]的值是偶数”,这句话又等价于“sum[j]跟sum[i-1]同奇偶”,所以每条 阅读全文

posted @ 2012-12-08 12:41 Acmer_Roney 阅读(372) 评论(0) 推荐(0) 编辑

导航