1. 程式人生 > >考試總結 2018-5-6

考試總結 2018-5-6

stdin 自己 spl 直接 with -i color BE 3D

  好難啊……

  第一題根據題意和數據範圍,應該是純模擬沒得說,好像有一點點貪心的意思。維護一個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的題了。

  這次考試再次鍛煉了我的能力和心態和閱讀能力,是一次很有意義的考試。

考試總結 2018-5-6