2013年11月29日

hdu 4539(状态压缩dp)

摘要: 题意:曼哈顿距离是指:|x1-x2|+|y1-y2|,只要知道这个概念题意就懂了。分析:这道题与前面做的几道题有所不同,因为当前行不仅与前一行有关,而且与前两行有关,所以我们开数组的时候还要记录前两行的状态,所以我们需要开设三维数组。代码实现:#include#include#include#includeusing namespace std;int n,m,a[105];int dp[2][202][202],st[202],num,b[202];int suan(int x){ int sum=0,i; for(i=1; i>1; } return sum;}vo... 阅读全文

posted @ 2013-11-29 19:58 后端bug开发工程师 阅读(288) 评论(0) 推荐(0) 编辑

poj 2923(状态压缩dp)

摘要: 题意:就是给了你一些货物的重量,然后给了两辆车一次的载重,让你求出最少的运输次数。分析:首先要从一辆车入手,搜出所有的一次能够运的所有状态,然后把两辆车的状态进行合并,最后就是解决了,有两种方法:1.组合解决:代码实现:#include#include#include#includeusing namespace std;int n,sum1,sum2,a[15];int st1[1500],st2[1500],st[1500],num1,num2,num;int total[1500],all;//st1数组保存的是第一辆车能够一次运走的所有状态,同理st2数组为第二辆车的//st数组保存的 阅读全文

posted @ 2013-11-29 19:28 后端bug开发工程师 阅读(288) 评论(0) 推荐(0) 编辑

hdu 1429(bfs+状态压缩)

摘要: 题意:容易理解,但要注意的地方是:如果魔王回来的时候刚好走到出口或还未到出口都算逃亡失败。因为这里我贡献了一次wa。分析:仔细阅读题目之后,会发现最多的钥匙数量为10把,所以把这个作为题目的突破口,对钥匙进行状态压缩,具体看代码实现!代码实现:#include#include#include#include#includeusing namespace std;int n,m,time,visited[25][25][1025];int sx,sy,ex,ey,res;int b[4][2]={{0,1},{0,-1},{1,0},{-1,0}};char map[25][25];struct 阅读全文

posted @ 2013-11-29 19:18 后端bug开发工程师 阅读(174) 评论(0) 推荐(0) 编辑

hdu 1074(状态压缩dp+记录路径)

摘要: 题意:给了n个家庭作业,然后给了每个家庭作业的完成期限和花费的实践,如果完成时间超过了期限,那么就要扣除分数,然后让你找出一个最优方案使扣除的分数最少,当存在多种方案时,输出字典序最小的那种,因为题意已经说了家庭作业的名字是按照字典序从小到大输入的,所以处理起来就好多了。分析:此题的关键是如何记录路径,具体看代码实现吧!#include#include#include#includeusing namespace std;struct node{ char str[105]; int dayline; int cost;}a[20];struct st{ int now... 阅读全文

posted @ 2013-11-29 19:09 后端bug开发工程师 阅读(891) 评论(1) 推荐(0) 编辑

导航