A - Heating

题意:一个房间,最多装c个加热器,若某个加热器长度为k,则花费为k*k,覆盖这n个长度求最小花费。

题解:首先每个格子只装最多一个,先取min。然后肯定是最平均最好,小平均值是n/d取下整,大平均值是小平均值+1,大平均值的个数是n%d,小平均值的个数即剩下的。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

void test_case() {
    ll r, b, k;
    scanf("%lld%lld%lld", &r, &b, &k);
    if(r > b)
        swap(r, b);
    ll g = __gcd(r, b);
    r /= g, b /= g;
    ll suc = ((b - 1) >= (k - 1) * r + 1);
    if(suc) {
        puts("REBEL");
        return;
    } else {
        puts("OBEY");
        return;
    }
}

int main() {
#ifdef KisekiPurin
    freopen("KisekiPurin.in", "r", stdin);
#endif // KisekiPurin
    int t = 1;
    scanf("%d", &t);
    for(int ti = 1; ti <= t; ++ti) {
        //printf("Case #%d: ", ti);
        test_case();
    }
}
12-25 08:50