Codeforces Round #273 (Div. 2)

这场比赛+131不是灰名了\^.^/好评

----------------------------------------------------------------------------------------------------------------------

A. Initial Bet

开始有5个人,每人有b个金币(不为零),每一枚金币可以从一个人传到另一个人,给出最后每人的金币数,求最开始每人的金币数,如果不存在这种状态,输出-1

看金币和能不能被5整除,且金币和不为零

#include 
#include 
const int N = 100000;
#define ll long long;

int main() {
    //freopen("in.txt", "r", stdin);
    int a[100];
    int sum = 0;
    for (int i = 0; i < 5; i++) {
        scanf("%d", &a[i]);
        sum += a[i];
    }
    if (sum%5==0&&sum) printf("%d\n", sum/5);
    else printf("-1\n");
    return 0;
}


B. Random Teams

给出n个人,要把他们分成m个队且每队至少1个人,同一个队内的两个人能成为朋友,求最多和最少有多少对朋友。

解法:贪心    求最大时 m-1各队每队1人,最后一个队n-m+1人,最多朋友对数:Cn-m+1 2 = (n-m+1)*(n-m)/2

最小的人数 贪心的方法是尽量使每个队的人数平均,尽管不知道为什么这么贪心是对的。。。

最开始贪错了,想平均分,剩的给同一个人 17--->  5 5 7     但是明显 17 ---->  6 6 5 更小   于是

你可能感兴趣的:(Codeforces跟番,codeforces,贪心,动态规划)