地址: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 潘爷泡妹的更多相关文章

  1. 第一次当Uber司机,就拉到漂亮妹纸

    黑马哥的Uber司机端装上很久了,一次活儿也没拉,心里一直有一种当“张师傅”的冲动.黑马哥当Uber司机,肯定不是为了图挣钱,也不是因为Uber有“新约炮神器”的称号,能通过“拉活”来泡妹纸.黑马哥体 ...

  2. javascript面向对象(一)

    javascript是弱类型,直译式的面相对象编程语言. 在之前我们说过 var a = 123: 在这里a是整数 但是我们可以给a重新复制为 a="你好"; 在这个过程中变量a ...

  3. python基础整理4——面向对象装饰器惰性器及高级模块

    面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...

  4. window系统下的pycharm对虚拟机中的Ubuntu系统操作MySQL数据库

    问题:程序员和数据库的爱情故事:程序为了追一个叫MySQL数据库的姑娘,先苦练功夫,自己模拟泡妹过程积累经验,于是想到一个解决方法:[解决虚拟机跑需要连接数据库的程序卡的问题,通过在物理机Window ...

  5. 《云中歌》孟石头泡妞大法独家放送,单身汪get起来!!

    谁说古代文人雅士只会诗词歌赋.琴棋书画?作为“玉中之王”的公子哥——孟石头泡妞可是个中高手,总结起来都能出一本“泡妞宝典”了,单身的乃们还不赶紧学起来! 第一步:假装自来熟相识,马上开启约会模式 看到 ...

  6. loj #6046. 「雅礼集训 2017 Day8」爷

    #6046. 「雅礼集训 2017 Day8」爷 题目描述 如果你对山口丁和 G&P 没有兴趣,可以无视题目背景,因为你估计看不懂 …… 在第 63 回战车道全国高中生大赛中,军神西住美穗带领 ...

  7. 教妹学 Java:大有可为的集合

    00.故事的起源 “二哥,上一篇<泛型>的反响效果怎么样啊?”三妹对她提议的<教妹学 Java>专栏很是关心. “有人评论说,‘二哥你敲代码都敲出幻想了啊.’” “呵呵,这句话 ...

  8. 教妹学 Java:难以驾驭的多线程

    00.故事的起源 “二哥,上一篇<集合>的反响效果怎么样啊?”三妹对她提议的<教妹学 Java>专栏很关心. “这篇文章的浏览量要比第一篇<泛型>好得多.” “这是 ...

  9. 科学把妹法 ( ̄▽ ̄)"

    曾经有一位生物学人士,公布了工科把妹第一弹,暨“巴甫洛夫把妹法”: 每天给你那位心仪的女同事/女同学的抽屉里都放上精心准备的早餐,并且保持缄默不语,无论她如何询问,都不要说话.  如此坚持一至两个月, ...

随机推荐

  1. 使用binlog日志还原数据详解

    1)看一下你的mysql服务器有没开启binlog日志(ON为开启,OFF为未开启) show variables like 'log_bin'; 2)找到你的binlog文件在哪 登录 mysql ...

  2. 仿美团ViewPager+GridView

    在接下来我要实现一个仿美团的效果 1.首先写一个登录注册界面用到了,很简单... 这里要提醒各位在调用方法时有set...     也有add....  的方法,为了严谨可以做些正则判断手机号,用se ...

  3. JS-textarea限制输入字数

    解决办法: #descrip 是textarea的id,字数小于40: $("#descrip").on('input',function(event) { if ($(" ...

  4. 扩展jquery scroll事件,支持 scroll start 和 scroll stop

    效果预览: github: https://besswang.github.io/webapp-scroll/ 参考地址: http://www.ghugo.com/special-scroll-ev ...

  5. vim 命令重新安装

    author : headsen chendate: 2018-05-11 09:50:23 [root@localhost ~]# which vim /usr/bin/vim [root@loca ...

  6. Android ListView的监听事件

    Android开发时,最常用的控件之一就是ListView了,而使用ListView的同时,必然需要对它设置监听器,常用的监听器有这么几个1.OnItemClickListener 2.OnTouch ...

  7. datatables如何把列设置成hidden隐藏域?

    官网:https://datatables.net/reference/option/设置: visible: false如下: <!DOCTYPE html><html>&l ...

  8. html的table列表根据奇数还是偶数行显示不同颜色

    <tr <s:if test="#sts.even"> class="table_1" onMouseOut="this.class ...

  9. 使用jquery-qrcode生成二维码(转载)

    一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcod ...

  10. Spring的AOP-----HelloWord

    这里就一个计算器开发为例1搭建环境-搭配好Spring的AOP开发环境导入以下这些包:2建立好核心处理模块的类ArithmeticCalculator: package com.jeremy.spri ...