• bzoj1067降雨量


    True和False都好搞

    Maybe的情况:

    1.Y年和X年的降雨量已知,X年的降雨量不超过Y年的降雨量,从Y+1到X-1年中存在至少一年的降雨量未知,从Y+1到X-1年中已知的降雨量都小于X年的降雨量。

    2.Y年和X年中有且仅有一年的降雨量未知,从Y+1到X-1年中已知的降雨量都小于X年的降雨量。

    3.Y年和X年的降雨量都未知。 
    以上三组条件中只要满足任意一组,答案即为”maybe”。

    1.5h used

    yyc太强辣

    #include<cstdio>
    #include<cstring>
    #include<map>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    const int inf=0x373737;
    map<int,int>dy;
    map<int,int>dd;
    int A[100000+10],dmax[100000+10][25],n,cnt[100000+10];
     
    void RMQ_init(){
       for(int i=0;i<n;i++) dmax[i][0]=dy[A[i]];
       for(int j=1;(1<<j)<=n;j++){
         for(int i=0;i+(1<<j)-1<n;i++){
            //dmin[i][j]=min(dmin[i][j-1],dmin[i+(1<<(j-1))][j-1]);
            dmax[i][j]=max(dmax[i][j-1],dmax[i+(1<<(j-1))][j-1]);
         }
       }
    }
     
    int rmq(int l,int r){
       if(l==r) return dmax[l][0];
       int k=0;
       while((1<<(k+1))<=r-l+1) k++;
       return max(dmax[l][k],dmax[r-(1<<k)+1][k]);
    }
     
    int main(){
        while(~scanf("%d",&n)){
          int t=0;dy.clear();dd.clear();
          memset(cnt,0,sizeof(cnt));
          for(int i=0;i<n;i++){
            int a,b;scanf("%d%d",&a,&b);
            dd[a]=t;
            A[t++]=a;
            dy[a]=b;
          }
          RMQ_init();
          int m;scanf("%d",&m);
          while(m--){
             int x,y;scanf("%d%d",&y,&x);
             /*
             if(x<y){
                printf("false
    ");
                continue;
             }
             */
             int maxx;
             if(dd.count(x)&&dd.count(y)) maxx=rmq(dd[y]+1,dd[x]-1);
             if(dd.count(x)&&dd.count(y)){
                 if(dy[y]>=dy[x]&&(maxx<dy[x]||dd[x]-dd[y]==1)){
                      if(x-y==dd[x]-dd[y])    printf("true
    ");
                      else printf("maybe
    ");
                 }
                 else printf("false
    ");
             }
             else if(dd.count(x)||dd.count(y)){
                 if(dd.count(x)){
                    int p=lower_bound(A,A+n,y)-A;
                     //cout<<"pp="<<p<<endl;
                    int maxx=rmq(p,dd[x]-1);
                    //cout<<"maxxx="<<maxx<<endl;
                    if(p==dd[x]||maxx<dy[x]) printf("maybe
    ");
                    else printf("false
    ");
                 }
                 else{
                    int p=lower_bound(A,A+n,x)-A;
                    //cout<<"p="<<p<<endl;
                    int maxx=rmq(dd[y]+1,p-1);
                    //cout<<"maxx"<<maxx<<endl;
                    if(dd[y]==p-1||maxx<dy[y]) printf("maybe
    ");
                    else printf("false
    ");
                 }
             }
             else{
                printf("maybe
    ");
             }
          }
        }
    }
    
    View Code
  • 相关阅读:
    BZOJ3295:[CQOI2011]动态逆序对——题解
    BZOJ1176:[Balkan2007]Mokia——题解
    测试用例设计白皮书--等价类划分方法
    测试用例设计白皮书--等价类划分方法
    软件测试价值观-SMBT新理念
    软件测试价值观-SMBT新理念
    Web自动化测试平台设计与落地-概览
    Web自动化测试平台设计与落地-概览
    Web自动化测试平台设计与落地-概览
    自动化测试平台设计与落地-概览
  • 原文地址:https://www.cnblogs.com/Kong-Ruo/p/7847120.html
Copyright © 2020-2023  润新知