• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
dwtfukgv
博客园    首页    新随笔    联系   管理    订阅  订阅
POJ 3312 Mahershalalhashbaz, Nebuchadnezzar, and Billy Bob Benjamin Go to the Regionals (水题,贪心)

题意:给定 n 个字符串,一个k,让你把它们分成每组k个,要保证每组中每个字符串长度与它们之和相差不能超2.

析:贪心策略就是长度相差最小的放上块。

代码如下:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <string>
#include <functional>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <cstring>
#include <set>
#include <queue>
#include <algorithm>
#include <vector>
#include <deque>
#include <map>
#include <cctype>
#include <stack>
#include <sstream>
using namespace std ;

typedef long long LL;
typedef pair<int, int> P;
const int INF = 0x3f3f3f3f;
const double inf = 0x3f3f3f3f3f3f;
const double PI = acos(-1.0);
const double eps = 1e-8;
const int maxn = 1000 + 5;
const int mod = 1e9 + 7;
const char *mark = "+-*";
const int dr[] = {-1, 0, 1, 0};
const int dc[] = {0, 1, 0, -1};
int n, m;
inline bool is_in(int r, int c){
    return r >= 0 && r < n && c >= 0 && c < m;
}
inline int Min(int a, int b){ return a < b ? a : b; }
inline int Max(int a, int b){ return a > b ? a : b; }
char s[maxn];
vector<int> v;

int main(){
    int kase = 0;
    while(scanf("%d %d", &n, &m) == 2){
        if(!m && !n)  break;

        v.clear();
        for(int i = 0; i < n; ++i){
            scanf("%s", s);
            v.push_back(strlen(s));
        }
        sort(v.begin(), v.end());
        bool ok = true;
        for(int i = 0; i < n/m; i++){
            double cnt = 0.0;
            for(int j = 0; j < m; ++j)
                cnt += v[i*m+j];
            cnt /= (double)m*1.0;
            for(int j = 0; j < m; ++j)
                if(abs((double)v[i*m+j]*1.0 - cnt) > 2.0){ ok = false; break; }
        }
        if(kase++)  printf("\n");
        printf("Case %d: %s\n", kase, ok ? "yes" : "no");
    }
    return 0;
}

  

posted on 2016-08-18 19:30  dwtfukgv  阅读(218)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3