摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864大意:对于每张发票,要么报销,要么不报销,0-1背包,张数即为背包;转移方程:f[j]=max(f[j],f[j-1]+v[i]);一开始边界没考虑,导致输出结果为0.00;View Code 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 double price[1000]; 6 double dp[1000]; 7 8 int 阅读全文
posted @ 2013-03-10 10:59 ihge2k 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555题目大意是让你求出[1,n]中多少个数包含49;1.dp[len][0]代表数字长度为len不含49的个数2.dp[len][1]代表数字长度为len不含49但是以9开头的个数(显然dp[len][1]包含在dp[len][0]中)3.dp[len][2]代表数字长度为len含有49的个数View Code 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 __int64 dp[22][3 阅读全文
posted @ 2013-03-10 09:58 ihge2k 阅读(801) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2013-03-09 18:55 ihge2k 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058http://acm.hdu.edu.cn/showproblem.php?pid=3199这两道题很类似,其思想就是从最小的满足条件的算起,一步步直到求出结果;hdu 1058View Code 1 #include<iostream> 2 #include<algorithm> 3 const int N=5843; 4 #define min(a,b) (a)<(b)?(a):(b) 5 using namespace std; 6 int num[N]; 阅读全文
posted @ 2013-03-09 10:10 ihge2k 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3339大致题意是说:有n个电站,每个电站都有一定的电量,电站之间有一定距离,我们要从0点出发去占领一些电站,使得占领的电站电量之和超过总电量的一半,求达到条件所要走的最短距离。如果可能的话,输出距离,否则输出不可能。思路:我们从0点开始派出一些tank去占领一些电站,坦克到每个电站都有一定距离,而占领每个电站之后可以得到一定电量,距离就相当于体积v,电量就相当于价值w,这不是就01背包吗?01背包通常的问法是给定体积,求获得最大的价值,这里的问法是给定价值,求恰好得到或多于该价值时的最小体积。我们只 阅读全文
posted @ 2013-03-07 15:30 ihge2k 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 从今天开始,我就正式开始做dp专题了,还得先从最简单的入手,01背包问题是经典的dp问题,从杭电上找了几道题先练练手。。。。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546题意:如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。分析:要使卡上的余额最少,相当于用有限的金额去买最多的菜。而题目多了一个限制条件,就是“卡上的剩余金 阅读全文
posted @ 2013-03-06 21:48 ihge2k 阅读(1862) 评论(2) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1896题目大意:n个石头,每个在位置p,一个属性d。从最左边开始往右走,遇到一个石头,如果是第奇数次遇到,就把他往前仍d米,偶数次遇到就越过。问最后最远的石头距离起点多少米思路:考虑用优先队列,如果是第奇数个石头,就修改其位置,入队列,否则,出对列;View Code 1 #include<iostream> 2 #include<queue> 3 using namespace std; 4 5 struct Point{ 6 int pos; 7 int dis; 8 . 阅读全文
posted @ 2013-03-06 09:39 ihge2k 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 最近数据结构实习,2天没做题了,真好今天又没课,还是继续上次的矩阵专题吧。。。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2855我一直在把这个公式矩阵化,可是搞了老半天也出不了结果,后来看了别人的思路,顿时豁然开朗了。。。思路:斐波那契数列可以用矩阵来表示:mat={1,1,1,0},故f[n]=mat^n;而在组合数学中有(1+x)^n=,从而联想到令x=mat,1为单位矩阵;然后矩阵求幂就可以了;View Code 1 #include<iostream> 2 using namespace std; 3 int n,m; 4 阅读全文
posted @ 2013-03-06 08:59 ihge2k 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2276题意:有n盏灯,0表示不亮,1表示亮,如果 i-th的灯的左边灯是亮的,那么下一秒钟,i-th灯的状态要改变,0变成1,1变成0。问你在第t秒时,灯的状态时什么样的,输出来。于是有:a1 = (a1+an)%2,a2 = (a1+a2)%2,a3 = (a2+a3)%2,……an = (an+an-1)%2构造矩阵:|1 0 0 0··· 0 0 1| a1 |a1+an| |1 1 0 0··· 0 0 0| a2 |a1+a2|| 阅读全文
posted @ 2013-03-03 11:10 ihge2k 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2254题意:有向图中求A点到B点路径长度为t1~t2的路径总数离散数学中,有向图的邻接矩阵A表示所有点之间路径长度为1的路径数量,A^n则表示路径长度为n的路径数量,故需要求某两点在(A^t1)~(A^t2)的路径数量之和View Code 1 #include 2 #include 3 #include 4 const int N=31; 5 const int m=2008; 6 using namespace std; 7 int n,len; 8 struct Matrix{ 9 ... 阅读全文
posted @ 2013-03-02 13:19 ihge2k 阅读(300) 评论(0) 推荐(0) 编辑