noip day2 聪明的质检员
今天做了一道noip的题目
首先第一眼看出可用二分,因为此题具有单调性(自己画图像证明);
1,打了个裸的,对了6个。
后来在欧少的提醒下写了前缀和,
然后附上欧少的代码————————个人的有点丑就不发了
var n,m,ss,ans,min:int64; j:longint; g,s,w,v,q,p:array[-1..200010] of int64; l,r,fk:int64; begin readln(n,m,ss); for j:=1 to n do readln(w[j],v[j]); for j:=1 to m do readln(p[j],q[j]); l:=0; r:=1000000000; min:=-1; while r>l do begin fk:=(l+r)div 2; g[0]:=0; s[0]:=0; ans:=0; for j:=1 to n do if w[j]>=fk then begin g[j]:=g[j-1]+1; s[j]:=s[j-1]+v[j]; end else begin g[j]:=g[j-1]; s[j]:=s[j-1]; end; for j:=1 to m do ans:=ans+(g[q[j]]-g[p[j]-1])*(s[q[j]]-s[p[j]-1]); if ((min=-1)or(abs(ans-ss)<min)) then min:=abs(ans-ss); if ans>ss then l:=fk+1 else r:=fk; end; writeln(min); end.
浙公网安备 33010602011771号