CCPC-Wannafly Winter Camp Day4 Div1 - 夺宝奇兵 - [简单思维题]
题目链接:https://zhixincode.com/contest/18/problem/A?problem_id=259
题目描述
wls正在玩一个寻宝游戏。
宝藏一共有 $n$ 种,都藏在一个 $m$ 行 $m$ 列的网格中。
每种宝藏都恰好有两个。
wls只能沿着网格走(上下左右四个方向)。
他想依次获得 $1...n$ 类宝藏,然后再以 $n...1$ 的顺序获得剩下的宝藏。
wls可以从任意点出发。
当wls到达某个宝藏的位置时,他可以选择取或不取这个宝藏。
请问他最少要移动多少距离?
输入描述
第一行两个整数 $n$,$m$。
接下来 $n$ 组,每组两行表示一类宝藏,每行两个整数 $x$,$y$ 表示一个宝藏的坐标。
$1≤n,m≤100000$
$1≤x,y≤m$
输出描述
一行一个整数表示答案。
题解:
将问题转换为两个人同时从第 $1$ 种宝藏出发,沿着 $1~n$ 的顺序拿宝藏。
假设第 $1$ 种宝藏分别为 $1a$ 和 $1b$,第 $2$ 种宝藏也分别为 $2a,2b$,那么只有两种选择 $1a → 2a, 1b → 2b$ 或者 $1a → 2b, 1b → 2a$,选择路程更短的就好了,因为不管当前怎么选择,对之后都没有任何影响。
最后再加个 $na$ 到 $nb$ 之间的路程就好了。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
int n,m;
struct P{
int x,y;
}p[maxn][];
ll dist(P a,P b)
{
return (ll)abs(a.x-b.x)+abs(a.y-b.y);
}
int main()
{
cin>>n>>m;
for(int i=;i<=n;i++)
{
scanf("%d%d",&p[i][].x,&p[i][].y);
scanf("%d%d",&p[i][].x,&p[i][].y);
} ll ans=;
for(int i=;i<=n;i++)
{
ans+=min(dist(p[i-][],p[i][])+dist(p[i-][],p[i][]),dist(p[i-][],p[i][])+dist(p[i-][],p[i][]));
}
cout<<ans+dist(p[n][],p[n][])<<endl;
}
CCPC-Wannafly Winter Camp Day4 Div1 - 夺宝奇兵 - [简单思维题]的更多相关文章
- CCPC-Wannafly Winter Camp Day1 Div1 - 夺宝奇兵 - [贪心+线段树]
题目链接:https://zhixincode.com/contest/3/problem/J?problem_id=43 样例输入 1 4 1110 11 110 21 210 31 315 415 ...
- 2020 CCPC Wannafly Winter Camp Day1 C. 染色图
2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任 ...
- 【CCPC-Wannafly Winter Camp Day4 (Div1) A】夺宝奇兵(水题)
点此看题面 大致题意: 有\(n\)种宝藏,每种各两个.让你依次获得\(1\sim n\)号宝藏,然后依次获得剩余的\(n\sim1\)号宝藏,求最少步数. 简单结论 其实这题有一个十分简单的结论,即 ...
- Wannafly Winter Camp Day8(Div1,onsite) E题 Souls-like Game 线段树 矩阵乘法
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门 Portal 原题目描述在最下面. 简单的 ...
- CCPC-Wannafly Winter Camp Day4 Div1 - 咆咆咆哮 - [三分+贪心]
题目链接:https://zhixincode.com/contest/18/problem/I?problem_id=267 题目描述 输入描述 输出描述 一行一个整数表示答案. 样例输入 1 32 ...
- CCPC-Wannafly Winter Camp Day4 Div1 - 置置置换 - [DP]
题目链接:https://zhixincode.com/contest/18/problem/G?problem_id=265 题目描述 wls有一个整数 $n$,他想请你算一下有多少 $1...n$ ...
- CCPC-Wannafly Winter Camp Day4 Div1 - 最小边覆盖 - [线段树]
题目链接:https://zhixincode.com/contest/18/problem/C?problem_id=261 样例输入 1 4 21 23 4 样例输出 1 Yes 样例输入 2 4 ...
- 【CCPC-Wannafly Winter Camp Day4 (Div1) G】置置置换(动态规划)
点此看题面 大致题意: 求出有多少个长度为\(n\)的排列满足对于奇数位\(a_{i-1}<a_i\),对于偶数位\(a_{i-1}>a_i\). 考虑打表? 考虑每次只有一个数\(n\) ...
- 【CCPC-Wannafly Winter Camp Day4 (Div1) C】最小边覆盖(简单题)
点此看题面 大致题意: 给你一个边集的子集,问你这可不可能是这张图的最小边覆盖. 大致思路 考虑到,如果一条边连接的两个点度数都大于等于\(2\),则这条边完全可以删去. 因此,我们只要判断是否存在这 ...
随机推荐
- 001_ASP.NET MVC 实用教程 论坛项目 北盟网校 原创视频教程
下载地址 http://pan.baidu.com/s/1kUJalbp 在线观看地址 http://www.bamn.cn/course/lesson/1 ASP.NET MVC 使用课程,是201 ...
- swift3 与 OC 语法区别
1.Swift还增加了Objective-C中没有的类型比如元组(Tuple). 元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值. 元组(tuples)把多个 ...
- IDEA使用笔记(七)——编辑器最大个数的设置
我想一定有许多人和我一样在使用IDEA的时候,打开了许多的编辑器选项卡,但是打开的数量是有限的,我们想打开更多的页面,并且希望控制当再次达到大限的时候能关闭那些我们最久没有看的文件! 好吧!看下面的配 ...
- 【Java多线程】JDK1.5并发包API杂谈
并发与并行 并发 一个或多个处理器执行更多的任务(通过划分时间片来执行更多的任务),从逻辑上实现同时运行: 如,N个并发请求在一个两核CPU上: 并行 N个处理器分别同时执行N个任务,从物理上实现同时 ...
- 主机使用代理上网,虚拟机centos7如何连外网
简介 今天任务不多,就想在学一些fastdfs,然后发现公司是通过代理上外网的,这里记录下,主机使用代理上网,虚拟机centos7如何连外网 vi /etc/yum.conf 加上 proxy=ht ...
- Thinkphp 关联模型和试图模型区别
关联模型主要在多表操作时使用,比如 user表,user_role表,role表 user_role字段:uid,rid,它作为中间表,负责将user和role之间的,1对1,1对多,多对多的关系进行 ...
- Git 目录
linux通过用户名.密码提交的方式搭建私有git服务端 centos 6.5 6.6 6.7安装gitlab教程(社区版) Git 初始化项目.创建合并分支.回滚等常用方法总结 Git 错误集锦
- SAP HANA S4 FI TABLE表结构
一.统一日记账的表 1)一个行项目表,存储所有应用的全部明细–迅速获得洞察力和扩展能力; 2)次级成本要素也变成了总账科目,统一入口维护和管理; 3)数据只需存储一次在一张表,不需要再做月末对账,如A ...
- Zookeeper系列三:Zookeeper客户端的使用(Zookeeper原生API如何进行调用、ZKClient、Curator)和Zookeeper会话
一.Zookeeper原生API如何进行调用 准备工作: 首先在新建一个maven项目ZK-Demo,然后在pom.xml里面引入zk的依赖 <dependency> <groupI ...
- 性能优化系列八:MYSQL的配置优化
一.关键配置 1. 配置文件的位置 MySQL配置文件 /etc/my.cnf 或者 /etc/my.cnf.d/server.cnf 几个关键的文件:.pid文件,记录了进程id.sock文件,是内 ...