202303-2-垦田计划

一、题目分析

本题可以采用模拟法去做,通过循环判断每一轮的最大耗时需要消耗的资源数,直到资源耗尽。
但注意到任务要求:

70% 的测试数据满足:0

按照上述模拟法,假设最坏情况每一天都遍历,总共有n个工程,每个工程ti天,最坏105*105=1010>109,因此会超时。

二、正确题解

采取类似于前缀和的思路。先把相同天数看成一个整体,他们所需要的总资源记在数组中,如果全部资源m满足最大天数需要资源要求,那么即可减小一天,此时最大天数-1,其所需资源需要累加到前一天。

三、代码展示©

#include 
#include 
int nrr[100001];
int main(){
    int n,m,k,i;
    scanf("%d%d%d",&n,&m,&k);
    int MAX=0;
    for(i=0;i=nrr[MAX]){
            m-=nrr[MAX];
            nrr[MAX-1]+=nrr[MAX];
            MAX--;
        }else{
            break;
        }
    }
    printf("%d",MAX);
    return 0;
}

你可能感兴趣的:(csp,算法,数据结构,c语言)