NOIP 普及组 2014 螺旋矩阵
https://www.cnblogs.com/violet-acmer/p/9898636.html
题解:
这道题挺有意思的,有点考思维吧。
大体思路是用四个pair<int ,int >变量表示四个角的坐标。
(1)每次判断所求点( i , j )是否在当前四个点所围城的正方框上。
(2)如果在,遍历一遍这个框的所有点,输出结果。
(3)如果不在,四个角往里缩,来到更小的正方框上,重复 (1) 过程
具体细节看代码。
AC代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define P pair<int ,int > int n,x,y;
P p[];
bool isSat(){//判断点(x,y)是否在当前四个点所表示的正方框上
//满足其一即可判断在,具体为啥,画个图就明白了
if(x == p[].first || x == p[].first || y == p[].second || y == p[].second)
return true;
return false;
}
bool isPos(P _p){//判断当前来到的点是否为所求点(x,y)
return x == _p.first && y == _p.second;
}
int main()
{
scanf("%d%d%d",&n,&x,&y);
//存储四个角的坐标
p[]=P(,),p[]=P(,n);
p[]=P(n,),p[]=P(n,n);
while(!isSat())//如果不在当前正方框上,正方框向内缩
{
p[].first++,p[].second++;
p[].first++,p[].second--;
p[].first--,p[].second++;
p[].first--,p[].second--;
}
ll res=;
for(int i=;i <= p[].first;i++)
res += 1ll**(n-*i+);
while(p[].second < p[].second && !isPos(p[]))//判断就(x,y)是否在正方框的上边
p[].second++,res++;
if(isPos(p[]))
{
printf("%lld\n",res);
return ;
} while(p[].first < p[].first && !isPos(p[]))//判断就(x,y)是否在正方框的右边
p[].first++,res++;
if(isPos(p[]))
{
printf("%lld\n",res);
return ;
} while(p[].second > p[].second && !isPos(p[]))//判断就(x,y)是否在正方框的下边
p[].second--,res++;
if(isPos(p[]))
{
printf("%lld\n",res);
return ;
} while(!isPos(p[]))//判断就(x,y)是否在正方框的左边
p[].first--,res++;
printf("%lld\n",res);
}
NOIP 普及组 2014 螺旋矩阵的更多相关文章
- 【NOIP2014 普及组】螺旋矩阵
[NOIP2014 普及组]螺旋矩阵 一.题目 [NOIP2014 普及组]螺旋矩阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 18 解决: 0 [提交][状态][讨论版] 题目描 ...
- NOIP 2014 普及组 T3 螺旋矩阵
[题意] 已知:n,r,c(n<=30000) 条件:给定n行n列的螺旋矩阵(从矩阵的左上角(1,1)出发,初始时向右移动:如果前方是未曾经过的格子, 则继续前进,否则右转:重复上述操作直至经过 ...
- NOIP 普及组 2014 比例简化
传送门 https://www.cnblogs.com/violet-acmer/p/9898636.html 题解: 一开始想多了,以为得保证两者之间的相对比率,至少不能改变的太离谱啊. but,直 ...
- NOIP 普及组 2014 珠心算测验
传送门 https://www.cnblogs.com/violet-acmer/p/9898636.html 题解: 枚举两两间出所有的可能加和,然后遍历一遍这 n 个数,找出满足条件的总个数. 这 ...
- 2016.9.10初中部上午NOIP普及组比赛总结
2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...
- 2016.10.5初中部上午NOIP普及组比赛总结
2016.10.5初中部上午NOIP普及组比赛总结 这次的题目出得挺有质量的.但我觉得我更应该努力了. 进度: 比赛:0+20+0+0=20 改题:AC+AC+AC+AC=AK kk的作业 这题我错得 ...
- 2321. 【NOIP普及组T1】方程
2321. [NOIP普及组T1]方程 时间限制: 1000 ms 空间限制: 262144 KB 题目描述
- [NOIP普及组2011]装箱问题
目录 链接 博客链接 题目链接 题目内容 题目描述 格式 输入 输出 样例 输入 输出 前缀知识 题解 题目名称:装箱问题 来源:2011年NOIP普及组 链接 博客链接 CSDN 洛谷博客 题目链接 ...
- [NOIP普及组2001]最大公约数和最小公倍数问题
目录 链接 博客链接 题目链接 题目内容 题目描述 格式 输入 输出 数据 样例 输入 输出 说明 题目名称:最大公约数和最小公倍数问题 来源:2001年NOIP普及组 链接 博客链接 CSDN 洛谷 ...
随机推荐
- “Linux内核分析”实验报告
Linux内核分析:实验一 潘俊洋 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 ...
- 小学生四则运算App实验成果
组名:会飞的小鸟 组员:徐侃 陈志棚 罗伟业 刘芮熔 成员分工: ①刘芮熔:设置安卓包.界面的代码,界面的排序. ②陈志棚:加减乘除的判断异常处理,例如除数不能为零的异常处理等问题. ③徐侃 ...
- 第三个sprint冲刺第二阶段
内测版:
- centos7改中文
centos7的与centos6有少许不同: 1.安装中文包: root@iZj6cbstl2n6r280a27eppZ tmp]# yum groupinstall "fonts" ...
- 关于supervisor 的使用以及配置
首先我个人认为,用python实现的supervisor使用了守护进程这个概念去实现一个包裹进程的概念. 他可以帮助你的进程完成失效重启,日志记录,确保在线,关机自启动等一系列的功能. 当使用supe ...
- 关于python 自带csv库的使用心得 附带操作实例以及excel下乱码的解决
因为上次帮我们产品处理过一个文件,他想生成能excel处理操作的.但是上次由于时间非常紧张,所以并没有处理好. 正好无聊就来好好研究一下 ,找算法要了几个 csv文件.来好好玩一玩. 全篇使用了pyt ...
- Spring学习14-源码下载地址
今天想下载一下Spring的源代码,登录到Spring官网,傻眼了,根本找不到下载的地方!费了九牛二虎之力在网上找到了一个下载地址,记下来,免得下次再次傻找. http://s3.amazonaws. ...
- ava 8中的新功能特性
正如我之前所写的,Java 8中的新功能特性改变了游戏规则.对Java开发者来说这是一个全新的世界,并且是时候去适应它了. 在这篇文章里,我们将会去了解传统循环的一些替代方案.在Java 8的新功能特 ...
- java.util.concuttent Callable Future详解
在传统的多线程实现方式中(继承Thread和实现Runnable)无法直接获取线程执行的返回结果,如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦. 从 ...
- 无返回值的异步方法能否不用await
1.无返回值的异步方法能否不用await? 如果你不需要等待加一的操作完成,那就可以直接执行后面的操作.那要看你的需求了,如果你后面的操作必须在加一的操作后执行,那就要await了 2.请问C#中如何 ...