poj 水題 1083搬箱子問題

2021-08-31 17:56:54 字數 666 閱讀 4502

題意如下:

告訴你有400個房間,如上圖所示。給你乙個數n,下面給出n個桌子要搬(從i房間搬到j房間),要你求出最小要用多少時間搬這些桌子?資料範圍:(1 <= n <= 200)(1 <= i,j <= 400)如下附件圖所示:

思路:觀察下附件圖,可知1,2 shared,3,4 shared……399,400shared;不難可以將1和2,3和4^399和400認為是乙個房間,這樣可以減少一半。這樣問題就簡化到求從i位置到j位置搬桌子。考慮到n不是很大,可以模擬來做。

首先開乙個陣列全部置為0,i到j搬桌子(此時的i,j要變成(i + 1)/ 2,(j + 1) / 2),就把a[i]到a[j]之間的所有值加1;最後陣列中最大的那個值就是所要求的時間,當然還要再乘以10。我此題的理解在於(i+1)/2處,舉個例子,從如(29,50)與(30,49)本質上的個數是一樣的,由於奇數偶數可以相互共享,則數目應該少一半等於(15,25)這是迷惑我的關鍵,不好意思,剛做acm 有點水。

**如下:

#include #include using namespace std;

int main()

int max=-1;

for (i=0;i<201;i++)

if (c[i]>max)

max=c[i];

cout<

POJ 水題若干

poj 3176 cow bowling 這道題可以算是dp入門吧。可以用乙個二維陣列從下向上來搜尋從而得到最大值。優化之後可以直接用一維陣列來存。ps 用一維的時候要好好想想具體應該怎麼存,還是有技巧的 include include include includeusing namespace ...

POJ 水題若干

poj 1013 counterfeit dollar 題意 有一打硬幣,其中有乙個是假幣,質量可能較輕,也可能較重。通過三次稱重將假幣找出。由於計算機很難模仿人的想法來實現問題。這道題我糾結了很久。最後我是通過一一枚舉的笨方法做的。就是從a硬幣開始到l硬幣結束,一一假設其為假幣,其中又分為輕和重。...

POJ水題初級

初期 一.基本演算法 1 列舉.poj1753,poj2965 2 貪心 poj1328,poj2109,poj2586 3 遞迴和分治法.4 遞推.5 構造法.poj3295 6 模擬法.poj1068,poj2632,poj1573,poj2993,poj2996 二.圖演算法 1 圖的深度優先...