NOIP 模拟赛 23 T4 大逃亡O(二分+广搜)(∩_∩)O
题目描述
在移动的过程中你当然希望离敌人的距离的最小值最大化,现在请求出这个值最大可以为多少,以及在这个前提下,你最少要走多少步才可以回到目标点。
注意这里距离的定义为两点的曼哈顿距离,即某两个点的坐标分为(a,b),(c,d),那么它们的距离为|a-c|+|b-d|。
注意:C++11里,不能定义变量名为Y1或者y1。
输入
第2行:给出 x1,y1,x2,y2;
接下来N行:给出N个敌人所在的坐标.
1≤N≤10000,1≤x≤1000,1≤Y≤1000.
输出
样例输入 Copy
2 5 6
0 0 4 0
2 1
2 3
样例输出 Copy
2 14 考试总结:
- 这题感觉还比较简单(相对于考试的其他题目来说),对于其他的什么折半搜索,dp,瞎搞,这题就属于只要你想写,码力还可以基本上都可以写出来
- 这题的题目里明确说了要是最小值最大,所以这题很明显就是二分
- 二分什么呢,看完题目就可以得知只能是离最近的敌人的距离。
- 先预处理一下所有点到自己最近敌人的距离,然后去二分,再原来的图上跑暴力搜索,然后就没了,真的没了
- 搞不懂为什么这题没人打呢,传说中的有分不要?
- 放下代码
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int maxn=;
const int mx[]={,-,,};
const int my[]={,,,-};
int n,m,dis[maxn][maxn],tim[maxn][maxn],vis[maxn][maxn];
queue< int > q;
void caltime() //预处理出所有点到最近敌人的距离
{
while(!q.empty())
{
int x=q.front()/m;
int y=q.front()%m;
q.pop();
for(int dir=;dir<=;dir++)
{
int nx=x+mx[dir];
int ny=y+my[dir];
if(nx>=&&nx<n&&ny>=&&ny<m&&!vis[nx][ny])
{
vis[nx][ny]=;
tim[nx][ny]=tim[x][y]+;
q.push(nx*m+ny);
}
}
}
memset(vis,,sizeof(vis));
}
int check(int mid,int x1,int x2,int y1,int y2) //开始爆搜,怎么暴力怎么来
{
if(tim[x1][y1]<mid)
{
return ;
}
memset(vis,,sizeof(vis));
q.push(x1*m+y1);
vis[x1][y1]=;
dis[x1][y1]=;
while(!q.empty())
{
int x=q.front()/m;
int y=q.front()%m;
q.pop();
for(int dir=;dir<=;dir++)
{
int nx=x+mx[dir];
int ny=y+my[dir];
if(nx>=&&nx<n&&ny>=&&ny<m&&!vis[nx][ny]&&tim[nx][ny]>=mid)
{
vis[nx][ny]=;
dis[nx][ny]=dis[x][y]+;
q.push(nx*m+ny);
}
}
}
return vis[x2][y2];
}
int main()
{
ios::sync_with_stdio(false);
int c;
cin>>c;
cin>>n>>m;
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
for(int i=;i<=c;i++)
{
int x,y;
cin>>x>>y;
tim[x][y]=;
vis[x][y]=;
q.push(x*m+y);
}
caltime();
int l=,r=max(n,m)+,mid;
while(l+<r) //二分能当答案的距离
{
if(check(mid=l+r>>,x1,x2,y1,y2))
{
l=mid;
}
else
{
r=mid;
}
}
check(l,x1,x2,y1,y2);
cout<<l<<" "<<dis[x2][y2]<<endl;
return ;
}
总结一下:
考试时要懂得放弃,不要死搞一题,,对于一些暴力可以过得东西要去打
NOIP 模拟赛 23 T4 大逃亡O(二分+广搜)(∩_∩)O的更多相关文章
- hdu 1253:胜利大逃亡(基础广搜BFS)
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 【NOIP模拟赛】正方形大阵
正方形大阵 [问题描述] [输入格式] 第一行一个正整数n代表询问次数. 接下来n行每行一个不超过八位的小数k代表一组询问. [输出格式] 输出共n行,代表每次询问的答案:如果有无数个交点 ...
- noip模拟赛 第k大区间
[问题描述] 定义一个长度为奇数的区间的值为其所包含的的元素的中位数. 现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. [输入] 输入文件名为kth.in. 第一行两个数n和k ...
- noip模拟赛#23
T1:n个元素的集合.要求取出k个子集,使得k个子集交集为空集.问有多少中取法. =>推了很久...想的是从k等于2的情况推到k等于3的情况....然后k=2推出来了k=3也推出来了...推了挺 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
随机推荐
- Python多任务之进程
Process多进程 进程的概念 程序是没有运行的代码,静态的: 进程是运行起来的程序,进程是一个程序运行起来之后和资源的总称: 程序只有一个,但同一份程序可以有多个进程:例如,电脑上多开QQ: 程序 ...
- SpringBootSecurity学习(24)前后端分离版之OAuth2.0 应用登记
应用登记 一个应用要求 OAuth 授权,必须先到对方网站登记,让对方知道是谁在请求.举个例子,下面是github的登记页面: https://github.com/settings/applicat ...
- 货物运输 51Nod - 1671
公元2222年,l国发生了一场战争. 小Y负责领导工人运输物资. 其中有m种物资的运输方案,每种运输方案形如li,ri.表示存在一种货物从li运到ri. 这里有n个城市,第i个城市与第i+1个城市相连 ...
- 使用Xming显示Oracle Linux图形界面
如果你在尝试各种官方说明文档中的方法之后,xclock仍然无法远程显示. 系统 Win10 - Oracle Linux 7.5 Xming的文档以及网上教程都说的是Xming相关的配置 但是,要显示 ...
- jQuery v1.10.2如何判断checkbox(复选框)是否被选中
做项目时,我们经常会用到jquery来做一些判断,今天自己遇上判断复选框是否选中,然后搜索查看,发现现在网上的都是错误的,下面罗列错误的: 1.$("#id").attr(&quo ...
- PowerUp攻击模块实战
PowerUp攻击模块实战 1.将PowerUp.ps1脚本上传至目标服务器,然后在本地执行 2.使用IEX在内存中加载此脚本,执行以下命令,脚本将进行所有的检查. powershell.exe ...
- burp插件之xssValidator
0x01 安装环境 Phantomjs 下载:http://phantomjs.org/download.html 下载后配置环境变量,把bin目录下的这个exe加入环境变量 xssValidator ...
- 代码审计-凡诺CMS 2.1文件包含漏洞
0x01代码审计 后台账号密码: admin admin 安装好了是这样的 漏洞文件:/channel.php if (ism()) { include($dir.$t_mpath.$c_mcmode ...
- HTTPS 验证访问略记
背景 互联网刚刚兴起的时候,网络安全并没有被很好的重视.HTTP 是明文传输的,这为意图谋不道德之事者提供了诸多的便利.当越来越多的人利益受到侵害的时候,开始重视网络传输的安全问题了. HTTPS 加 ...
- ndnsim安装遇到的一些问题
我是安装的Ubuntu18.04+ndnsim2.7 由于最新版ndnsim的可视化与Python不兼容,出现了一些问题 1. No visualization support (cannot imp ...