Huge Matrix 扫描
来源:互联网 发布:姚明nba前几场比赛数据 编辑:程序博客网 时间:2024/06/05 16:03
题目大意
一个n*m的矩阵, 往上面填数字, 每行给出三个数字l, r, a, 代表这行中[l, r]区间中填数字a, 剩下的位置都是0
1<=n,m<=1e5
1<=k<=10
1<=a<=k
求每一列中不同数字的个数最多是多少
思路
这题tags 是Sweep Line (Iteration), 仔细想想还真像扫描线…
我们记录每一列每个数字出现的次数
把每一行分成三个区间, [1,l), [l, r+1), [r+1, m); 这三个区间的数字分别是0, a, 0
所以对于区间[l, r), 数字为c, 我们在l位置标记数字c+1, 表示之后的位置数字c出现次数+1, 在r位置标记数字c-1, 表示r之后的位置数字c出现次数-1
把所有区间都标记上去后, 从头到尾扫一遍, 得出每一列出现的数字个数, 求最大值就好了
代码
#include <bits/stdc++.h>using namespace std;const int MAXN = 1E5+100;int n, m, k, l, r, a, add[MAXN][20];int main(){ scanf("%d%d", &n, &m); for(int i=1; i<=n; ++i) { scanf("%d%d%d", &l, &r, &a); ++add[1][0]; --add[l][0]; ++add[l][a]; --add[r+1][a]; ++add[r+1][0]; } int ans = 0; for(int i=1; i<=m; ++i) { int tans = 0; for(int j=0; j<=10; ++j) { add[i][j] += add[i-1][j]; if(add[i][j]) ++tans; } ans = max(tans, ans); } cout << ans <<endl; return 0;}
阅读全文
0 0
- Huge Matrix 扫描
- C. Inna and Huge Candy Matrix(cf)
- codeforces Inna and Huge Candy Matrix
- C - Inna and Huge Candy Matrix
- code forces 400C Inna and Huge Candy Matrix
- Codeforces 400 C. Inna and Huge Candy Matrix
- Codeforces 400C Inna and Huge Candy Matrix(模拟)
- (CF)C. Inna and Huge Candy Matrix
- codeforces 400C - Inna and Huge Candy Matrix
- codeforces#234_div2_C Inna and Huge Candy Matrix
- Codeforces 400C Inna and Huge Candy Matrix
- CF 400C - Inna and Huge Candy Matrix
- codeforces 400C Inna and Huge Candy Matrix
- Codeforces 400C Inna and Huge Candy Matrix 【模拟】
- Codeforces 400B Inna and Huge Candy Matrix(模拟)
- codeforces 400C - Inna and Huge Candy Matrix(耐心找规律,细节还是要注意的)
- Codeforces 400 C. Inna and Huge Candy Matrix【 Codeforces Round #234 (Div. 2)】
- huge memory
- Java二维数组计算集合(上下左右左斜右斜)
- 1436 [CA1009]The root of the equation
- RC积分(如果叫做低通也行) 俗语
- DQN_tensorflow 源码解读
- K选择问题
- Huge Matrix 扫描
- 硬件访问服务4之Android硬件访问服务框架及系统函数全详细实现
- 搜素-Q
- spring入门(注解实现Bean的定义)
- ubuntu opencv多版本控制
- 两个队列实现一个栈
- [一天几个linux命令] 改变文件所属用户组,所有者 chgrp chown
- SAP HANA Odata报错500 Internal Server Error
- 用栈的方式实现递归调用(以n的阶乘为例)