1. 程式人生 > >【差分】bzoj 1676 [Usaco2005 Feb]Feed Accounting 飼料計算

【差分】bzoj 1676 [Usaco2005 Feb]Feed Accounting 飼料計算

每天 序列 scanf 這就是 div algo ret printf 開始

題目的建模意思是什麽呢?

每個奶牛從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; } } }

【差分】bzoj 1676 [Usaco2005 Feb]Feed Accounting 飼料計算