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 洛谷 ...
随机推荐
- Java开发23种设计模式之禅
六大原则 23种设计模式: 总体来说设计模式分为三大类: *创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. *结构型模式,共七种:适配器模式.装饰器模式.代理模式.外 ...
- 软件工程启程篇章:结对编程和进阶四则运算(197 & 199)
0x01 :序言:无关的事 I wrote a sign called "Dead End" in front of myself, but love crossed it wit ...
- 《linux内核设计与实现》第四章
调度程序负责决定哪个进程投入运行,何时运行以及运行多长时间.只有通过调度程序合理调度,系统资源才能最大限度发挥作用,多进程才会有并发执行的效果. 最大限度地利用处理器时间的原则是,只要有可以执行的进程 ...
- 《Linux及安全》课程实践二
编译生成新内核 一.实践原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容都集成在一起,效率很高,但可扩展 ...
- 《Linux内核分析与实现》 第五周 读书笔记
第3章 进程管理 20135307张嘉琪 3.1 进程 进程就是处于执行期的程序(目标码存放在某种存储介质上),但进程并不仅仅局限于一段可执行程序代码.通常进程还要包含其他资源,像打开的文件,挂起的信 ...
- LINUX内核分析第七周学习总结
LINUX内核分析第七周学习总结 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.c ...
- RBAC权限管理及使用原生PHP实现
关于RBAC的原理讲解在网上可以找到很多,推荐:编程浪子的RBAC讲解,本篇博客就不再累述RBAC的原理到底是什么样的. 传统的权限控制有ACL和RBAC方式,ACL的耦合度很高,扩展性不佳,RBAC ...
- 自己写的browse.bat与perl写的url_handler.pl的比较
以前自己也写过Windows下自动打开多个浏览器测试某个URI,提高浏览器兼容性测试效率. 但是写的browse.bat文件还是最基础简陋的 @echo off if '%1'=='-c' ( sta ...
- 深度学习中 --- 解决过拟合问题(dropout, batchnormalization)
过拟合,在Tom M.Mitchell的<Machine Learning>中是如何定义的:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比 ...
- zip 与 unzip的简单使用
先看help Copyright (c) - Info-ZIP - Type 'zip "-L"' for software license. Zip ). Usage: zip ...