[普及]NOIP 2014 螺旋矩阵
来源:互联网 发布:纳贝调试软件 编辑:程序博客网 时间:2024/06/06 01:01
题目描述
一个n行n列的螺旋矩阵可由如下方法生成:
从矩阵的左上角(第1行第1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入1, 2, 3, … , n,便构成了一个螺旋矩阵。2
下图是一个n = 4 时的螺旋矩阵。
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。
(本题目为2014NOIP普及T3)
输入输出格式
输入格式:
输入共一行,包含三个整数 n,i,j,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。
输出格式:
输出共一行,包含一个整数,表示相应矩阵中第i行第j列的数。
输入输出样例
输入样例#1:
4 2 3
输出样例#1:
14
说明
【数据说明】
对于50%的数据,1 ≤ n ≤ 100;
对于100%的数据,1 ≤ n ≤ 30,000,1 ≤ i ≤ n,1 ≤ j ≤ n。
【分析】
这题比较2…惊天大模拟
【代码】
//[普及]NOIP 2014 螺旋矩阵 #include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cmath>#include<vector>#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std;int n,x,y,ans;inline void print(){ printf("%d\n",ans); exit(0);}int main(){ int i,j,c,t; scanf("%d%d%d",&n,&x,&y); t=n; c=min(x,y); c=min(c,min(n+1-x,n+1-y)); fo(i,1,c-1) { ans+=4*(t-1); t-=2; } int h=c,l=c,tot=0; fo(tot,1,t) { ans++; if(h==x && l==y) print(); l++; }l--;h++; fo(tot,1,t-1) { ans++; if(h==x && l==y) print(); h++; }h--;l--; fo(tot,1,t-1) { ans++; if(h==x && l==y) print(); l--; }l++;h--; fo(tot,1,t-2) { ans++; if(h==x && l==y) print(); h--; } return 0;}
1 0
- [普及]NOIP 2014 螺旋矩阵
- NOIP 2014 普及组 T3 螺旋矩阵
- NOIP 2014 螺旋矩阵
- [普及] NOIP 2014 子矩阵
- NOIP 2014 普及组 T4 子矩阵
- 2014NOIP普及组 子矩阵
- NOIP2014普及组--螺旋矩阵(模拟)
- NOIP2014(普及组)T3 螺旋矩阵
- 2014NOIP普级组第三题--螺旋矩阵(参考洛谷题解)
- NOIP 普及组 T4 子矩阵(--洛谷P2258)
- NOIP 2014 子矩阵
- 【NOIP】普及组 2014 问题求解
- 螺旋矩阵
- 螺旋矩阵
- 螺旋矩阵
- 螺旋矩阵
- 螺旋矩阵
- 螺旋矩阵!
- NodeJs学习笔记 03 -- FileSystem
- HDU 4990 Reading comprehension(矩阵快速幂)
- 第九周OJ(2)ASCII码排序
- Android 微信分享开发问题汇总
- JAR包的JDK版本查看与设置
- [普及]NOIP 2014 螺旋矩阵
- 那些年,追过的开源软件和技术
- AES-NI
- POJ 3678 2-sat模板
- 通过连接池操作 理解装饰者设计模式 自我理解
- Android Studio导入github下载的工程
- 浙大pta: Build A Binary Search Tree
- NYOJ - 20 - 吝啬的国度(无根树转有根树)
- Shiro源码分析 -- Subject.isPermitted(permission)已登陆用户判断是否具有某权限