博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4281(MTSP)
阅读量:6218 次
发布时间:2019-06-21

本文共 962 字,大约阅读时间需要 3 分钟。

题目链接:

题意:给出N个点,第一个点是裁判,其他N-1个点需要裁判过去回答问题,每个点需要的时间不一样,而每个裁判最多能回答M分钟的问题。题目分两问,第一问是如何分配可以使使用的裁判数最少,第二问是如何分配裁判,使裁判走过的总路程和最少,裁判一开始都在1,最终也要回到1。

思路:首先我们可以把符合条件的集合预处理出来,然后对于第一问,可以用状态压缩解决,dp[state]表示该状态下的最少裁判数,对于第二问,就是多旅行商问题了,dp[i][j]表示状态为i,在位置j的最小花费,然后开一个best数组来保存最有状态,最后枚举子集,DP合并环即可。比如1~3三个点,裁判在1,那答案就是Min(1->2->3->1,1->2->1 + 1->3->1)。

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 #define inf 1<<30 8 9 struct Point{10 int x,y;11 }point[17];12 13 int n,m,ans,val[17],dp1[1<<17];14 int dp[1<<17][17],best[1<<17];15 int Ok[1<<17];16 int dist[17][17];17 18 int Get_Dist(int i,int j)19 {20 return ceil(sqrt(double(point[i].x-point[j].x)*(point[i].x-point[j].x)+double(point[i].y-point[j].y)*(point[i].y-point[j].y)));21 }22 23 int Judge(int state)24 {25 int sum=0;26 for(int i=0;i
View Code

 

转载地址:http://dzoja.baihongyu.com/

你可能感兴趣的文章
__declspec(dllexport)的作用
查看>>
汉诺塔问题求解思路
查看>>
count(*)快还是count(列)快
查看>>
char、varchar、nvarchar的区别
查看>>
php原生之实现图片,文件的下载
查看>>
在亚马逊linux环境上装mysql+添加启动项
查看>>
排序-Java
查看>>
ubuntu-wine
查看>>
ShareSDK短信验证码集成详细步骤
查看>>
SDUT 3327 顺序表应用4:元素位置互换之逆置算法
查看>>
SDUT 3401 数据结构实验之排序四:寻找大富翁
查看>>
验证线程是数据共享的
查看>>
微软官方在线培训课程汇总2011版
查看>>
vForum 2011 Beijing现场图文播报一
查看>>
haproxy 7层负载均衡代理转发实战讲解(二)-老男孩笔记系列
查看>>
事务长期不提交导致日志不能截断
查看>>
吾儿秘史--趣事糗事大杂烩第二季(2014.6.2-)-更新到2014年9月8日
查看>>
SQL Server 高可用性(六)日志传送
查看>>
服务器负载暴涨以后...
查看>>
由IDC机房测试谈主动工作教学实战案例!
查看>>