小a与204
https://ac.nowcoder.com/acm/contest/317/B
題解:貪心
先排4 0組合,如果一個有余與2組合,最后有余的排
/* *@Author: STZG *@Language: C++ */ #include <bits/stdc++.h> #include<iostream> #include<algorithm> #include<cstdlib> #include<cstring> #include<cstdio> #include<string> #include<vector> #include<bitset> #include<queue> #include<deque> #include<stack> #include<cmath> #include<list> #include<map> #include<set> //#define DEBUG #define RI register int using namespace std; typedef long long ll; //typedef __int128 lll; const int N=100000+10; const int MOD=1e9+7; const double PI = acos(-1.0); const double EXP = 1E-8; const int INF = 0x3f3f3f3f; ll t,n,m,k,q; ll ans,cnt,flag,temp; ll a[5]; char str; int main() { #ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout); #endif//scanf("%d",&n);//scanf("%d",&t);//while(t--){}scanf("%lld",&n);for(int i=1;i<=n;i++){scanf("%lld",&k);a[k]++;}int pos=0;for(int i=1;i<=n;i++){if(pos==0){if(a[4]>0){ans+=16;pos=4;a[4]--;}else if(a[2]>0) {ans+=4;pos=2;a[2]--;}else{ans+=0;pos=0;a[0]--;}}else if(pos==2){if(a[0]>0){ans+=4;pos=0;a[0]--;}else if(a[4]>0) {ans+=4;pos=4;a[4]--;}else{ans+=0;pos=2;a[2]--;}}else{if(a[0]>0){ans+=16;pos=0;a[0]--;}else if(a[2]>0) {ans+=4;pos=2;a[2]--;}else{ans+=0;pos=4;a[4]--;}}}printf("%lld\n",ans);//cout << "Hello world!" << endl;return 0; }?
總結