题目1496:数列区间
2017-04-28 19:21
309 查看
#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std; #define MAXN 1000005 #define MAXM 100005 struct Op { int l,r; }; int num[MAXN]; int next[MAXN];//next[i]=j;表示第i位之后的 第一个0出现在j这个位置上; Op op[MAXM]; int n,m; int main() { //freopen("in.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF) { memset(num,0,sizeof(num)); //cout<<"n="<<n<<"m="<<m<<endl; for(int i=1;i<=n;i++) { next[i] = i+1; } for(int i=1;i<=m;i++) { scanf("%d%d",&op[i].l,&op[i].r); } for(int i=m;i>=1;i--) { for(int j = op[i].l;j<=op[i].r; ) { //cout<<"main"<<endl; if(num[j] == 0) { num[j] = i; } int temp = next[j]; next[j] = next[op[i].r]; j = temp; } /* for(int i=1;i<=n;i++) { printf("%d ",num[i]); } printf("\n"); */ } int ans = 0,cnt=1; for(int i=2;i<=n;i++) { if(num[i]==num[i-1]&&num[i]!=0) { cnt ++; } else { if(ans < cnt) { ans = cnt ; } cnt = 1; } } if(ans < cnt) { ans = cnt; } printf("%d\n",ans); } return 0; } /************************************************************** Problem: 1496 User: cust123 Language: C++ Result: Accepted Time:380 ms Memory:10112 kb ****************************************************************/
相关文章推荐
- 九度OJ 题目1496:数列区间 (线段树 区间合并 +成段更新)
- 题目1496:数列区间
- pat 1496 数列区间//线段树
- C100-24 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
- k倍区间(思维题目)
- BZOJ 题目3211: 花神游历各国(线段树区间减为平方根,区间求和)
- 九度OJ题目1075:斐波那契数列
- NYOJ 题目710 外星人的供给站(贪心区间覆盖)
- [省选前题目整理][POJ 3468]A Simple Problem with Integers(线段树区间修改)
- 无旋treap:从单点到区间(例题 BZOJ1500&NOI2005 维护数列 )
- 题目-数列分段Section I
- HPUoj题目1062 能量项链(区间dp)
- 题目:合并区间
- 九度oj 题目1544:数字序列区间最小值
- 九度OJ 题目4:斐波那契数列
- uva 10688 - The Poor Giant(区间DP,较难,题目难懂,状态转移难。。。)
- HDOJ 题目1754 I Hate It(线段树单点更新,求区间最大值)
- hdu 3308 LCIS(线段树单点更新+区间合并)中等难度的题目
- 区间图着色问题(算法导论课后题目16.1.3)
- NEUQOJ 题目1496 田鼠看热闹(Ⅱ)(线段树,约瑟夫)