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的时候还要自己写递归删除, 好像没写过非递归的,就在网上查了下, 关于非递归删 ...
随机推荐
- [转]ECMAScript5 Object的新属性方法
虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...
- 洛谷P3205合唱队——区间DP
题目:https://www.luogu.org/problemnew/show/P3205 枚举点,分类为上一个区间的左端点或右端点,满足条件便+=即可: 注意不要重复(当l=2时). 代码如下: ...
- C++多态的实现条件
#include <iostream> class Person{ public: virtual void say(){ std::cout<<"person&qu ...
- [poj1222]EXTENDED LIGHTS OUT(高斯消元)
题意:每个灯开启会使自身和周围的灯反转,要使全图的灯灭掉,判断灯开的位置. 解题关键:二进制高斯消元模板题. 复杂度:$O({n^3})$ #include<cstdio> #includ ...
- matlab下的caffe接口配置(Windows)
本文基于大部分网上方法 http://blog.csdn.net/d5224/article/details/51916178,外加一点自己的个人实际配置经历,环境变量在配置后尽管显示正确并且重启多次 ...
- hash tree
http://en.wikipedia.org/wiki/Hash_list In computer science, a hash list is typically a list of hashe ...
- 《SpringBoot揭秘 快速构建微服务体系》读后感(二)
最简单的springBoot应用 package com.louis.test; import org.springframework.boot.SpringApplication; import o ...
- JDBC的初步了解及使用
一.概念 1.什么是JDBC? JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由 ...
- 【Java面试题系列】:Java基础知识常见面试题汇总 第一篇
文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后,一般都会让先做一份笔试题,然后公司会根据笔试题的回答结果,确定 ...
- Git入门 时光穿梭鸡 版本回退 工作区 暂存区
分布式集中式 CVS及SVN都是集中式的版本控制系统 , 而Git是分布式版本控制系统 集中式版本控制系统,版本库是集中存放在中央服务器的, 而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得 ...