P4874 回形遍历 —模拟




思路:
写完后信心满满,结果超时。
我很不解,下了个数据结果——,z竟然是大于1e10的,跟题目给的不一样啊
原来如此,正解是一行一行的走的。。。
注意当到两边一样近时,应优先向下和右!!!!!!
这是个50分代码
#include<iostream>
#include<queue>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define N 100009
int n,m,x,y,z;
int deep,dir;
int dx[]={,,-,},dy[]={,,,-};
int main()
{
scanf("%d%d%d%d%d",&n,&m,&x,&y,&z);
deep=min(x,y);deep=min(deep,min(n-x,m-y));
if(deep==x) dir=;
if(deep==y) dir=;
if(deep==(n-x)) dir=;
if(deep==(m-y)) dir=;
dir--;n--,m--;
for(int i=;i<=z;i++)
{
if(x+dx[dir]>=deep&&y+dy[dir]>=deep&&x+dx[dir]<=n-deep&&y+dy[dir]<=m-deep)
x+=dx[dir],y+=dy[dir];
else
{
dir=(dir+)%;
x+=dx[dir],y+=dy[dir];
}
}
printf("%d %d",x,y);
return ;
}
这是个AC代码
#include<iostream>
#include<queue>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
long long n,m,x,y,z;
long long deep,dir,len;
int main()
{ scanf("%lld%lld%lld%lld%lld",&n,&m,&x,&y,&z);n--,m--;
deep=min(x,y);deep=min(deep,min(n-x,m-y));
if(deep==(m-y)) dir=;
if(deep==x) dir=;
if(deep==y) dir=;
if(deep==(n-x)) dir=;
if(x==(n-x)&&x==deep)
dir=;
if(y==(m-y)&&y==deep)
dir=; dir--;
while(z+>=)
{
if(dir==)
{
len= n-x-deep;
if(z>len)
{
z-=len; x+=len;
dir=;
}else
{
printf("%lld %lld",x+z,y);
return ;
}
}else
if(dir==)
{
len=m-y-deep;
if(z>len)
{
z-=len; y+=len;
dir=;
}else
{
printf("%lld %lld",x,y+z);
return ;
}
}else
if(dir==)
{
len=x-deep;
if(z>len)
{
z-=len;x=deep;
dir=;
}else
{
printf("%lld %lld",x-z,y);
return ;
}
}else
if(dir==)
{
deep++;
len=y-deep;
if(z>len)
{
z-=len;y=deep;
dir=;
}else
{
printf("%lld %lld",x,y-z);
return ;
} } }
return ;
}
P4874 回形遍历 —模拟的更多相关文章
- Openjudge-NOI题库-二维数组回形遍历
题目描述 Description 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历整个数组.如图所示: 输入输出格式 Input/ou ...
- 2017.9.23 NOIP2017 金秋杯系列模拟赛 day1 T1
回形遍历( calc .cpp/c/pas) 时间限制:1s内存 限制: 256MB [问题 描 述] 给出一个 n*m 的棋盘,按如下方式遍历,请问(x,y)往后 z 步走到的是哪个格子. [输入] ...
- FZU 1893 内存管理 模拟
比赛的时候队友要做这道题…… 他没做出来自己也被误导了…… 也算是个教训 自己还是要有自己的思路…… 又是模拟题…… 网上都是用vector做的 我最近才会stl 怎么会用那么高大上的的东西…… 强力 ...
- express+mockjs实现模拟后台数据发送
前言: 大多数时候,前端会和后端同时进行开发,即在我们开发完页面的时候,很可能还不能立马进入联调阶段,这个时候,为了保证我们接口的有效性和代码的功能完整,我们可能需要模拟数据. 模拟数据方法 1.通过 ...
- JavaScipt 事件体系
事件机制 jQuery对事件的绑定分别有几个API .bind()/.live()/.delegate()/.on() 不管是用什么方式绑定,归根到底还是用addEventListener/attac ...
- noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T21——T25
T21 二维数组右上左下遍历 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组. 输入 输入的第一行上有两个整数,依次为 ...
- Regional Changchun Online--Alisha’s Party
Alisha's Party Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- Delphi下实现全屏快速找图找色
前言 最近有好几个朋友都在问我找图找色的问题,奇怪?于是乎写了一个专门用于找图找色的单元文件“BitmapData.pas”.在这个单元文件中我实现了从文件中导入位图.屏幕截图.鼠标指针截图.在图片上 ...
- Java实现非递归删除目录
最近在学C#的文件系统, 发现C#的文件系统貌似比java的东西少一点, 居然连删除目录都直接做好封装了, 想到学java的时候还要自己写递归删除, 好像没写过非递归的,就在网上查了下, 关于非递归删 ...
随机推荐
- ACM学习历程—HDU2068 RPG的错排(组合数学)
Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁.RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿 ...
- Python之模块介绍
模块介绍 模块,是用一些代码实现的某个功能的代码集合. 类似与函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用,提供了代码的重用性和代码间的耦合.对于一个复杂的功能,可能需要多个函 ...
- 贪心+等价转化 HDU 1489
等价转换,题意简单来讲如下:在一条直线均匀分布N个村庄,每个村庄要么买酒,要么卖酒,且村庄的买酒和卖酒供需平衡,总和为0,把k个单位的酒从一个村庄运到相邻的村庄需要k个单位的劳动力,输出最小的劳动力. ...
- UI 界面:技术决定一切
转自:http://www.cnblogs.com/NEOCSL/archive/2012/12/10/2811153.html 在我看来,肖恩帕克不仅仅是一位技术天才和远见卓识的移动互联网领域先锋. ...
- Linq to Object 延迟标准查询操作符
1.Where 操作符用于限定输入集合中的元素,将符合条件的元素组织声称一个序列结果.2.Select 操作符用于根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中 ...
- Python模拟登录代码
注:访问http://127.0.0.1:8080/user/6,总是会要求必须有登录权限,也就是,若未登录,访问该页面,会跳转到登陆页面. 全自动模拟登录 半自动模拟登录:
- Eclipse下对maven进行配置
前提:安装好maven插件http://www.cnblogs.com/lchzls/p/6281697.html 1.需要修改配置:首先选择Window->Preferences,弹出如下对话 ...
- 1. docker安装
前提 系统:我这边都使用虚拟机安装的CentOS7,具体安装可以参考:Windows安装Linux虚拟机(CentOS7) yum:推荐更新下yum:yum update;我们这边CentOS7自带d ...
- 基于pthread实现读写锁
读写锁可用于在多线程访问map等数据结构时使用 #include <pthread.h> class ReadWriteLock { public: ReadWriteLock() { p ...
- js上传文件到后台时序列化数据
let fd = new FormData() // 定义传递的序列化对象,for (let i = 0; i < addArr.length; i++) { // addArr是选中文件的输入 ...