cdoj1588 潘爷泡妹
地址:http://acm.uestc.edu.cn/#/problem/show/1588
题目:复制过来发现有问题,自己去cdoj看吧
思路:
1.先进行多次spfa跑出所有人之间的相互到达所需要的步数。
2.知道所有人之间的距离关系后,就是个从初始点出发泡q个妹子所需要的最少花费问题。
这时你可以全排列求解:O(q!)
或者状压dp:dp[s][x]可以转移到dp[s|(1<<k)],x可到达k。时间复杂度O((q^2)*(2^q));
#include <bits/stdc++.h> using namespace std; #define MP make_pair
#define PB push_back
typedef long long LL;
typedef pair<int,int> PII;
const double eps=1e-;
const double pi=acos(-1.0);
const int K=1e6+;
const int mod=; struct node
{
int x,y,v;
node(){}
node(int a,int b,int c){x=a,y=b,v=c;}
}gg[];
int d[][],dp[<<][];
int n,m,s,q,dis[][],inque[][];
int dx[]={-,-,-,-,,,,};
int dy[]={-,,-,,-,,-,}; void bfs(node &ta)
{
queue<node>q;
memset(dis,0x3f3f3f3f,sizeof dis);
memset(inque,,sizeof inque);
q.push(ta),dis[ta.x][ta.y]=,inque[ta.x][ta.y]=;
while(q.size())
{
node x=q.front();
q.pop(),inque[x.x][x.y]=;
for(int i=;i<;i++)
{
int nx=x.x+dx[i],ny=x.y+dy[i];
if(!(nx>= && ny>= && nx<=n && ny<=m))
continue;
if(dis[nx][ny]>dis[x.x][x.y]+abs(dx[i]))
{
dis[nx][ny]=dis[x.x][x.y]+abs(dx[i]);
if(!inque[nx][ny])
q.push(node(nx,ny,)),inque[nx][ny]=;
}
}
}
}
int main(void)
{
std::ios::sync_with_stdio(false);
std::cin.tie();
int t;
cin>>t;
while(t--)
{
int ans=0x3f3f3f3f;
cin>>n>>m>>s>>q>>gg[].x>>gg[].y;
for(int i=; i<=s; i++)
cin>>gg[i].x>>gg[i].y>>gg[i].v;
for(int i=;i<=s;i++)
{
bfs(gg[i]);
for(int j=;j<=s;j++)
d[i][j]=dis[gg[j].x][gg[j].y];
//printf("d[%d][%d]:%d\n",i,j,d[i][j]);
}
memset(dp,0x3f3f3f3f,sizeof dp);
for(int i=;i<=s;i++)
dp[<<(i-)][i]=d[][i]+gg[i].v;
for(int i=,sz=(<<s);i<sz;i++)
{
for(int j=;j<s;j++)
for(int k=;k<s;k++)
if(((<<j)^i) && ((<<k)&i))
dp[i|(<<j)][j+]=min(dp[i][k+]+d[k+][j+]+gg[j+].v,dp[i|(<<j)][j+]);
}
for(int i=,sz=(<<s);i<sz;i++)
for(int j=;j<=s;j++)
{
int sum=;
for(int k=;k<s;k++)
if(i&(<<k)) sum++;
if(sum==q)ans=min(ans,dp[i][j]);
}
if(ans>=0x3f3f3f3f)
ans=-;
cout<<ans<<"\n";
}
return ;
}
cdoj1588 潘爷泡妹的更多相关文章
- 第一次当Uber司机,就拉到漂亮妹纸
黑马哥的Uber司机端装上很久了,一次活儿也没拉,心里一直有一种当“张师傅”的冲动.黑马哥当Uber司机,肯定不是为了图挣钱,也不是因为Uber有“新约炮神器”的称号,能通过“拉活”来泡妹纸.黑马哥体 ...
- javascript面向对象(一)
javascript是弱类型,直译式的面相对象编程语言. 在之前我们说过 var a = 123: 在这里a是整数 但是我们可以给a重新复制为 a="你好"; 在这个过程中变量a ...
- python基础整理4——面向对象装饰器惰性器及高级模块
面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...
- window系统下的pycharm对虚拟机中的Ubuntu系统操作MySQL数据库
问题:程序员和数据库的爱情故事:程序为了追一个叫MySQL数据库的姑娘,先苦练功夫,自己模拟泡妹过程积累经验,于是想到一个解决方法:[解决虚拟机跑需要连接数据库的程序卡的问题,通过在物理机Window ...
- 《云中歌》孟石头泡妞大法独家放送,单身汪get起来!!
谁说古代文人雅士只会诗词歌赋.琴棋书画?作为“玉中之王”的公子哥——孟石头泡妞可是个中高手,总结起来都能出一本“泡妞宝典”了,单身的乃们还不赶紧学起来! 第一步:假装自来熟相识,马上开启约会模式 看到 ...
- loj #6046. 「雅礼集训 2017 Day8」爷
#6046. 「雅礼集训 2017 Day8」爷 题目描述 如果你对山口丁和 G&P 没有兴趣,可以无视题目背景,因为你估计看不懂 …… 在第 63 回战车道全国高中生大赛中,军神西住美穗带领 ...
- 教妹学 Java:大有可为的集合
00.故事的起源 “二哥,上一篇<泛型>的反响效果怎么样啊?”三妹对她提议的<教妹学 Java>专栏很是关心. “有人评论说,‘二哥你敲代码都敲出幻想了啊.’” “呵呵,这句话 ...
- 教妹学 Java:难以驾驭的多线程
00.故事的起源 “二哥,上一篇<集合>的反响效果怎么样啊?”三妹对她提议的<教妹学 Java>专栏很关心. “这篇文章的浏览量要比第一篇<泛型>好得多.” “这是 ...
- 科学把妹法 ( ̄▽ ̄)"
曾经有一位生物学人士,公布了工科把妹第一弹,暨“巴甫洛夫把妹法”: 每天给你那位心仪的女同事/女同学的抽屉里都放上精心准备的早餐,并且保持缄默不语,无论她如何询问,都不要说话. 如此坚持一至两个月, ...
随机推荐
- VC++ GetSafeHwnd用法
GetSafeHwnd HWND GetSafeHwnd() const; 当我们想得到一个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数. ...
- C++之类模板
C++之类模板 代码如下: C++ Code 123456789101112131415161718192021222324252627282930313233343536373839404142 ...
- (转)Python中的random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- CSS 属性的默认值
最近在看到一篇关于如何实现水平垂直居中,发现有许多属性值,自己并不了解,特此Google一番,查到,摘抄过来,方便以后查阅,下面是如何实现水平垂直居中的博文. 解读CSS布局之-水平垂直居中 html ...
- RMI几种公布和引用服务的方式
RMI是Java原生的分布式服务机制.支持Java对Java的分布式訪问.採用Java的序列化协议进行CodeC操作. 这里简单说下RMI公布服务和client引用服务的方式. RMI公布服务时支持两 ...
- 判断uiscrollView滑到底部
本文转载至 http://blog.csdn.net/cerastes/article/details/39612177 -(void)scrollViewDidScroll:(UIScrollVi ...
- JSP内置对象——application,page,pageContext,config,Exception
application对象application对象实现了用户数据的共享,可存放全局变量.application开始于服务器的启动,终止于服务器的关闭.在用户的前后链接或不同用户之间的连接中,可以对a ...
- poj_1464 动态规划
题目大意 N个节点构成一棵树形结构,在其中若干个节点上放置士兵,与被放置士兵的节点相连的边会被士兵看守.问需要至少在多少个节点上放置士兵,才能使得N-1条边都被看守. 题目分析 题目描述的结构为树形, ...
- 微信登陆,微信SDK授权登陆经验分享
From:http://www.eoeandroid.com/thread-547012-1-1.html 最近因为项目需要做了微信登陆,好像也是微信最近才放出来的接口.还需要申请才能有权限实现授权. ...
- 170410、java Socket通信的简单例子(TCP)
服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; import java.applet.Applet; pu ...