FZU 2216 The Longest Straight 二分
2015-12-28 18:08
471 查看
0可以表示任何1到m的数,求一个最长的连续上升序列长度
因为m的范围在10w,所以以每个节点为起点 进行二分,复杂度mlogm
思路:b[i]表示到 1 到 i 有几个数没有出现,二分的时候注意加等号
View Code
因为m的范围在10w,所以以每个节点为起点 进行二分,复杂度mlogm
思路:b[i]表示到 1 到 i 有几个数没有出现,二分的时候注意加等号
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cstdlib> #include<cmath> #include<cstdlib> #include<vector> #include<queue> using namespace std; typedef long long LL; const int INF=0x3f3f3f3f; const int maxn=100000+5; bool vis[maxn]; int b[maxn]; int main() { int T; scanf("%d",&T); while(T--) { int n,m,sum=0; scanf("%d%d",&n,&m); memset(vis,0,sizeof(vis)); int x; for(int i=1; i<=n; ++i) { scanf("%d",&x); if(!x)sum++; else vis[x]=1; } b[0]=0; for(int i=1; i<=m; ++i) { if(vis[i])b[i]=b[i-1]; else b[i]=b[i-1]+1; } int ans=1; for(int i=1; i<m; ++i) { int l=i,r=m,mid; while(l<=r) { mid=(l+r)>>1; if(b[mid]-b[i-1]>sum)r=mid-1; else l=mid+1; } mid=(l+r)>>1; ans=max(ans,mid-i+1); } printf("%d\n",ans); } return 0; }
View Code
相关文章推荐
- offsetof与container_of宏[总结]
- jms的failover方式
- 服务器主机上RAID Controller的Read Ahead Policy
- 自定义View时,用到Paint Canvas的一些温故,讲讲平时一些效果是怎么画的(基础篇 一)
- 自定义View时,用到Paint Canvas的一些温故,讲讲平时一些效果是怎么画的(基础篇 一)
- RAID6磁盘阵列数据如何恢复
- MiniSnail子模块的规划
- SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
- Training set、 gallery set、Probe set
- WSAWaitForMultipleEvents
- stl map用法和make_pair函数和pair结构体
- Clairewd’s message
- Failed to restart network.service: Unit network.service failed to load: No such file or directory.
- v8 bailout
- UVA-Matrix Chain Multiplication(栈)
- Containing ViewControllers
- UVA-514 Rails (栈)
- CTE(Custom Terrain Editor)使用说明
- CTE(CustomTerrainEditor) 自定义地形编辑器(已上传视频, 并更新版本到CTE1.3)
- HDOJ 1302-The Snail