zoukankan      html  css  js  c++  java
  • 考试总结 2018-5-6

      好难啊……

      第一题根据题意和数据范围,应该是纯模拟没得说,好像有一点点贪心的意思。维护一个sum5和sum10,反正sum20是用不到的。

    int i,n,t;
    int sum5,sum10;
    int main()
    {
    
    ios::sync_with_stdio(false);
    freopen("book.in","r",stdin);
    freopen("book.out","w",stdout);
    
        cin>>n;
        for(i=1;i<=n;i++)
        {
            cin>>t;
            if(t==20) 
            {
                if(sum10>=1&&sum5>=1)
                {
                    sum10--;
                    sum5--;
                    continue;
                }
                if(sum5>=3)
                {
                    sum5-=3;
                    continue;
                }        
                cout<<"NO";
                return 0;
            }
            if(t==10)
            {
                if(sum5>=1)
                {
                    sum5--;
                    sum10++;
                    continue;
                }
                cout<<"NO";
                return 0;
            }
            sum5++;
        }
        cout<<"YES";
        return 0;
    }
    book

      第二题的话。。根据推理和下面的提示知道了是要求组合数的,但是逆元啊快速幂啊我都用不到(自己太菜)。百度?我怎么会是那种人呢。于是写了一个正常的组合数,果然,只拿了30分。

    int i;
    int n,k,C;
    int main()
    {
    ios::sync_with_stdio(false);
    freopen("cube.in","r",stdin);
    freopen("cube.out","w",stdout);
        cin>>n>>k;
        cin>>i>>i>>i;
        C=1;
        for(i=1;i<=k;i++)
        {    
            C=(C*(n-i+1)/i)%1000000007;
        }
        cout<<C;
    
    }
    cube

    为什么呢?因为这种方法模的时候和用乘法逆元模出来是不一样的,就导致大数据一模就直接错了。

      这里给出题解的伪代码,反正我还要是看不懂的。(我怎么记得pow在<cmath>里是有的?)

      第三题嘛,逆过来就是一道贪心了,虽然不知道怎么证明,但直觉告诉我是可以的,参照n的范围。。。于是就开心的AC掉了。

    int i,    t,n,m,ans;
    int a[1000010],sum[1000010];
    int main()
    {
    ios::sync_with_stdio(false);
    freopen("multiset.in","r",stdin);
    freopen("multiset.out","w",stdout);
    
        cin>>n;
        for (i=0;i<n;i++)
        {
            cin>>a[i];
            m=max(m,a[i]);
            sum[a[i]]++;
        }
        t=sum[0];
        for(i=1;i<=m;i++)
        {
            t=(t+1)>>1;
            ans++;
            t=t+sum[i];
        }
        for(;t!=1;t=(t+1)>>1) ++ans;
        cout<<ans;
        return 0;  
    }  
    multiset

      后三道题。。。emmm,我tm一道都没看懂题意,心态爆照。但当时以为前三题都是a掉的了,于是就开心的放弃,去做校内oj的题了。

      这次考试再次锻炼了我的能力和心态和阅读能力,是一次很有意义的考试。

  • 相关阅读:
    VS Code 调试 Angular 和 TypeScript 的配置
    如何在 ASP.NET Core 中发送邮件
    十二个 ASP.NET Core 例子
    ASP.NET Core MVC 源码学习:详解 Action 的激活
    10 分钟学会Linux常用 bash命令
    ASP.NET Core MVC 源码学习:详解 Action 的匹配
    ASP.NET Core MVC 源码学习:MVC 启动流程详解
    ASP.NET Core MVC 源码学习:Routing 路由
    多叉树查找
    《转》Ubuntu 12.04常用的快捷键
  • 原文地址:https://www.cnblogs.com/qywyt/p/9031099.html
Copyright © 2011-2022 走看看