Codeforces 777C:Alyona and Spreadsheet(预处理)
During the lesson small girl Alyona works with one famous spreadsheet computer program and learns how to edit tables.
Now she has a table filled with integers. The table consists of n rows and m columns. By \(a_{i, j}\) we will denote the integer located at the \(i\)-th row and the \(j\)-th column. We say that the table is sorted in non-decreasing order in the column \(j\) if \(a_{i, j} ≤ a_{i + 1, j}\) for all i from \(1\) to \(n - 1\).
Teacher gave Alyona \(k\) tasks. For each of the tasks two integers \(l\) and \(r\) are given and Alyona has to answer the following question: if one keeps the rows from \(l\) to \(r\) inclusive and deletes all others, will the table be sorted in non-decreasing order in at least one column? Formally, does there exist such \(j\) that \(a_{i, j} ≤ a_{i + 1, j}\) for all \(i\) from \(l\) to \(r - 1\) inclusive.
Alyona is too small to deal with this task and asks you to help!
Input
The first line of the input contains two positive integers \(n\) and \(m (1 ≤ n·m ≤ 100 000)\) — the number of rows and the number of columns in the table respectively. Note that your are given a constraint that bound the product of these two integers, i.e. the number of elements in the table.
Each of the following \(n\) lines contains \(m\) integers. The \(j\)-th integers in the \(i\) of these lines stands for \(a_{i, j} (1 ≤ a_{i, j} ≤ 10^9)\).
The next line of the input contains an integer \(k (1 ≤ k ≤ 100 000)\) — the number of task that teacher gave to Alyona.
The \(i\)-th of the next \(k\) lines contains two integers \(l_i\) and \(r_i\) \((1 ≤ l_i ≤ r_i ≤ n)\).
Output
Print "Yes" to the \(i\)-th line of the output if the table consisting of rows from \(l_i\) to \(r_i\) inclusive is sorted in non-decreasing order in at least one column. Otherwise, print "No".
Example
Input
5 4
1 2 3 5
3 1 3 2
4 5 2 3
5 5 3 2
4 4 3 4
6
1 1
2 5
4 5
3 5
1 3
1 5
Output
Yes
No
Yes
Yes
Yes
No
Note
In the sample, the whole table is not sorted in any column. However, rows \(1–3\) are sorted in column \(1\), while rows \(4–5\) are sorted in column \(3\).
题意
给出一个\(n\times m\)的矩阵,判断第\(l\)行~第\(r\)行中是否有一列是非递减的
思路
如果这题用暴力来写的话,时间复杂度为:\(O(n\times \sum^{k}_{i=1}(r_i-l_i))\),有题目可知,这个时间是肯定过不去的
所以我们可以预处理:预处理从每一行往上最高到哪一行,可以保持有至少一个非递增的序列
先处理每一列的每一个位置向上的非递增序列可以延伸到哪个位置,然后每一列的对应位置去一个最大值,即可得到该行可以向上延伸的最大位置。
每次输入\(l,r\),只需判断\(r\)行向上的位置是否小于等于\(l\)即可
代码
注意$ (1 ≤ n·m ≤ 100 000)$,可以直接用vector进行存,也可以用一维数组
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define ms(a,b) memset(a,b,sizeof(a))
const int inf=0x3f3f3f3f;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=1e6+10;
const int mod=1e9+7;
const int maxm=1e3+10;
using namespace std;
vector<int>ve[maxn];
// 当前行能往上延伸的最高位置
int can[maxn];
// 当前列能往上的最高位置
int line[maxn];
int main(int argc, char const *argv[])
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
srand((unsigned int)time(NULL));
#endif
ios::sync_with_stdio(false);
cin.tie(0);
int n,m;
cin>>n>>m;
int x;
for(int i=0;i<m;i++)
ve[0].push_back(0);
for(int i=1;i<=n;i++)
for(int j=0;j<m;j++)
cin>>x,ve[i].push_back(x);
for(int i=1;i<=n;i++)
{
can[i]=i;
for(int j=0;j<m;j++)
{
int now_num=ve[i][j];
int up_num=ve[i-1][j];
if(now_num<up_num)
line[j]=i;
can[i]=min(can[i],line[j]);
}
}
int t;
cin>>t;
while(t--)
{
int l,r;
cin>>l>>r;
if(can[r]>l)
cout<<"No\n";
else
cout<<"Yes\n";
}
#ifndef ONLINE_JUDGE
cerr<<"Time elapsed: "<<1.0*clock()/CLOCKS_PER_SEC<<" s."<<endl;
#endif
return 0;
}
Codeforces 777C:Alyona and Spreadsheet(预处理)的更多相关文章
- Codeforces 777C Alyona and Spreadsheet
C. Alyona and Spreadsheet time limit per test:1 second memory limit per test:256 megabytes input:sta ...
- Codeforces 777C Alyona and Spreadsheet(思维)
题目链接 Alyona and Spreadsheet 记a[i][j]为读入的矩阵,c[i][j]为满足a[i][j],a[i - 1][j], a[i - 2][j],......,a[k][j] ...
- Codeforces 777C - Alyona and Spreadsheet - [DP]
题目链接:http://codeforces.com/problemset/problem/777/C 题意: 给定 $n \times m$ 的一个数字表格,给定 $k$ 次查询,要你回答是否存在某 ...
- codeforces 777C.Alyona and Spreadsheet 解题报告
题目链接:http://codeforces.com/problemset/problem/777/C 题目意思:给出一个 n * m 的矩阵,然后问 [l, r] 行之间是否存在至少一列是非递减序列 ...
- Codeforces Round #401 (Div. 2) C Alyona and Spreadsheet —— 打表
题目链接:http://codeforces.com/contest/777/problem/C C. Alyona and Spreadsheet time limit per test 1 sec ...
- C Alyona and Spreadsheet Codeforces Round #401(Div. 2)(思维)
Alyona and Spreadsheet 这就是一道思维的题,谈不上算法什么的,但我当时就是不会,直到别人告诉了我,我才懂了的.唉 为什么总是这么弱呢? [题目链接]Alyona and Spre ...
- codeforces 777C
C.Alyona and Spreadsheet During the lesson small girl Alyona works with one famous spreadsheet compu ...
- Codeforces777C Alyona and Spreadsheet 2017-05-04 17:46 103人阅读 评论(0) 收藏
C. Alyona and Spreadsheet time limit per test 1 second memory limit per test 256 megabytes input sta ...
- Codeforces E. Alyona and a tree(二分树上差分)
题目描述: Alyona and a tree time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
随机推荐
- SpringCloud微服务实战——搭建企业级开发框架(三十一):自定义MybatisPlus代码生成器实现前后端代码自动生成
理想的情况下,代码生成可以节省很多重复且没有技术含量的工作量,并且代码生成可以按照统一的代码规范和格式来生成代码,给日常的代码开发提供很大的帮助.但是,代码生成也有其局限性,当牵涉到复杂的业务逻辑 ...
- 初学js正则表达式之密码强度验证
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 规范——Java后端开发规范
Java后端开发规范 一.技术栈规约 二.命名规范 三.Java代码规范(注释规范.异常与日志.代码逻辑规范) 四.Mybatis与SQL规范 五.结果检查(单元测试及代码扫描) 六.安全规范 一.技 ...
- mybatis-plus分页记坑
mapper接口方法返回IPage,如果不传page会报npe,底层assert page!=null有啥用?
- Linux环境下为普通用户添加sudo权限
系统环境:Centos6.5 1.背景: sudo是Linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部root命令的一个工具.Linux系统下,为了安全,一般来说我们操作都是在普通用户 ...
- 【AWS】【TroubleShooting】EC2实例无法使用SSH远程登陆(EC2 failure for SSH connection)
1. Login AWS web console and check the EC2 instance.
- ZooKeeper 06 - ZooKeeper 的常用命令
目录 1 - 服务端常用命令 2 - 客户端常用命令 3 - 常用四字命令 4 - ZooKeeper 日志的可视化 版权声明 若要部署 ZooKeeper 单机环境,请查看此篇:https://ww ...
- 【antd】form表单默认值设置
问题: 在antd的form表单的api里面有个"initialValues"可以设置默认值.但是表单没有更新 <Form name="test" for ...
- 转:Android preference首选项框架
详解Android首选项框架ListPreference 探索首选项框架 在 深入探讨Android的首选项框架之前,首先构想一个需要使用首选项的场景,然后分析如何实现这一场景.假设你正在编写一个应用 ...
- 【二进制】【WP】MOCTF逆向题解
moctf 逆向第一题:SOEASY 这个是个 64 位的软件,OD 打不开,只能用 IDA64 打开,直接搜字符串(shift+F12)就可以看到 moctf 逆向第二题:跳跳跳 这个题当初给了初学 ...