題目大意:
額……貌似蠻清晰的,就不贅述了。
思路:
首先不難發現m越大y越小,因此可以二分答案(方向不要弄錯),二分出最小的不小於s的y即可。而計算y時可用字首和o(n+m)求得。兩種邊界情況也要考慮一下(同時long long不要少開)。
**:
1 #include2 #include3using
namespace
std;
4#define ll long long
5const
int m=200008;6
intn,m,i,h,t,k,mn,mx,mid,w[m],v[m],l[m],r[m];
7ll s,sum[m],num[m];
89 ll abs(ll x)
1011 ll cal(int
p)12
2021
intmain()
2232
if (cal(h)-sh;
33 printf("
%lld\n
",abs(min(s-cal(k),cal(k-1)-s)));
34return0;
35 }
聰明的質監員 NOIP2011
時間限制 1 s 記憶體限制 128 mb 問題描述 小 t 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有n 個礦石,從 1 到n 逐一編號,每個礦石都有自己的重量wi 以及價值vi 檢驗礦產的流程是 1.給定 m個區間 li,ri 2.選出乙個引數w 3.對於乙個區間 li,ri 計...
NOIP 2011 聰明的質監員
小t 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以及價值vi 檢驗礦產的流程是 1 給定m 個區間 li,ri 2 選出乙個引數 w 3 對於乙個區間 li,ri 計算礦石在這個區間上的檢驗值yi 這批礦產的檢驗結果y...
NOIP 2011 提高組 聰明的質監員
二分 字首和 因為w有已知範圍,即 min 1,max 1 且它會y隨著w的增大而減小,隨著w的減小而增大,所以顯然可以二分。二分的時候區間肯定不能直接列舉了,對於乙個區間的求和以及滿足個數的求解,我們用2個字首和處理即可。可能你們有人會想題目是 s y 那麼二分是否能保證最優呢?實際上是可以的,當...