2018 浙江省賽j zoj4033
阿新 • • 發佈:2018-11-15
本題大意:
給你一串數字1為男 0為女 隨著位數增加每個人擁有的寶石數遞增 (從一開始)
要把這些人分為4組
組 1 2為女 組3 4 為男
並且1 3之和 要等於 2 4之和
解法:
總值%2==1的話就無法均分 輸出-1
可以的話
從中值開始 貪心一下 取得到就判斷男女 男的就分到3 女的就分到1
不能取到男的就分到4 女的就分到2
注意精度long long
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=1e6+10; long long record[maxn]; char clas[maxn]; int main() { long long t; scanf("%d",&t); while(t--) { long long n=0; scanf("%d",&n); getchar(); scanf("%s",clas+1); long long sum=(n*(n+1))/2; if(sum%2) { printf("-1\n"); continue; } long long summid=sum/2; for(long long i=n;i>=1;i--) { if(summid>=i) { summid-=i; if(clas[i]=='1') { record[i]=3; //cout<<3; } else { record[i]=1; } } else { if(clas[i]=='1') { record[i]=4; } else { record[i]=2; } } } for(long long i=1;i<=n;i++) printf("%d",record[i]); printf("\n");//long long } }