poj3104(二分判斷可行性)

2021-07-24 07:31:06 字數 922 閱讀 2255

/*

translation:

要使得一排衣服晾乾,自然風乾每分鐘蒸發1單位的水分。用烘乾機的話每分鐘蒸發k單位的水分。求把所有衣物晾乾的話至少需要多長時間?

solution:

二分查詢最小可行解

首先二分列舉最短的時間mid。然後是判斷該時間是否可行。可以發現對於水分單位量小於mid的衣服。只需要待其自然風乾即可。

而對於a[i]>mid的衣物來說,要使得能夠在mid時間內完成衣物的烘乾。就要滿足方程:a[i]-t*k <= x-t(t為使用烘乾機的時間)

解得t >= (a[i] - x) / (k-1).注意這時候要用ceil函式向上取整。

note:

1:這道題的二分迴圈次數如果設成100將超時。設定成50就可以。或者用pr - pl > 1來終止迴圈也可以

2:注意k等於1的時候t >= (a[i] - x) / (k-1)的計算將出現錯誤。所以要對於k==1的情況單獨處理

#:這道題怎麼判斷所列舉的時間是否可行沒想出來

date:

2016.11.2

*/#include #include #include using namespace std;

const int maxn = 100000 + 10;

const int inf = 1e9 + 10;

typedef long long ll;

ll a[maxn], n, k;

bool check(ll x) //x的時間內能否使得所有的衣服晾乾

} return true;

}int main()

ll mid;

while(pr - pl > 1)

printf("%lld\n", pr);

}return 0;

}

poj 3104 二分想法

給你n個數表示含水量,給你乙個k表示每分鐘洗衣機能脫水k滴 每分鐘沒有在洗衣機的衣服自動脫水一滴,求把全部水託幹最小時間,怎麼都沒想到居然是二分 好吧,二分列舉最小時間mid,然後求實際所需時間再 經行判斷,如果列舉時間為mid,對每件衣服num i 如果num i 小於mid 很顯然直接自然幹最好...

poj 3104 二分答案

題意 n件濕度為num的衣服,每秒鐘自己可以蒸發掉1個濕度。然而如果使用了暖爐,每秒可以燒掉k個濕度,但不計算蒸發了。現在問這麼多的衣服,怎麼燒事件最短。解析 二分答案咯。include include include include include include include include ...

poj 3104 二分法求最小值

題意 有n件衣服,每件含水量為 知道用二分,關鍵就是怎麼judge卡了,判斷需要x時間所有衣服幹,時間短的直接晾乾 時間長於minite的 烘乾 晾乾,烘乾時間t t k x t a t a x k 1 最後總的烘乾時間要小於x include include includeusing namesp...