【題意簡述】:題意大概就是,農夫想要在第D天的時候剩下F2千克的草,而他一共有F1千克的草,如果他將草投放到農場就會有牛來吃草,所以他想知道在第幾天的時候放他的F1千克的草料到農場上,才能讓他的草料在第D天的時候剩下F2千克。
然後要說的就是那個第一行下面的輸入的C行是什麼意思:就是指有C頭牛,每頭牛對應出現在農場上的時間是第幾天到第幾天!
【思路】:我想題意弄懂之後,就應該完成了這道題的一半了吧。
思路就是我們可以,設置一個數組,存儲相應每天都有幾頭牛在這個農場上(可以是 0,1,2……最多C),然後我們從第D天開始向前數,查找這個數組對應下標的那個天數,有幾頭牛在,就用總共的F2-F1的可用草料去減這個數組的對應天數的那個值,直到F2-F1 等於零!此時這個數組的下標+1,就是我們要找的那個時間!
詳見代碼:
//212K 16Ms #includeusing namespace std; #define MAX_size 2005 int cow[MAX_size]; int main() { int c,f1,f2,d; int i,j; int a,b; //牛來的時候和走的時候! cin>>c>>f1>>f2>>d; memset(cow,0,sizeof(cow)); for(i = 0;i >a>>b; for(j = a;j<=b;j++) { cow[j]++; } } j = d; int pay = f1 - f2; while(pay!=0) pay-=cow[j--]; cout<