BZOJ1510 [POI2006]Kra-The Disks

来源:互联网 发布:淘宝远望手机怎么样 编辑:程序博客网 时间:2024/05/16 08:26

傻逼题

先单调栈处理一下对于第i层,长度至多为多少才能到达

然后每次二分一下落到哪即可

#include<iostream>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<cstdlib>#include<cstdio>#include<map>#include<bitset>#include<set>#include<stack>#include<vector>#include<queue>using namespace std;#define MAXN 300010#define MAXM 1010#define ll long long#define eps 1e-8#define MOD 1000000007#define INF 1000000000int n,m;int a[MAXN];int st[MAXN],tp;int main(){int i,x;scanf("%d%d",&n,&m);a[0]=INF;for(i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]<=a[st[tp]]){st[++tp]=i;}}int now=0;for(i=1;i<=n;i++){if(i==st[now+1]){now++;}a[i]=a[st[now]];}int R=n;while(m--){scanf("%d",&x);int l=0,r=R;int t;while(l<=r){int mid=l+r>>1;if(a[mid]>=x){t=mid;l=mid+1;}else{r=mid-1;}}R=t-1;if(R<=0){printf("0\n");return 0;}}printf("%d\n",R+1);return 0;}/**/


0 0
原创粉丝点击