防线Defense Lines
来源:互联网 发布:tensorflow graph 编辑:程序博客网 时间:2024/04/28 14:26
//紫书P242//UVA1471Defense Lines//Serene#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>#include<set>using namespace std;const int maxn=2e5+10;int t,n,a[maxn],f[maxn],g[maxn];int aa=0;char c;int read(){ aa=0;c=getchar(); while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9') aa=aa*10+c-'0',c=getchar(); return aa;}struct node{ int a,g; node(const int a=0,const int g=0) : a(a),g(g){} bool operator < (const node& b) const { return a<b.a; }};int main(){ int ans; t=read(); while(t--) { n=read(); for(int i=0;i<n;++i) a[i]=read(); if(n==1) {cout<<n<<"\n";continue;} g[0]=1;f[n-1]=1; for(int i=1;i<n;++i) if(a[i]>a[i-1]) g[i]=g[i-1]+1; else g[i]=1; for(int i=n-2;i>=0;--i) if(a[i]<a[i+1]) f[i]=f[i+1]+1; else f[i]=1; set<node> G; G.insert(node(a[0],g[0])); ans=1; set<node> :: iterator it; for(int i=1;i<n;++i) { bool ok=1; node v=node(a[i],g[i]); it=G.lower_bound(v); if(it!=G.begin()) { it--; int len=it->g+f[i]; ans=max(ans,len); if(it->g>=g[i]) ok=0; } if(ok){ G.erase(v); G.insert(v); it=G.find(v); it++; while(it!=G.end()&&it->g<=v.g) G.erase(it++); } } printf("%d\n",ans); } return 0;}
0 0
- 防线Defense Lines
- UVA - 1471 Defense Lines 防线
- Defense Lines
- 例题8-8 防线(Defense Lines, ACM/ICPC CERC 2010, UVa1471)
- UVa 1471 Defense Line 防线
- UVALive 4976 Defense Lines
- 1471 - Defense Lines
- uva 1471Defense Lines
- uva 1471 Defense Lines
- UVa1471 - Defense Lines
- UVA 1471 Defense Lines
- uva1471 Defense Lines
- UVA 1471 Defense Lines
- UVA - 1471 Defense Lines
- Defense Lines UVA
- Defense Lines UVA
- Defense Lines UVA
- uva 1471 - Defense Lines(高效)
- 宣传片能为企业带来哪些改变?
- java关键字
- 蓝牙音频A2DP(二) -- audio_hw_device结构体
- 安卓四大程序组件+Intent讲解
- 翻转数组
- 防线Defense Lines
- 安卓开发者选项菜单里的动画选项都代表什么含义?
- Apache服务以及httpd.conf配置详解
- vim插件安装
- SQL基本操作
- Android CoordinatorLayout + AppBarLayout(向上滚动隐藏指定的View)
- 【小米澎湃 S1 芯片、小米5c 发布】
- 利用View自身的方法实现倒计时功能
- 安卓客户端带密码压缩或者解压zip文件