zoukankan      html  css  js  c++  java
  • CF 803D Magazine Ad 题解

    题面

    正解:一道二分大水题!

    A:为什么我得不到满分?

    B : 评测的系统不一样啊!

    A : 蛤?

    正常情况下我们日常练习均使用的是windows系统,在windows下,string 本身是可以存储''字符,''字符只是char 数组的结束符。如果是一个字符一个字符赋值,string 是可以直接输出空字符的。

    而在linux的情况下(比如OI或一些oj),string 和char[]是一个德行,根本就存不了’',此字符也作为string 的结束符。

    所以说:在Linux下,读取换行一定要用两遍getchar(),否则:(本来应该)------->(结果)(前提是linux评测的)

    #include <bits/stdc++.h>
    #pragma GCC optimize(2)
    using namespace std;
    int k,len;
    char s[2000010];
    int ans;
    int bo[1000010];
    int nxt[1000010];
    int check(int x)
    {
        if(x==1) return 1;
        register int u=1+x;
        register int num=0;
        memset(bo,0,sizeof(bo));
        while(u<=len){           
            register int tmp=nxt[u];
            while(bo[tmp]&&tmp!=0){
                tmp=nxt[tmp];
            }
            if(tmp==0){
                return 0;
            }
            else{
                bo[tmp]=1;
                ++num;
                u=tmp+1 ;
                if(num>k) return 0;  
            }
            u+=x;
        }
        return 1;
    }
    void erfen(int l,int r)
    {
        while(l!=r)
        {
            int midd=(l+r)>>1;
            if(check(midd)) r=midd;
            else l=midd+1;
        }
        ans=l;
    }
    int main ()
    {
        cin>>k;
        k--;
        getchar();
        //getchar(); //如果用linux评测就把该注释删掉 ,保留两个getchar() 
        int num=0;
        while(1)
        {
            char ch=getchar();
            if(ch=='
    ') break;
            s[++num]=ch;
        }
        len=strlen(s+1);
        int pre=0;
        for(register int i=1;i<=len;i++){
            if(s[i]==' ') s[i]='-';
            nxt[i]=pre;
            if(s[i]=='-'){
                pre=i;
            }
        }
        erfen(1,len);
        printf("%d",ans);
    }
  • 相关阅读:
    BZOJ 3744 Gty的妹子序列
    BZOJ 3872 Ant colony
    BZOJ 1087 互不侵犯
    BZOJ 1070 修车
    BZOJ 2654 tree
    BZOJ 3243 向量内积
    1003 NOIP 模拟赛Day2 城市建设
    CF865D Buy Low Sell High
    CF444A DZY Loves Physics
    Luogu 4310 绝世好题
  • 原文地址:https://www.cnblogs.com/kamimxr/p/11278651.html
Copyright © 2011-2022 走看看