聰明的質監員題解

2021-10-19 19:43:58 字數 1084 閱讀 1121

原題:洛谷p1314

題解

這道題屬於典型的二分:w越小,y越大那麼就直接做就完事了唄。注意一下幾點:

1.開long long

2.使用字首和,否則可能會超時

**

#include

using

namespace std;

int n, m, w[

200005

], v[

200005

], l[

200005

], r[

200005

], max;

int dp1[

200005]=

;//dp1表示大於w的數量字首和

long

long dp2[

200005]=

, ans =0;

//dp2表示檢驗值字首和

long

long s;

long

longy(

int w)

for(

int i =

1; i <= m; i++

)return ans;

}int

half

(int l,

int r)

int mid =

(l + r)/2

;if(y

(mid)

> s)

return

half

(mid, r)

;return

half

(l, mid);}

intmain()

for(

int i =

1; i <= m; i++

) cin >> l[i]

>> r[i]

;int w =

half(1

, max)

;printf

("%lld"

,abs(y

(w)- s));

return0;

}

聰明的質監員

noip2011 day2 t2 題目描述 小 t 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有n 個礦石,從1到n 逐一編號,每個礦石都有自己的重量wi 以及價值vi。檢驗礦產的流程是 見圖 若這批礦產的檢驗結果與所給標準值s 相差太多,就需要再去檢驗另一批礦產。小t不想費時間去檢驗...

聰明的質監員

本題是乙個比較明顯的二分題,顯然可以看出來這個標準值s是可以二分的,之後如果暴力o nmlog1e6 就是50分。但我們顯然不用暴力,這裡我們可以先預掃一遍陣列,並用字首和存w和v,之後再乙個o m 暴力判斷就可以了。和大於標準時加大l以加大mid,小於時減少r。並一定要注意l和r的初始大小,l為所...

聰明的質監員

字首和 二分答案的一道好題。不難看出這個w和礦石的重量是有關係的。礦石的重量的最大值和最小值可以記錄出來,這樣w便有界。根據題意w所在區間顯然可以單調,所以可以使用二分進行求解。我們二分w,然後去計算以這個w為答案的值與標準值相比較。二分的check函式用字首和維護就可以。通常的做法是開兩個陣列,乙...