P2239螺旋矩阵


看到这数据范围,显然咱不能暴力直接模拟(二维数组开不下,而且会T掉)
我们目前有两种选择:
1.优化暴力 走这边(jyy tql%%%)
2.数学做法
我们看一下题目中的那个矩阵

我们能不能找到些什么规律
由肉眼观察得
(1,1)=1
(n,n)=2*n-1
(1,n)=3*n-2
(2,1)=4*n-4
好像似乎有那么点规律
所以我们不妨把当前的矩阵分成4部分
i=1,ans=j
j=n,ans=2*n-1-(n-i)=n-1+i(这里可以理解为从(n,n)向上的(n-i)行的数)
i=n,ans=3*n+(j-1)=3*n-1-j(由(1,n)向右找(j-1)列)
j=1,ans=4*n-4-(i-2)=4*n-2+i(由(2,1)向下找(i-2)行)
如果给的i,j不在这些特殊位置呢?
那我们就把当前的矩阵扒掉最外边的皮,此时n-2,i-1, j-1,再看当前的i,j是否在新的矩阵的特殊位置,不在就继续扒,最后肯定会找到的。因为我们扒掉了矩阵的最外边,所以每扒一层,答案要加上4*(n-1)(n为当前的n)
这样我们就可以递归求解了
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,a,b;
int solve(int n,int i,int j)
{
if(i==)return j;
if(j==n)return n-+i;
if(i==n)return *n--j;
if(j==)return *(n-)-(i-);//懒得化简了qwq
return solve(n-,i-,j-)+(*n-);
}
int main()
{
scanf("%d%d%d",&n,&a,&b);
printf("%d",solve(n,a,b));
}
P2239螺旋矩阵的更多相关文章
- 洛谷——P2239 螺旋矩阵
P2239 螺旋矩阵 题目描述 一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动:如果前方是未曾经过的格子,则继续前进,否则右转:重复上述操作直至经过矩阵中 ...
- P2239 螺旋矩阵
P2239 螺旋矩阵 题解 这题看上去是个暴力,但是你看数据范围啊,暴力会炸 实际上这是一道数学题QWQ 先看看螺旋矩阵是个什么亚子吧 好吧,找找规律 1 2 ... ... ... ... ... ...
- 洛谷P2239 螺旋矩阵
传送门 分析:将整个矩阵看成 "回" 形状的分层结构,然后进行去层处理,使得要求得 \((i,j)\) 处于最外层,然后再分情况讨论.最外面的一层共有数: $ 4 * n - 4 ...
- 【洛谷P2239 螺旋矩阵】
题目链接 直接看题 一看就很数学 我们不妨来画图 画出几个矩阵,找他们的关系 然后发现 当i==1时,对应的值就是j所对应的值: 当i==n时,所对应的值就是3*n-2-j+1: 当j==1时,所对应 ...
- 洛谷 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 ...
随机推荐
- Log4net使用(二)
转:http://www.cnblogs.com/basilwang/archive/2006/06/09/421868.html Log4net同时按照日期和大小生成RollingFile和访问Sy ...
- Vue—非父子组件间的传值(Bus/发布订阅模式/观察者模式/总线)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Centos 7下Hadoop分布式集群搭建
一.关闭防火墙(直接用root用户) #关闭防火墙 sudo systemctl stop firewalld.service #关闭开机启动 sudo systemctl disable firew ...
- nested exception is java.lang.NoClassDefFoundError: org/hibernate/validator/resourceloading/ResourceBundleLocator
原来的hibernate-validator-5.3.0.Final.jar里没有这个接口,换成 hibernate-validator-4.1.0.Final.jar 就好了
- Mybatis中SqlSessionFactory和SqlSession学习和原理
源码git地址:https://github.com/mybatis/mybatis-3 目标结构: mybatis是数据持久化解决方案将用户从JDBC访问中解放出来,用户只需要定义需要操作的SQL语 ...
- Excel VBA获取当文件下级子目录或目录中文件
'====================================================================== '功能: 查找指定文件夹含子文件夹内所有文件名或文件夹名 ...
- 05-CSS浮动、定位、页面布局
# 浮动 ### 文档流文档流,是指盒子按照html标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置. # ...
- jquery chosen插件使用及select常用方法
1.chosen插件使用 chosen插件依赖于jQuery库或prototype,使用之前要先引入jQuery或prototype. 引入jquery插件和chosen插件,对需要美化的下拉框执行c ...
- WPF的DataTrigger使用
首先创建一个空的项目 然后看看前台写的代码,如下图所示 <Grid> <StackPanel HorizontalAlignment="Center" Verti ...
- Docker镜像+nginx 部署 vue 项目
一.打包vue项目 在开发完的vue项目输入如下命名,打包生成dist文件夹 yarn build / npm run build 此时根目录会多出一个文件夹:dist文件夹,里面就是我们要发布的东西 ...