Codeforces 954C Matrix Walk (思维)
题目链接:Matrix Walk
题意:设有一个N×M的矩阵,矩阵每个格子都有从1~n×m的一个特定的数,具体数的排列如图所示。假设一个人每次只能在这个矩阵上的四个方向移动一格(上下左右),给出一条移动的轨迹上的数字,求出满足这个人移动轨迹的一格矩阵的N和M。

题解:首先可以确定的是左右移动的话,相邻格子之间数字相差的绝对值一定是1,而向上或向下移动的数字只差的绝对值一定相等。按照这个思路,判断给出的轨迹相邻格子之间的差值,看是否差值的绝对值只有1和另外一个数字就可以基本解决问题了。但是这里还要进行特判,首先是轨迹中差值只有1的情况,就直接输出YES并将轨迹中的最大值取出,输出1,max。还要判定的是另一种情况,就是假设现在向上向下移动的数值确定了,假设为x,就有M = x。要注意的是差值为1的情况中,行尾的格子是不能移动到行头的(行头的格子同理不能移动到行尾)。所以遍历一下,看一下有没有这种情况。
#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 2e5+;
const int INF = 1e9+;
int N,M,S;
int vec[MAX_N];
int main(){
while(cin>>N){
int maxn = -;
for(int i=;i<N;i++){
scanf("%d",&vec[i]);
maxn = max(maxn,vec[i]);
}
int pos = -;
bool flag = true;
for(int i=;i<N;i++){
int t = max(vec[i] - vec[i-],vec[i-] - vec[i]);
if(t != ){
if(t == ){
flag = false;
break;
}
if(pos == -) pos = t;
else if(pos != t){
flag = false;
break;
}
}
} if(!flag){
cout<<"NO"<<endl;
}else{
if(pos == -){
cout<<"YES"<<endl;
cout<<<<" "<<maxn<<endl;
}
else{
int pre = maxn / pos;
if(maxn % pos) pre++; bool f = true;
for(int i=;i<N-;i++){
if(vec[i]%pos == && vec[i] - vec[i+] == -){
f = false; //cout<<"??"<<endl;
break;
}
else if(vec[i] %pos == && vec[i]-vec[i+] == ) {
//cout<<vec[i]<<"...."<<vec[i+1]<<endl;
f = false; //cout<<"?????????"<<endl;
break;
}
}
if(!f){
cout<<"NO"<<endl;
}else {
cout<<"YES"<<endl;
cout<<pre<<" "<<pos<<endl;
}
}
} }
return ;
}
Codeforces 954C Matrix Walk (思维)的更多相关文章
- Educational Codeforces Round 40 C. Matrix Walk( 思维)
Educational Codeforces Round 40 (Rated for Div. 2) C. Matrix Walk time limit per test 1 second memor ...
- Codeforeces 954C Matrix Walk
题目大意 考虑一个 $x\times y$ 的矩阵 $A_{x\times y}$ ,$A_{i,j} = (i-1)x+y$ . 从矩阵中的某个位置出发,每次可向上下左右移动一步,每到一个位置,记录 ...
- Matrix Walk CodeForces - 954C
题意: 就是给出一连串的数字 这些数字是从第一个数字依次走过的 emm..就是这样.. 然后让你判断这个矩阵是否存在 如果存在输出行和列的数量 其中行..开到最大就好了...主要是判断列 在输入 ...
- Codeforces 1332 D. Walk on Matrix(构造矩阵)
怎么构造呢? \(首先我们不可能去构造一个2000*2000的矩阵,那太复杂了\) \(也许我们可以看看2*2的矩阵??\) \[\left[ \begin{matrix} x&y\\ z&a ...
- Codeforces 364A - Matrix
原题地址:http://codeforces.com/problemset/problem/364/A 题目大意: 给定一个数字a(0 ≤ a ≤ 109)和一个数列s(每个数都是一位,长度不超过40 ...
- Educational Codeforces Round 60 C 思维 + 二分
https://codeforces.com/contest/1117/problem/C 题意 在一个二维坐标轴上给你一个起点一个终点(x,y<=1e9),然后给你一串字符串代表每一秒的风向, ...
- Educational Codeforces Round 61 F 思维 + 区间dp
https://codeforces.com/contest/1132/problem/F 思维 + 区间dp 题意 给一个长度为n的字符串(<=500),每次选择消去字符,连续相同的字符可以同 ...
- [Codeforces 1178D]Prime Graph (思维+数学)
Codeforces 1178D (思维+数学) 题面 给出正整数n(不一定是质数),构造一个边数为质数的无向连通图(无自环重边),且图的每个节点的度数为质数 分析 我们先构造一个环,每个点的度数都是 ...
- Sorted Adjacent Differences(CodeForces - 1339B)【思维+贪心】
B - Sorted Adjacent Differences(CodeForces - 1339B) 题目链接 算法 思维+贪心 时间复杂度O(nlogn) 1.这道题的题意主要就是让你对一个数组进 ...
随机推荐
- Python Django框架笔记(三):django工作方式简单说明和创建用户界面
(一) 说明 简单说明下django的工作方式,并举2个例子. (二) Django工作方式 假定我们有下面这些文件 ,这里在前2篇的基础上增加了 templates目录(存放html文件) 和s ...
- 团队项目第二阶段个人进展——Day1
一.昨天工作总结 冲刺第一天,查看了第一阶段的代码 二.遇到的问题 写个的代码发现看不懂了 三.今日工作规划 重新设计页面布局
- Python字符串和编码
在最早的时候只有127个字符被编码到计算机里,也就是大小写英文字母.数字和一些符号,这个编码被成为ASCII编码. 但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突 ...
- 转:stack
数据结构C#版笔记--堆栈(Stack) 堆栈(Stack)最明显的特征就是“先进后出”,本质上讲堆栈也是一种线性结构,符合线性结构的基本特点:即每个节点有且只有一个前驱节点和一个后续节点. 相对 ...
- Window10 Linux子系统挂载磁盘
默认情况下, Linux子系统将当前winodws磁盘的盘全部挂载到/mnt/<disk_label>, 但一些新增的盘就需要手动做下了.. 官方参考文档 挂载磁盘 -- DrvFs 挂载 ...
- [转]搭建Keepalived+Nginx+Tomcat高可用负载均衡架构
[原文]https://www.toutiao.com/i6591714650205716996/ 一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最 ...
- 利用Maven插件将依赖包、jar/war包及配置文件输出到指定目录
写在前面 最近遇到一个朋友遇到一个项目需要将maven的依赖包和配置文件分开打包然后用脚本执行程序.这样的好处在于可以随时修改配置文件内容及查看jar包.如果将所有打成一个jar包就会有个问题(例 ...
- jQuery插件实例六:jQuery 前端分页
先来看看效果: 对于前端分页,关键是思路,和分页算法.本想多说两句,可又觉得没什么可说的,看代码吧: 如何使用? $("#pging").zPagination({ 'navEve ...
- November 11th, 2017 Week 45th Saturday
Happiness is a direction, not a place. 快乐是一个方向,不是一个目的. Do you remember those moments in your life wh ...
- PyQt5--GridLayoutMultiLine
# -*- coding:utf-8 -*- ''' Created on Sep 13, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...