聰明的質監員

2021-08-29 20:10:54 字數 881 閱讀 6001

本題是乙個比較明顯的二分題,顯然可以看出來這個標準值s是可以二分的,之後如果暴力o(nmlog1e6)就是50分。

但我們顯然不用暴力,這裡我們可以先預掃一遍陣列,並用字首和存w和v,之後再乙個o(m)暴力判斷就可以了。

和大於標準時加大l以加大mid,小於時減少r。

並一定要注意l和r的初始大小,l為所有值中最小-1雖然貌似不減也可以過,r為最大值+1。

#includeusing namespace std;

const int maxn=200010;

int w[maxn],v[maxn],l[maxn],r[maxn];

long long pre_n[maxn],pre_v[maxn];

long long y,s,sum;

int n,m,mx=-1,mn=2147483647;

bool check(int w)

for(int i=1;i<=m;i++)

y+=(pre_n[r[i]]-pre_n[l[i]-1])*(pre_v[r[i]]-pre_v[l[i]-1]);

sum=llabs(y-s);

if(y>s) return true;

else return false;

}int main()

for(int i=1;i<=m;i++)

scanf(" %d %d",&l[i],&r[i]);

int left=mn-1,right=mx+2,mid;

long long ans=999999999999999;

while(left<=right)

printf("%lld",ans);

return 0;

}

聰明的質監員

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

聰明的質監員

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

聰明的質監員題解

原題 洛谷p1314 題解 這道題屬於典型的二分 w越小,y越大那麼就直接做就完事了唄。注意一下幾點 1.開long long 2.使用字首和,否則可能會超時 include using namespace std int n,m,w 200005 v 200005 l 200005 r 20000...