洛谷 P1690 贪婪的Copy
题目
本题难度较低,操作比较简单,首先对于范围较小的N(<=100),我们可以先跑一遍floyd,求出任意两点之间的最短路。对于很小的p(<=15),我们可以直接考虑全排列,运用到next_permutation(, )函数即可快速解决此题
Code:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
//Mystery_Sky
//
#define maxn 300
#define INF 0x3f3f3f3f
int point[maxn];
int road[maxn][maxn];
int vis[maxn];
int ans = INF, sum;
int n, w, a, p;
void dfs(int step, int dis, int get)
{
vis[step] = 1;
if(get == p && step == n) {
ans = min(dis, ans);
return;
}
for(int i = 1; i <= n; i++) {
if(i == step) continue;
if(!vis[i] && point[i]) {
dis += road[step][i];
vis[i] = 1;
dfs(i, dis, get+1);
vis[i] = 0;
dis -= road[step][i];
}
}
}
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
scanf("%d", &w);
road[i][j] = w;
}
}
for(int k = 1; k <= n; k++) {
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
road[i][j] = min(road[i][j], road[i][k] + road[k][j]);
}
}
}
scanf("%d", &p);
for(int i = 1; i <= p; i++) scanf("%d", &point[i]);
sort(point+1, point+1+p);
do {
sum = road[1][point[1]];
for(int i = 2; i <= p; i++) {
sum += road[point[i-1]][point[i]];
}
sum += road[point[p]][n];
ans = min(ans, sum);
} while(next_permutation(point+1, point+p+1));//p!枚举全排列即可
printf("%d\n", ans);
return 0;
}
洛谷 P1690 贪婪的Copy的更多相关文章
- 洛谷——P1690 贪婪的Copy
P1690 贪婪的Copy 题目描述 Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地.卢牛告诉了Copy这里共有个宝藏,分别放在第Pi个(1&l ...
- 洛谷—— P1690 贪婪的Copy
https://www.luogu.org/problem/show?pid=1690 题目描述 Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地 ...
- 洛谷P1690 贪婪的Copy 题解
题目:https://www.luogu.org/problemnew/show/P1690 分析: 这道题就是一道最短路的题目,因为看到数据范围: n≤100n\leq100n≤100 所以考虑使用 ...
- Luogu P1690 贪婪的Copy
题目描述 Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地.卢牛告诉了Copy这里共有个宝藏,分别放在第Pi个(1<=Pi<=N)区域 ...
- 洛谷 P2184 贪婪大陆 解题报告
P2184 贪婪大陆 题目背景 面对蚂蚁们的疯狂进攻,小\(FF\)的\(Tower\) \(defence\)宣告失败--人类被蚂蚁们逼到了\(Greed\) \(Island\)上的一个海湾.现在 ...
- 洛谷P2184 贪婪大陆
题目背景 面对蚂蚁们的疯狂进攻,小FF的\(Tower\) \(defence\)宣告失败--人类被蚂蚁们逼到了\(Greed\) \(Island\)上的一个海湾.现在,小FF的后方是一望无际的大海 ...
- 洛谷 P2184 贪婪大陆
题面 又是一类比较套路的题呢? 假如我们的地雷都表示成 [l[i],r[i]] ,要求[L,R],那么就相当于要求满足 (l[i]<=R && r[i]>=L)的i的个数. ...
- 洛谷P2184——贪婪大陆
传送门:QAQQAQ 题意:给一个长度为$n$的区间,每次可以进行两种操作: 1.在$[l,r]$这个区间里放置一个和之前种类不同的炸弹 2.查询在$[l,r]$区间内有多少种不同种类的炸弹 思路:第 ...
- 洛谷 P1379 八数码难题 Label:判重&&bfs
特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...
随机推荐
- ZigBee简介
前言 目前,中国大力推广的物联网是zigbee 应用的主战场,物联网通过智能感知.识别技术与普适计算(我还特意申请了个域名psjs.vip).泛在网络的融合应用,被称为继计算机.互联网之后世界信息产业 ...
- ACM实用C语言函数
函数名: abs 功 能: 求整数的绝对值 用 法: int abs(int i); 程序例: #include <stdio.h> #include <math.h> int ...
- 导出数据到EXCEL并生成多个Sheet
一.准备工作 引用:Microsoft.Office.Interop.Excel 准备多个DataTable数据添加到DataSet中. 二.代码 public void CreateExcel(Da ...
- LeafLet之气泡框隐藏"x"图标
例子:var marker.bindPopup( "我是一个图标的文本", { minWidth: 300 }).openPopup();L.Popup Constructor(函 ...
- AngularJs(Part 5)--与后台联系
AngularJS内置了$http这个服务来与后台联系.(默认会把接受到的数据转换为json)当然,还有一个$resource来提供与RESTful后台联系的服务. $http服务 $http比 ...
- SynEdit(Delphi XE7)的安装和基本使用
一.花絮 delphi自带的memo显示sql语句看的太累人了,今天决定美化一下.最起码要有“语法着色”.“显示行号”这2个功能. 意外发现了 SynEdit 控件. SynEdit是一个免费的文字编 ...
- CPU密集型和IO密集型
对于Python如果是CPU密集型应该用多进程模型(大量的计算) 如果是IO密集型应该用多线程模型(数据的读取写入.网络IO数据传输) 由于GIL的存在,CPython不能有效的利用多核处理器,表 ...
- Spring入门第十一课
IOC容器中Bean的生命周期 Spring IOC容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务. Spring IOC容器对Bean的生命周期进行管理的过 ...
- Spring入门第十课
Spring表达式语言:SpEL Spring表达式语言(简称SpEL)是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都 ...
- Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1
Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1 这个问题,原因是UTF-8编码有可能是两个.三个.四个字节.Emoji表 ...