黄学长模拟day1 大逃亡
给出数字N(1<=N<=10000),X(1<=x<=1000),Y(1<=Y<=1000),代表有N个敌人分布一个X行Y列的矩阵上,矩形的行号从0到X-1,列号从0到Y-1再给出四个数字x1,y1,x2,y2,代表你要从点(x1,y1)移到(x2,y2)。在移动的过程中你当然希望离敌人的距离的最小值最大化,现在请求出这个值最大可以为多少,以及在这个前提下,你最少要走多少步才可以回到目标点。注意这里距离的定义为两点的曼哈顿距离,即某两个点的坐标分为(a,b),(c,d),那么它们的距离为|a-c|+|b-d|。
输入:
第一行给出数字N,X,Y
第二行给出x1,y1,x2,y2
下面将有N行,给出N个敌人所在的坐标
输出:
在一行内输出你离敌人的距离及在这个距离的限制下,你回到目标点最少要移动多少步。
Sample input
2 5 6
0 0 4 0
2 1
2 3
Sample output
2 14
- /*
- 同bzoj热身赛,二维前缀和,灌水留坑
- */
- #include<iostream>
- #include<cstdio>
- #include<string>
- #include<cstring>
- #include<algorithm>
- #include<cmath>
- #include<queue>
- using namespace std;
- const int maxn = ,inf = ;
- inline int read(){
- char ch=getchar();
- int f=,x=;
- while(!(ch>=''&&ch<='')){if(ch=='-')f=-;ch=getchar();};
- while(ch>=''&&ch<=''){x=x*+(ch-'');ch=getchar();};
- return x*f;
- }
- struct nd{
- int x;
- int y;
- };
- int p,n,m;
- int ex[maxn],ey[maxn],xa,xb,ya,yb;
- int flag,dis[][],vis[][];
- short d[][],s[][];
- int dx[] = {,,-,};
- int dy[] = {,,,-};
- bool emy[][];
- inline bool jud(int x,int y,int t){
- if(x < || y < || x >= m || y >= n) return false;
- if(t == ) return true;
- t--;
- int tx=+x-y+t,ty=x+y+t,dx=+x-y-t,dy=x+y-t;
- if(ty>=n+m-) ty = n+m-;
- if(tx>=+m) tx = +m;
- int tot = s[ty][tx];
- if(dy>&&dx>-n) tot += s[dy-][dx-];
- if(dy>) tot -= s[dy-][tx];
- if(dx>-n) tot -= s[ty][dx-];
- if(tot) return false;
- else return true;
- }
- bool check(int t){
- if(!jud(xa,ya,t)) return false;
- flag++;
- for(int i = ;i <= n+;i++){
- for(int j = ;j <= m+;j++){
- dis[i][j] = inf;
- }
- }
- nd now,nxt;
- now.x = xa;
- now.y = ya;
- queue<nd> q;
- q.push(now);
- dis[ya][xa] = ;
- vis[ya][xa] = flag;
- while(!q.empty()){
- now = q.front();
- q.pop();
- //cout<<now.y<<" "<<now.x<<endl;
- for(int dr = ;dr < ;dr++){
- nxt.x = now.x + dx[dr];
- nxt.y = now.y + dy[dr];
- if(jud(nxt.x,nxt.y,t)&&vis[nxt.y][nxt.x] != flag){
- dis[nxt.y][nxt.x] = dis[now.y][now.x] + ;
- vis[nxt.y][nxt.x] = flag;
- q.push(nxt);
- if(nxt.y == yb && nxt.x == xb) return true;
- }
- }
- }
- return false;
- }
- int main(){
- freopen("escape.in","r",stdin);
- freopen("escape.out","w",stdout);
- cin>>p>>m>>n>>xa>>ya>>xb>>yb;
- for(int i = ;i <= p;i++){
- scanf("%d%d",&ex[i],&ey[i]);
- emy[ex[i]+ey[i]][+ex[i]-ey[i]] = true;
- }
- for(int i = ;i < n + m - ;i++){
- for(int j = -n;j < +m;j++){
- if(emy[i][j]) d[i][j] = d[i][j-] + ;
- else d[i][j] = d[i][j-];
- }
- }
- for(int i = ;i < n + m - ;i++){
- for(int j = -n;j < +m;j++){
- if(!i) s[i][j] = d[i][j];
- else s[i][j] = s[i-][j] + d[i][j];
- }
- }
- int l = ,r = n + m,mid,ans1,ans2;
- while(l <= r){
- mid = (l + r) >> ;
- if(check(mid)){
- ans1 = mid;
- ans2 = dis[yb][xb];
- l = mid + ;
- }else{
- r = mid - ;
- }
- }
- cout<<ans1<<" "<<ans2;
- return ;
- }
黄学长模拟day1 大逃亡的更多相关文章
- 黄学长模拟day1 某种密码
关于某种密码有如下描述:某种密码的原文A是由N个数字组成,而密文B是一个长度为N的01数串,原文和密文的关联在于一个钥匙码KEY.若KEY=∑▒[Ai*Bi],则密文就是原文的一组合法密码. 现在有原 ...
- 黄学长模拟day1 球的序列
N个编号为1-n的球,每个球都有唯一的编号.这些球被排成两种序列,分别为A.B序列,现在需要重新寻找一个球的序列l,对于这个子序列l中任意的两个球,要求j,k(j<k),都要求满足lj在A中位置 ...
- HDOJ 1429 胜利大逃亡(续)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- 胜利大逃亡(续)hdu1429(bfs)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- hdu1429胜利大逃亡(bfs)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- hdu.1429.胜利大逃亡(续)(bfs + 0101011110)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- 胜利大逃亡[HDU1253]
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu 1429 胜利大逃亡(续)
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王 ...
- Hdu 1429 胜利大逃亡(续) 分类: Brush Mode 2014-08-07 17:01 92人阅读 评论(0) 收藏
胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Subm ...
随机推荐
- Linux Process Virtual Memory
目录 . 简介 . 进程虚拟地址空间 . 内存映射的原理 . 数据结构 . 对区域的操作 . 地址空间 . 内存映射 . 反向映射 .堆的管理 . 缺页异常的处理 . 用户空间缺页异常的校正 . 内核 ...
- memcached的分布式
今天写点周末在火车上看的memcached的东西: 一:memcached的分布式 虽然memcached被称为“分布式”缓存服务器,但是服务器端并没有“分布式”的功能.而是通过客户端来实现的. Me ...
- EF 知识点
EntityFrameWorak知识点记录 发展史 EF1.0时,只支持Database First,数据库优先.必须将设计器指向一个现有的数据库. EF4时,支持Model First,模型优先.可 ...
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-13: ordinal not i│ n range(128)
python保持网页文件遇到的错误,归根结底还是编码问题,改一下要保存的数据为utf-8就好了. 如下最简单: import sys reload(sys) sys.setdefaultencodin ...
- 【Beta】第二次任务发布
后端 了解社区新建文章.添加评论(回复)的机制.整理成API文档,包括如何请求新建文章.新建评论(回复).如何获取文章内容和评论内容. 验收条件:文档PM要能看懂. 前端 微调数据输入部分的布局和操作 ...
- 《JavaScript权威指南》学习笔记 第二天 下好一盘大棋
前段学习js的时候总是零零散散的,以至于很多东西都模棱两可.时间稍微一久,就容易忘记.最主要的原因是这些东西,原来学的时候就不是太懂,以至于和其他知识无法形成记忆链,所以孤零零的知识特别容易忘记.重温 ...
- jQuery知识点总结(第四天)
前三天是jQuery的基础部分,选择器学好了.才能进行下一步的操作,如果前三天没学过没学好,不要跳着学.粗俗的话叫做,步子大了,容易扯着蛋.一步一个脚印,是最好的方式. 强调一下.有问题,不要憋着不讲 ...
- Mysql配置项的简单优化
preface 众所周知,Mysql已经成为广泛使用的开源数据库了,so 公司阿里云的数据库为Mysql,在最开始的时候是直接yum安装,配置项都是默认的,没有任何调整,这次有时间就参考各路大神的资料 ...
- NSFileManager(沙盒文件管理)数据持久化 <序列化与反序列化>
iOS应用程序只能在为该改程序创建的文件中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 默认情况下 ...
- mysql修改引擎
1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from db_name where name='table_na ...