閱讀894 返回首頁    go 微軟 go windows


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

  上一篇:go android學習之繪圖
  下一篇:go Storm Trident 詳解