- 博客(29)
- 资源 (3)
- 收藏
- 关注
原创 ZOJ 2422——贪心 田忌赛马
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2422 题目大意:意思就是和古时候田忌赛马是一样的,赢一场得200分,输一场减200分,平一场不得分,求取最后能获得的最大分数。 解题思路:2300多年前,田忌总结其赛马经验的时候就说过,以上等马御中等,以中等马御下等马,以下等马御上等马
2013-07-29 16:18:02 926
原创 HDU 1203——简单的背包问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203解题思路:首先想到的就是01背包,只是状态转移方程不一样而已。dp[j]=max(dp[j],1-(1-dp[j-c[i]])*(1-p[i]));dp[j]:容量为j的背包能得到offer的最大概率。如果将第i个加进来的话,那么概率应该转成 1-(1-dp[j
2013-07-25 08:38:46 622
原创 HDU 2546——饭卡,背包问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546中文题目,不解释。解题思路:思路1:因为题目给的数据是比较小的,所以可以想一些比较暴力的方法。初始的时候,剩余的钱是 m。经过第 1道菜之后,剩余的钱可能是m也可能是 m-c[1]。经过第2道菜之后,剩余的钱可能是m,m-c[1],m-c[2],
2013-07-24 20:03:00 663
原创 HDU 2602——最简单的背包问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602题目大意:背包容量为V,背包大小为N,每根骨头都有自己的价值和体积,求取能获得的最大容量。解题思路:最简单的背包问题。状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-bone[i].w]+bone[i].v);d
2013-07-23 21:17:08 713
原创 poj4045——树形DP
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28138题目大意:有n个小区,有n-1条边将这n个小区连接起来。( 3现在要选择一个小区建设一个电站,小区到电站的电缆是有损耗的。公式为:I*I*R*Di。Di表示所有小区到该电站的距离之和,求取最小的损耗。解题思路:
2013-07-22 20:22:37 1146
原创 poj1463——树形DP
题目链接:http://poj.org/problem?id=1463题目大意:给定一棵树,现在让你在节点处布置哨兵,每个哨兵可以监管与之连接的边。求监管所有的边最少需要多少哨兵。解题思路:比较典型的树形DP。有点类似之前写过的请人聚会,但是上司和下属不能同时请,最多能请多少人的那个题目。这个题目的状态转移方程是比较好写的。dp[i][1]+
2013-07-22 14:17:05 1502
原创 HDU 2196 Computer
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196题目大意:给定一棵树,求树上所有点到其他点的距离中的最大值。解题思路:思路1:比较典型的树形DPdp[i][0] :以i节点为根节点的子树中,与i距离的最大值dp[i][1]:以i节点为根节点的子树中,与i距离的次大值dis[i]: 不
2013-07-22 11:55:33 1114
原创 c语言、c++常用函数
取整函数:double floor(double x);double ceil(double x); 使用floor函数。floor(x)返回的是小于或等于x的最大整数。如: floor(2.5) == 2 floor(-2.5) == -3使用ceil函数。ceil(x)返回的是大于x的最小整数。如: ceil(2.5) == 3
2013-07-21 18:16:33 778
原创 poj2342/poj3342——基础的树形DP
poj2342:题目大意:大学要开年会,请公司的人来参加聚会,但是不希望员工和其最直接的上司同时出现在聚会上,问最多能邀请到多少人参加聚会。解题思路:转化成树的结构就是父亲节点和孩子节点不能同时出现。设dp[i][0] 表示不取第i个人能得到的最大人数。 dp[i][1] 表示取第i个人能得到的最大人数。可以得到如下的状态转移方程:dp[i][0]+=
2013-07-21 17:23:58 718
原创 HDU 2438——三分求值
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2438题目大意:转弯,给定汽车的长度L和宽度D,以及转弯处马路的宽度X和Y,问汽车能否从这里转过去。解题思路:这个题目应该考虑一些极限情况,就是汽车靠着外侧角的两条边行驶过去。如上图所示。那么我们可以求得汽车外侧的直线的方程,即图中红色的直线的方程。
2013-07-21 09:44:13 872
原创 三分求最小值——HDU 2241
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2241中文题目,不解释解题思路:对于每个折线区间,Y+F之和必然是一个凹函数,求导就知道。对于每段折线进行三分求极值,然后取所有段极值的最小值,即可得到最后解。源代码:#include#include#include#include#inc
2013-07-19 21:14:04 974
原创 数位DP+二分搜索——HDU3943 K-th Nya Number
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3943题目大意:给定一个左开右闭区间,(p,q],求在该区间上第k个Nya Number,如果找不到则输出Nya。Nya Number的定义:含有x个4和y个7的数字。比如:x=1,y=1,那么47,74,147。。。。都是Nya Number。解题思路:
2013-07-19 16:40:50 941
原创 三分求最小值——HDU3400
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3400题目大意:给定两条线AB和CD,现在要从A点,走到D点。在线段上AB上走,速度是p,在线段CD,上走速度是q,在空间中其他地方走速度是r。求所需的最小时间。解题思路:在线段AB上,任取一点E,A-E-CD的时间必定是一个关于点E的凹函数。那么我们
2013-07-19 10:11:17 945
原创 数位DP——HDU 3652 B-number
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3652题目大意:给定一个整数n,求取闭区间1--n中B-number数的个数。(1 B-number指的是该数可以被13整除,并且该数字中包含连续的13。解题思路:很经典的数位DP。定义2个数组:dp1[i][j][k]:共i位数,最高位是j,模13等
2013-07-16 23:57:00 736
原创 状态压缩DP——hdu 1565 方格取数1
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1565题目大意:中文题目,不解释解题思路:由于每行最多是20个格子,取的格子不能相邻,最多的状态数在18000左右,可以用状态压缩来做。状态转移方程: dp[i][j]=max(dp[i-1][k]+date[i][j],dp[i][j]);dp[
2013-07-16 15:39:28 593
原创 求单峰值——HDU4355
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4355题目大意:有n个精灵,精灵的坐标x和体重w已知。现在这n个精灵要到一个地方去集合,但是精灵不喜欢走路,有一个公式可以算出他们的不开心值的大小: S3*W,S代表的是精灵走的路程的大小,w代表的是精灵的体重。解题思路:由于函数是S3*W,该函数是3
2013-07-15 19:20:40 644
原创 数位DP——HDU 3555 要49
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555题目大意:给定一个数n,求取1-n这个闭区间中包含49的数字的个数。(n小于2的64次方)解题思路:由于这个题目的范围比较大,所以采用暴力肯定会超时,而且不能开除这么大的数组。比较基础的数位DP。定义了3种状态:dp[i][0]:i位数字的时候不
2013-07-14 19:47:05 946
原创 数位DP——HDU2089 不要62
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089题目大意:给定一个闭区间n-m,求取该区间中吉利数字的个数。吉利数字的定义为:不包含连续的数字62和数字4。(n,m解题思路1:由于m和n是小于100万的所以可以采用暴力打表的做法。解题思路2:典型的数位DP。dp[i][0] 表示i位数
2013-07-14 16:35:34 907 2
原创 状态压缩DP——SGU 131
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=131题目大意:一个N*M的矩形,用格子去将其填满,可以使用的格子有两种。(N第1种:1*2的格子第2种:2*2的格子去掉一个1*1的格子问一共有多少 种方案。解题思路:由于N和M都是小于9的,所以很容易想到状态压缩DP。状态转移方程:d
2013-07-12 14:05:12 834
原创 状态压缩DP——zoj3471 最大能量
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4257题目大意:有n个原子,当两个原子相撞的时候,其中一个原子会死掉并且释放出相应的能量。求取这n个原子进行碰撞能释放的最大能量。(n解题思路:因为n的个数比较小,所以这个题目可以使用装药压缩DP。状态转移方程为:dp[i
2013-07-10 19:29:18 716
原创 状态压缩DP——poj2288 Islands and Bridges 又见旅行商问题
题目链接:http://poj.org/problem?id=2288http://acm.hdu.edu.cn/showproblem.php?pid=1668题目大意:有n个岛屿,m座桥连接这些岛屿。遍历所有的岛屿且每个岛屿只能被遍历一次,这样就得到了一条哈密顿路。(n根据公式,每条哈密顿路都可以计算出一个权值,求取最大的权值并且求出最大权值的哈密顿路的条数。公
2013-07-10 12:39:23 1077
原创 经典动态规划——HDU1081 To The Max 最大子矩阵问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081题目大意:给定1个n*n矩阵,求最大子矩阵(矩阵元素之和最大)。解题思路:这个题目和那个最大连续子序列是比较像的,只是维数不同而已。如果能把二维的问题转化成一维的,那么这个问题就迎刃而解了。二维转一维的方法就是枚举任意两行,然后求出这两行之间任意一列之和,这样就得到
2013-07-10 09:01:43 873
原创 3进制状态压缩DP——HDU3001 Travelling 旅行商问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001题目大意:n个城市之间有m条路,经过每条路径都有一定的花费,当然有些城市是不可达的。遍历所有的城市,并且每个城市最多只能遍历2次,求取花费的最小费用并输出,如果找不到这样的路径,输出-1。(n解题思路:由于n是小于10的,所以这个题目可以使用状态压缩来做。由于每个城市最
2013-07-09 20:02:53 1147
原创 c语言、c++编程常见错误
错误1:invalid types `int[int]' for array subscript错误分析:在程序里面,你定义了一个全局变量a,然后你在主函数里面又定义了一个变量a,导致了变量名冲突。解决方法:修改某一个变量的名字。未完待续...
2013-07-09 19:44:35 1965
原创 记录路径的搜索——HDU1026 Ignatius and the Princess I
网址链接:http://acm.hdu.edu.cn/showproblem.php?pid=1026题目大意:给出1张n*m的地图,地图上面只有3种字符:数字,点和×,点表示可以通过,×表示不能通过,数字表示可以通过这个地方,但是必须在这个地方耗费时间打倒这地方的怪物。题目已知了左上角和右下角不可能是×,求从左上角走到右下角的一条耗时最短的路径,并且输出该路径。解
2013-07-09 18:06:18 615
原创 状态压缩DP——poj3254Corn Fields
网址链接:http://poj.org/problem?id=3254题目大意:一个m行n列的矩阵,m和n都是小于12的,现在在这块土地上面种玉米 ,但是有的土地肥沃,用1表示,有的土地很贫瘠用0表示。只能在肥沃的土地上面中玉米,并且玉米不能相邻,求方案数。注意1棵都不种也算是一种方案。解题思路:这个题目算是比较明显的状态压缩DP。而且这个题目有个好处就是状
2013-07-09 17:43:25 761
原创 经典动态规划——HDU1024 m段子段和的最大值
给出n个数,求其m个子段和的最大值。定义:now[j],表示以第j个元素为结尾的i个子段的最大和,必须包含a[j]。pre[j],表示前j个元素i个子段的最大和,不一定包含a[j]。dp[i][j],表示前j个元素i个子段的最大和,包含a[j]原始状态转移方程:dp[i][j]=max(dp[i][j-1]+a[j],dp[i-1][k]+a[j])(i-1第1种情
2013-07-09 16:57:38 1087 1
原创 字符串常用函数
1.函数名: strcpy功 能: 拷贝一个字符串到另一个 并返回拷贝的字符串内容用 法: char *strcpy(char *destin, char *source);程序例:#include#include#includevoid main(){char * str2="abcdfelwafj";char * str1=(char *)malloc(
2013-07-09 16:51:42 665
原创 线段树——HDU1255 覆盖的面积解题报告
网址链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255题目大意:给出n个矩形的左下角和右上角的坐标,n小于1000,坐标是浮点型的。求解至少被覆盖2次的面积。解题思路:这个题目是很明显的线段树,但是有几个难点在这里。1.这个题目需要里散化处理,因为坐标是浮点型的,我们建树的时候需要的是整型的坐标。
2013-07-09 16:30:14 769
codeblocks配置文件
2013-12-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人