题目的建模意思是什么呢?
每个奶牛从a点开始吃,从b+1点就停止吃。这就是间接告诉你这两点组成一个区间,需要差分序列。
之后对差分的序列求前缀和(计算每天的粮草的消耗量),
之后对于消耗的粮草,我们倒着从第D天往第1天加和,如果刚好相符就输出。
#include <cstdio> #include <algorithm> #include <cstring> int n,d,Start,End; int Sum[2333]; int x,y; int main(){ scanf("%d%d%d%d",&n,&Start,&End,&d); int Aim = Start - End; for(int i=1;i<=n;i++){ scanf("%d%d",&x,&y); Sum[x]++; Sum[y+1]--; } for(int i=1;i<=d;i++){ Sum[i]+=Sum[i-1]; //printf("Sum[%d]:%d\n",i,Sum[i]); } int ans = 0; for(int i=d;i>=1;i--){ ans+=Sum[i]; if(ans>=Aim){ printf("%d\n",i); return 0; } } }
时间: 2024-10-12 13:42:32