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的题了。

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

  • 相关阅读:
    编程习俗和设计模式
    Design Patterns Quick Memo
    Monty Hall Problem
    RPG game: the lost Roman Army
    A Geeky Game Idea
    App自动化测试:等待webview页面数据加载完成
    Android自动化测试元素定位
    IOS苹果开发者免费证书申请&使用Xcode打包
    pytest测试夹具(fixture)简介
    Unittest与Pytest参数化区别
  • 原文地址:https://www.cnblogs.com/qywyt/p/9031099.html
Copyright © 2011-2022 走看看