bzoj1676[Usaco2005 Feb]Feed Accounting 饲料计算
题意:
知道草料到来时F1kg,第D天F2kg。同时知道每头牛到来时间和离开时间,一牛一天吃1kg草料,问草料到来是第几天。
题解:
直接用区间左端点对应数组元素++,右端点+1对应数组元素--的方法,最后扫一下即可。
代码:
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define inc(i,j,k) for(int i=j;i<=k;i++) 5 #define maxn 10010 6 using namespace std; 7 8 inline int read(){ 9 char ch=getchar(); int f=1,x=0; 10 while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();} 11 while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); 12 return f*x; 13 } 14 int sum[maxn],c,f1,f2,d; 15 int main(){ 16 c=read(); f1=read(); f2=read(); d=read(); 17 inc(i,1,c){int x=read(),y=read(); sum[x]++; sum[y+1]--;} 18 inc(i,1,d)sum[i]+=sum[i-1]; 19 for(int i=d;i>=1;i--){ 20 f2+=sum[i]; if(f2==f1){printf("%d",i); return 0;} 21 } 22 }
20160928