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