小白月赛22 D : 收集纸片
D:收集纸片

考察点 : 全排列,对数据范围的估计程度
坑点 : 注意算最后回到初始的那步距离
析题得侃 :
一看题目最短路,诶呦,这不是最拿手的 BFS 走最短路吗?哈哈,定睛一看
这么多目的地,这还走个茄子,但是看看这道题的数据范围, 10,这不就完完
全全的可以暴力一发了,怎么暴力呢 ?
我们并不知道那条线路会是最优的,所以我们可以用全排列列举出每一条线路,
然后最后取最小值即可。
Code :
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#define INF 0x3f3f3f3f
#define x first
#define y second
using namespace std;
const int maxn = 25;
typedef pair<int,int>PII;
int T,n,res;
int start_x,start_y,end_x,end_y;
int a[maxn];
PII P[maxn];
int main(void) {
int dist(int x,int y);
void solve();
scanf("%d",&T);
while(T --) {
scanf("%d%d",&end_x,&end_y);
scanf("%d%d",&start_x,&start_y);
scanf("%d",&n);
for(int i = 1; i <= n; i ++) {
scanf("%d%d",&P[i].x,&P[i].y);
}
P[n + 1].x = start_x,P[n + 1].y = start_y;
res = INF;
solve();
printf("The shortest path has length %d\n",res);
}
return 0;
}
int dist(int ax,int ay,int bx,int by) {
return abs(ax - bx) + abs(ay - by);
}
void solve() {
// 拿 a 数组的不同排列作为我们走的每条线路
for(int i = 1; i <= n; i ++) {
a[i] = i;
}
do {
int ans = 0;
for(int i = 1; i <= n; i ++) {
if(P[a[i]].x > end_x || P[a[i]].y > end_y) continue;
if(i == 1) ans += dist(start_x,start_y,P[a[i]].x,P[a[i]].y);
else ans += dist(P[a[i]].x,P[a[i]].y,P[a[i - 1]].x,P[a[i - 1]].y);
}
// 回到起点
ans += dist(start_x,start_y,P[a[n]].x,P[a[n]].y);
res = min(res,ans);
} while(next_permutation(a + 1,a + 1 + n));
return ;
}
后记:
一定要观察数据范围,根据数据范围采取对应的策略
小白月赛22 D : 收集纸片的更多相关文章
- 小白月赛22 G : 仓库地址
G : 仓库地址 考察点: 二维中位数 坑点 : 做就 OK 析题得侃: 我们发现 x 和 y 是相互独立的,也就是说先移动 x 或者先移动 y 都是可以到达一个点的,所以我们可以先找到 横坐标的 中 ...
- 小白月赛22 J : 计算 A + B
J:计算 A + B 考察点 : 高精度,字符串 坑点 : 字符串中可能全是数字,或者 + 超过 1 个,需要进行特殊判断 析题得侃: 关于高精度的各种板子 Code: #include <ve ...
- 小白月赛22 F: 累乘数字
F:累乘数字 考察点: 思维,高精度 坑点 : 模拟就 OK 析题得侃: 如果你思维比较灵敏:直接输出这个数+ d 个 "00"就行了 当然,我还没有那么灵敏,只能用大数来搞了 关 ...
- 小白月赛22 E : 方格涂色
E:方格涂色 考察点 : 思维,模拟 坑点 : long long 其他的好像没什么,读懂题意就可以 AC 不要被样例画的图所迷惑 Code: #include <vector> #inc ...
- 小白月赛22 B : 树上子链
B:树上子链 考察点 : 树的直径 坑点 : long long, 是点权不是边权 一个点也算一条链 析题得侃: 关于树的直径 这道题考察的是树的直径,最好用树形DP来写,具体解释详见上述博客, 这道 ...
- 小白月赛22 A : 操作序列
A:操作序列 析题得说: 考察点 : 模拟,STL库容器的使用 坑点 : 区间不要搞丢东西 难点 : 这个题比较变态的是我们不知道每次输入每行是一个数还是两个数,就需要进行判断, 怎么判断呢?用 sc ...
- 树的最长链-POJ 1985 树的直径(最长链)+牛客小白月赛6-桃花
求树直径的方法在此转载一下大佬们的分析: 可以随便选择一个点开始进行bfs或者dfs,从而找到离该点最远的那个点(可以证明,离树上任意一点最远的点一定是树的某条直径的两端点之一:树的直径:树上的最长简 ...
- [比赛|考试]nowcoder 小白月赛7
牛客小白月赛7 比赛地址.本次比赛我切了8道(ACM赛制),rank(20). 反思:刚入手ACM赛,光追求刺激了,没有总结ACM赛制的经验.是应该多提交>..还是少提交...小白赛还有两道不会 ...
- 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?
牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...
随机推荐
- pytorch-- Attention Mechanism
1. paper: Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translat ...
- shell脚本 server httpd 控制程序
原版的脚本里 查看status 需要用 lynx这个命令,还要开启http://localhost:80/server-status 比较麻烦,我直接注释了,新加的代码用红色字体 ...
- HDU 1042 大数阶乘
B - 2 Time Limit:5000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- mqttnet3.0用法
.net常用的mqtt类库有2个,m2mqtt和mqttnet两个类库 当然了,这两个库的教程网上一搜一大把 但mqttnet搜到的教程全是2.7及以下版本的,但3.0版语法却不再兼容,升级版本会导致 ...
- vue自由拖拽、缩放组件
github地址:https://github.com/kirillmurashov/vue-drag-resize 安装: npm i -s vue-drag-resize 使用: <temp ...
- 让div充满整个body
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java中HashSet的重复性与判等运算重载
目录 还有一个故事--(平行世界篇) 还有一个美丽的梦幻家园:java.util 并且还有一个善战的达拉崩巴:HashSet 还有另外一个故事(不是虚假传说) 还有一对涂满毒药的夺命双匕:equals ...
- POJ 1753 Flip Game 暴力 深搜
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 59468 Accepted: 24750 Descr ...
- C#设计模式学习笔记:(22)备忘录模式
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8176974.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第十个模式--备 ...
- 前端的Cookies
Cookies cookies 特性 前端数据存储 后端通过 HTTP 头设置 请求时通过 HTTP 头传给后端 前端可读可写 遵守同源策略 域名 有效期 路径 http-only secure(ht ...