• 2017.10.17 模拟赛


    题目链接

      T1

      统计前缀和 以及 后缀的0的数量

      答案显然就是min{当前位置1的个数+当前位置后的零的个数}

      加个特判  当全都是0或1时 输出0

    #include <cstring>
    #include <cstdio>
    #define N 100005
    char str[N];
    int ans,len,a[N],sum0[N],sum1[N];
    inline int min(int a,int b) {return a>b?b:a;}
    int main(int argc,char *argv[])
    {
        freopen("reverse.in","r",stdin);
        freopen("reverse.out","w",stdout);
        scanf("%s",str);
        ans=len=strlen(str);
        for(int i=0;i<len;++i) a[i+1]=str[i]-'0',sum1[i+1]=sum1[i]+a[i+1];
        for(int i=len;i>=1;--i) sum0[i]=sum0[i+1]+(a[i]==0?1:0);
        if(sum0[1]==0||sum1[len]==0) {printf("0");return 0;} 
        for(int i=1;i<=len;++i) ans=min(ans,sum1[i]+sum0[i+1]);
        printf("%d
    ",ans);
        fclose(stdin); fclose(stdout);
        return 0;
    }
    View Code

      T2

      hash

      若x,y的数码种类相同 则这个哈希值也相同 

      一个哈希值的个数为C(sum,2);

      本来T成  加了register快的飞起

     

    #include <iostream>
    #include <cstdio>
    #define N 1024
    using namespace std;
    int n,cnt[N],pow2[10]={1,2,4,8,16,32,64,128,256,512};
    long long ans;
    bool exist[10];
    int Main()
    {
        freopen("number.in","r",stdin);
        freopen("number.out","w",stdout);
        cin>>n;
        for(register int i=1;i<=n;++i)
        {
            register int x=i,sum=0;
            while(x)
            {
                exist[x%10]=true;
                x/=10;
            }
            for(register int j=0;j<=9;++j) {if(exist[j]) sum+=pow2[j];exist[j]=false;} 
            cnt[sum]++;
        }
        for(int i=0;i<N;++i) ans+=1ll*cnt[i]*(cnt[i]-1)/2;
        cout<<ans<<endl;
        fclose(stdin); fclose(stdout);
        return 0;
    }
    int sb=Main();
    int main(int argc,char *argv[]) {;}
    View Code

      T3

      贪心 使偶数项上的数尽量大,使奇数项上的数尽量小

     

    #include <cstdio>
    #include <cctype>
    #define N 2000005
    
    bool found;
    int n,k,flag,a[N],ls[N];
    inline void read(int &x)
    {
        bool f=0;register char ch=getchar();
        for(x=0;!isdigit(ch);ch=getchar()) if(ch=='-') f=1;
        for(;isdigit(ch);x=x*10+ch-'0',ch=getchar());
        x=f?-x:x;
    }
    void alalbbalbbsgkldqn()
    {
        puts("hello ladies and gentlemen");
        puts("i'm MC bytlxmdsyl");
        puts("有一本书名叫天方夜谭");
        puts("很奇妙又好看");
        puts("叙述的是阿拉伯的故事");
        puts("到处都在流传");
        puts("由阿拉丁神灯");
        puts("有辛巴达航海");
        puts("one two three and four");
        puts("come on yo let's go");
        puts("这里有个神奇的故事");
        puts("一个人 一个人");
        puts("一个人的命运会改变");
        puts("阿里 阿里巴巴");
        puts("阿里巴巴是个快乐的青年");
        puts("阿里 阿里巴巴");
        puts("阿里巴巴是个快乐的青年");
    }
    int main(int argc,char *argv[])
    {
        freopen("wave.in","r",stdin);
        freopen("wave.out","w",stdout);
        read(n);read(k);
        for(int i=1;i<=n;++i) read(a[i]);
        printf("%d
    ",((n^(2^2^n&(1&1)))-((n^1)-((n+1)^1))+1)>>1);
        fclose(stdin);
        fclose(stdout);
        return 0;
        alalbbalbbsgkldqn();
    }
    考场10分代码
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    #define N 2000007
    
    using namespace std;
    int a[N];
    int n,k,m,ans,cur;
    
    inline int read()
    {
        int x=0,f=1;char c=getchar();
        while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    
    int main()
    {
        n=read();k=read();
        for(int i=0;i<n;i++) a[i]=read();
        ans=1,m=0,cur=a[0];
        for(int i=1;i<n;i++)
        {
            if(m)
              if(cur-a[i]>=k)
                m=0,ans++,cur=a[i];
              else cur=max(cur,a[i]);
              
            else
              if(a[i]-cur>=k)
                m=1,ans++,cur=a[i];
              else cur=min(cur,a[i]);
        }
        printf("%d
    ",ans);
        return 0;
    }
    View Code
  • 相关阅读:
    单片机多字节串口接收(转)
    TVS ESD 二极管介绍与应用
    W25X16测试程序
    51单片机基于定时器0的硬件延时代码
    [C#]在Windows Service中使用ThreadPool
    [C#]ASP.NET MVC 3 在线学习资料
    [C#]DataGridView中使用数据绑定Enum类型
    [HIMCM]Consortium可以免费下载了!
    [HIMCM]MathType小练习
    实现在DataGridView的编辑列里面选择列类型ColmnType时,多一种类型CalendarColumn从而增加时间控件
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7681694.html
Copyright © 2020-2023  润新知