P2239 螺旋矩阵
P2239 螺旋矩阵
题解
这题看上去是个暴力,但是你看数据范围啊,暴力会炸
实际上这是一道数学题QWQ
先看看螺旋矩阵是个什么亚子吧

好吧,找找规律
| 1 | 2 | ... | ... | ... | ... | ... | n |
| 4(n-1) | 4(n-1)+1 | 4(n-1)+n | n+1 | ||||
| ... | ... | ||||||
| ... | |||||||
| ... | |||||||
| ... | ... | ||||||
| ... | 4(n-1)+(3n-2) | 4(n-1)+(2n-1) | ... | ||||
| 3n-2 | ... | ... | 2n-1 |
这个矩阵可以划分成一圈一圈的亚子
所以就可以像剥洋葱一样一层一层的处理
如果这个位置在边界(也就是在圈上),找规律直接求解
如果在内部的话,我们就剥去一层,寻找下一层,反正总会到头的啊
注意一下:
剥去一层,n的规模就 -2 ,下一层统一比上一层小 4(n-1)
代码
#include<bits/stdc++.h> using namespace std; int n,x,y; int dfs(int n,int i,int j)
{
if(i==) return j;
if(j==) return *n--i;
if(j==n) return n+i-;
if(i==n) return *n--j;
else return dfs(n-,i-,j-)+*(n-);
} int main()
{
scanf("%d%d%d",&n,&x,&y);
int ans;
ans=dfs(n,x,y);
printf("%d",ans);
return ;
}
P2239 螺旋矩阵的更多相关文章
- 洛谷——P2239 螺旋矩阵
P2239 螺旋矩阵 题目描述 一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动:如果前方是未曾经过的格子,则继续前进,否则右转:重复上述操作直至经过矩阵中 ...
- 洛谷P2239 螺旋矩阵
传送门 分析:将整个矩阵看成 "回" 形状的分层结构,然后进行去层处理,使得要求得 \((i,j)\) 处于最外层,然后再分情况讨论.最外面的一层共有数: $ 4 * n - 4 ...
- 【洛谷P2239 螺旋矩阵】
题目链接 直接看题 一看就很数学 我们不妨来画图 画出几个矩阵,找他们的关系 然后发现 当i==1时,对应的值就是j所对应的值: 当i==n时,所对应的值就是3*n-2-j+1: 当j==1时,所对应 ...
- P2239螺旋矩阵
传送 看到这数据范围,显然咱不能暴力直接模拟(二维数组开不下,而且会T掉) 我们目前有两种选择: 1.优化暴力 走这边(jyy tql%%%) 2.数学做法 我们看一下题目中的那个矩阵 我们能不能找 ...
- 洛谷 P2239 螺旋矩阵(模拟 && 数学)
嗯... 题目链接:https://www.luogu.org/problem/P2239 这道题首先不能暴力建图,没有简单方法,只有进行进行找规律. AC代码: #include<cstdio ...
- 模拟【p2239】 螺旋矩阵
顾z 你没有发现两个字里的blog都不一样嘛 qwq 题目描述--->p2239 螺旋矩阵 看到题,很明显,如果直接模拟的话,复杂度为\(O(n^2)\)过不去.(这个复杂度应该不正确,我不会分 ...
- PAT 1050. 螺旋矩阵(25)
本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...
- leetcode-Spiral Matrix II 螺旋矩阵2之python大法好,四行就搞定,你敢信?
Spiral Matrix II 螺旋矩阵 Given an integer n, generate a square matrix filled with elements from 1 to n2 ...
- Java-基础编程(螺旋矩阵&乘法表)
package cn.rick.study; import java.io.BufferedReader;import java.io.InputStreamReader;import java.ut ...
随机推荐
- vue实现登录路由拦截
第一步 在router.js里面 把需要判断是否登录的路由添加meta对象属性 在meta对象里面自定义一个属性值 第二步 : 在router.js里面 与const router = new Rou ...
- MySQL--高性能MySQL笔记一
链接管理与安全性: 每个客户端连接都在服务器进程中拥有一个线程. MySQL5.5以及更新的版本提供了一个API,支持线程池插件,可以使用池中少量的线程服务大量的链接. 认证基于用户名.密码和原始主机 ...
- Java 获取日期间的日期 & 根据日期获取星期
场景:根据起止日期获取中间的日期: 根据日期获取当前日期的星期 根据日期日期获取日期 /** * 获取日期间日期 * @param start * @param end * @return */ pr ...
- jquery 知识整理
大纲一.jQuery简介 二.jQuery 和Dom关系及jQuery版本 1.jQuery版本 2.jQuery和Dom转换 三.jQuery 选择器 1.1.基本 1.2.层级 2.基本筛选器 3 ...
- deep_learning_Function_numpy_newaxis参数
np.newaxis的作用就是在这一位置增加一个一维,这一位置指的是np.newaxis所在的位置,比较抽象,需要配合例子理解. x1 = np.array([1, 2, 3, 4, 5]) # th ...
- Ubuntu中出现“Could not get lock /var/lib/dpkg/lock”的解决方法
在运行Ubuntu安装软件,使用命令sudo apt-get install时,有时会出现以下的错误: E: Could not get lock /var/lib/dpkg/lock - open ...
- 排序——插入排序(C语言)
void insertSort(int* a,int T){ int tmp,p; ;i<T;i++){ tmp=a[i]; p=i-; &&tmp<a[p]){ a[p+ ...
- Axure 日期函数详解
时间函数详解 Now 根据计算机系统设定的日期和时间返回当前的日期和时间值.如:设置元件文本的值为:[[Now]]:输出:Mon Jan 08 2018 10:42:55 GMT+0800 ( ...
- Spring 静态代理和动态代理
现在我们来模拟一下,某位学生去考试. 假设他(小明)正常的考试. 运行结果: 结果: 突然某一天,他睡过头了,来不急去考试,所有他打算叫另一个人(Cheater)去代替他考试. 运行结果 ...
- 面向对象之封装 及@property装饰器使用
目录 封装 1.封装的定义 2.封装的目的: 3.封装的三种方式 4.封装的优点 5.访问限制(封装) @property 装饰器 属性property底层实现 封装 1.封装的定义 将复杂的丑陋的, ...