贪心,但是只对了一个
查看原帖
贪心,但是只对了一个
1096519
milk2715093695楼主2023/12/4 23:01
#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
    return (*(int *)b - *(int *)a);
}	//降序

int main(void) {
    int num[4], ans = 0;
    for (int i = 0; i < 4; ++i) {
        scanf("%d", &num[i]);
    }
    
    for (int i = 0; i < 4; ++i) {
        int left = 0, sum = 0;
        int temp[num[i]];
        
        for (int j = 0; j < num[i]; ++j) {
            scanf("%d", &temp[j]);
            sum += temp[j];	//计算一门课的总时间
        }
        
        qsort(temp, num[i], sizeof(int), compare);	//降序排序
        
        for (int j = 0; j < num[i]; ++j) {
            if (left + temp[j] <= sum / 2) {
                left += temp[j];
            }
        }	//贪心,使left是不超过sum / 2的最大的数
        ans += sum - left;	//另外一半就是总时间
    }
    printf("%d", ans);
    
    return 0;
}
2023/12/4 23:01
加载中...