思路:二分+貪心
提交次數:10次以上
錯因:剛開始以為二分(邊界,$+1or-1$)寫錯了,調了半天,後來才發現是$ck()$寫錯了。開始只判了最後是否小於零,而應該中間一旦小於零就$return\space false$
題解:二分天數(單調性顯然)。
$ck(int x)$: 首先$x$天內必須包含所有科目;然後貪心的考每一科的最後一次試(倒著掃一遍);維護乙個剩餘天數$cnt$,遇到空閒時間或不是最後本科目的一次考試就$++$,否則$-=$本科考試所需的複習天數;一旦$cnt<0$,直接$return\space false$;最後$return\space cnt>=0$。
**:
#include#include#include
using
namespace
std;
//你弱,有什麼資格休息
#define ull unsigned long long
#define ll long long
#define r register ll
#define pause (for(r i=1;i<=10000000000;++i))
#define in freopen("noipak++.in","r",stdin)
#define out freopen("out.out","w",stdout)
namespace
fread inline
bool isempty(const
char& ch)
inline
void gs(char*s)
} using fread::g; using
fread::gs;
namespace
luitaryi
return ret>=0;}
inline
void
main() printf(
"%d\n
",l==n+1?-1
:l);}}
signed main()
2019.07.14
CodeForces 732D 二分 貪心
思路 二分列舉答案,在限定時間內判斷這個時間能否完成。貪心策略是盡量晚的安排每個考試。ac include include include include include include include include include include include include include ...
題解 CF1175C 二分 貪心
題目鏈結 考慮二分答案,判定條件等價於存在乙個 x 滿足存在 ge k 個位置滿足 a i x le mid 考慮固定 x 那麼要統計的即在 x mid,x mid 這個範圍內的 a i 的個數。對於這個問題有兩個解決辦法 直接做我們發現很難,正難則反。因為覆蓋的範圍是一段區間,所以考慮列舉區間判定...
二分貪心 21
題目大概 有n堆積木,積木高度不同,每個小方塊高度相同。問,最少移動多少小方塊,使得這些積木堆高度相等。思路 先求這些積木的平均數,在把所有的高度與平均數的差值加起來,最後除2,就是最少移動的方塊數。感想 這個題有一點很坑人,最後輸出的時候有乙個小點,不注意看看不到。include include ...