894
汽車大全
poj 2459 Feed Accounting
一次AC,超水的一道題目,模擬就可以了,關鍵是這道題的題目感覺很牽強。。。。
完全就是為了出題而出的題目,不是很好理解,但是後麵有例子,這種題目有例子就很好看懂了
網上有一個不錯的題意解析和思路,但是我不是這個思路做的。。。
【題意簡述】:題意大概就是,農夫想要在第D天的時候剩下F2千克的草,而他一共有F1千克的草,如果他將草投放到農場就會有牛來吃草,所以他想知道在第幾天的時候放他的F1千克的草料到農場上,才能讓他的草料在第D天的時候剩下F2千克。
然後要說的就是那個第一行下麵的輸入的C行是什麼意思:就是指有C頭牛,每頭牛對應出現在農場上的時間是第幾天到第幾天!
【思路】:我想題意弄懂之後,就應該完成了這道題的一半了吧。
思路就是我們可以,設置一個數組,存儲相應每天都有幾頭牛在這個農場上(可以是 0,1,2……最多C),然後我們從第D天開始向前數,查找這個數組對應下標的那個天數,有幾頭牛在,就用總共的F2-F1的可用草料去減這個數組的對應天數的那個值,直到F2-F1 等於零!此時這個數組的下標+1,就是我們要找的那個時間!
這題我自己的思路就是純暴力,0MS就過了,超級水~~~
#include <stdio.h>
typedef struct
{
int startDay;
int endDay;
}COW;
COW cows[105];
int main()
{
int C,F1,F2,D;
scanf("%d%d%d%d",&C,&F1,&F2,&D);
int availableFeed=F1-F2;
int i;
for(i=0;i<C;i++)
scanf("%d%d",&cows[i].startDay,&cows[i].endDay);
int j;
for(i=D; ;i--)
{
for(j=0;j<C;j++)
{
//減去每一天的奶牛吃掉的數量
if(cows[j].startDay<=i && i<=cows[j].endDay)
availableFeed--;
}
if(availableFeed==0)
{
printf("%d\n",i);
return 0;
}
else if(availableFeed<0)
{
printf("1\n");
return 0;
}
}
return 0;
}
最後更新:2017-04-03 05:40:00