考試總結 2018-5-6
阿新 • • 發佈:2018-05-13
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) {bookif(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; }
第二題的話。。根據推理和下面的提示知道了是要求組合數的,但是逆元啊快速冪啊我都用不到(自己太菜)。百度?我怎麽會是那種人呢。於是寫了一個正常的組合數,果然,只拿了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