• 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);
    }
  • 相关阅读:
    对拍程序的写法
    单调队列模板
    [bzoj1455]罗马游戏
    KMP模板
    [bzoj3071]N皇后
    [bzoj1854][SCOI2010]游戏
    Manacher算法详解
    [bzoj2084][POI2010]Antisymmetry
    Python_sklearn机器学习库学习笔记(一)_一元回归
    C++STL学习笔记_(1)string知识
  • 原文地址:https://www.cnblogs.com/kamimxr/p/11278651.html
Copyright © 2020-2023  润新知