POJ 3312(水題)
阿新 • • 發佈:2019-01-22
題意:給定n個名字,取k個名字,若每個名字的長度與這k串名字的平均長度的差值(絕對值)都不大於2,則符合要求。判斷這n個名字分成K組是否符合要求。
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<queue> #include<vector> #include<cmath> #include<set> using namespace std; const int maxn = 1e9; const int maxt = 1e8; const double eps = 1e-6; typedef long long ll; const ll MOD = 1e9; char name[110]; int len[1010]; int n, k; int main() { int kase = 0; while(~scanf("%d%d",&n,&k)) { if(!n && !k) break; if(kase) printf("\n"); for(int i = 0; i < n; i++) { scanf("%s",name); len[i] = strlen(name); } sort(len, len + n); bool ok = true; int l = n / k; for(int i = 0; i < l; i++) { int sum = 0; for(int j = 0; j < k; j++) { sum += len[j + i * k]; } double aver = (double)sum / k; for(int j = 0; j < k; j++) if(fabs(len[j + i * k] - aver) - 2.0 > eps) {ok = false; break;} } if(ok) printf("Case %d: yes\n",++kase); else printf("Case %d: no\n",++kase); } return 0; }