牛牛涼衣服

2022-04-08 14:55:13 字數 1545 閱讀 2179

牛牛有n件帶水的衣服,乾燥衣服有兩種方式。

一、是用烘乾機,可以每分鐘烤乾衣服的k滴水。

二、是自然烘乾,每分鐘衣服會自然烘乾1滴水。

烘乾機比較小,每次只能放進一件衣服。

注意,使用烘乾機的時候,其他衣服仍然可以保持自然烘乾狀態,現在牛牛想知道最少要多少時間可以把衣服全烘乾。

本來想的貪心,**如下,

class solution 

return t ;

}};

對於上述**的貪心錯誤理解:

把所有的數排序一下, 然後從大到算一下時間。

我這樣計算的結果就是可能存在乙個x , 他x % k = y , 這個y可能是1,也可能是2,甚至別的,那麼這幾滴水也被用做了一分鐘,何不把他自然烘乾,節省時間, 將這個一分鐘的時間給其他滿足x >= k的來用用 , 這樣這個一分鐘完全去掉了k滴水。

但是具體對兩者分配不知,假設每個物品自然烘乾和機器烘乾的時間分別是x1 , x2 , 二分時間mid

在這個條件下,每次二分的時候,自然烘乾一定是滿足條件的,但是機器烘乾不一定滿足條件,我只需要判斷機器烘乾就行了

\[x1 + x2 = mid

\]\[a[i] = x2 * k + x1

\]\[=>x2 = \lceil\frac\rceil

\]還要注意爆int

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #pragma gcc optimize(3 , "ofast" , "inline")

using namespace std ;

#define ios ios::sync_with_stdio(false) , cin.tie(0) , cout.tie(0)

#define x first

#define y second

typedef long long ll ;

const double esp = 1e-6 , pi = acos(-1) ;

typedef pairpii ;

const int n = 1e6 + 10 , inf = 0x3f3f3f3f , mod = 1e9 + 7;

ll in()

while(isdigit(ch)) x = x * 10 + ch - 48 , ch = getchar() ;

return x * f ;

}bool check(int n , vector&a , int k , ll mid)

} return sum <= mid ;

}int solve(int n, vector& a, int k)

return r ;

}int main()

/**/

牛牛晾衣服

題目描述 牛牛有n件帶水的衣服,乾燥衣服有兩種方式。一 是用烘乾機,可以每分鐘烤乾衣服的k滴水。二 是自然烘乾,每分鐘衣服會自然烘乾1滴水。烘乾機比較小,每次只能放進一件衣服。注意,使用烘乾機的時候,其他衣服仍然可以保持自然烘乾狀態,現在牛牛想知道最少要多少時間可以把衣服全烘乾。題目鏈結 思路 二分...

牛牛晾衣服

牛牛有n件帶水的衣服,乾燥衣服有兩種方式。一 是用烘乾機,可以每分鐘烤乾衣服的k滴水。二 是自然烘乾,每分鐘衣服會自然烘乾1滴水。烘乾機比較小,每次只能放進一件衣服。注意,使用烘乾機的時候,其他衣服仍然可以保持自然烘乾狀態,現在牛牛想知道最少要多少時間可以把衣服全烘乾。所以每件衣服 只能烘乾一秒 然...

C 牛牛晾衣服

牛牛有n件帶水的衣服,乾燥衣服有兩種方式。一 是用烘乾機,可以每分鐘烤乾衣服的k滴水。二 是自然烘乾,每分鐘衣服會自然烘乾1滴水。烘乾機比較小,每次只能放進一件衣服。注意,使用烘乾機的時候,其他衣服仍然可以保持自然烘乾狀態,現在牛牛想知道最少要多少時間可以把衣服全烘乾。輸入 3,2,3,9 5輸出 ...