description
小軒軒是一位非同一般的的大農(lao)場(si)主(ji),他有一大片非同一般的農田,並且坐落在一條公路旁(可以認為是數軸),在他的農田裡種的東西也非同一般——不是什麼水稻小麥,而是妹子。
在小軒軒的細心培育下,他的大片農田都要結出妹子啦!但是他的農田分布實在是太廣闊了,他擔心自己的妹子會令路過的人想入非非,於是他想要把所有農田上的妹子都集中到乙個倉庫裡面,貯存起來。可是妹子太多,他叫來了一輛卡車,這輛卡車剛好可以裝滿乙個農田的妹子,並且在滿載的情況下,運滿滿一卡車妹子走1公尺的費用是1元。由於小軒軒技術精湛,他的每個農田產量都是一樣的。即把乙個農田的妹子都運到倉庫費用為農田與倉庫座標差值的絕對值。理想很美好,但現實很殘酷——小軒軒還沒有想好在什麼位置搭建他的倉庫,而且他的運輸費用是有限的。
請你幫忙計算一下,在什麼位置搭建倉庫,使得小軒軒能收穫的妹子最多。(倉庫的位置可與農田的位置重合,並且在公路長度範圍內)。
input
第一行三個正整數 n,l,w,分別表示農田個數、公路總長度、總錢數。
接下來 n 行,每一行描述乙個農田的座標。(可能有多個農田位於同一位置)
output
乙個整數,小軒軒最多能夠收藏多少個農田的妹子。
sample input
5 23 18
4 6
14 18
22sample output
data constraint
對於 30% 的資料,n≤1000,l≤10000。
對於 60% 的資料,n≤10000,l≤1000000。
對於 100% 的資料,n≤100000,l≤1000000000,w≤2000000000000000。
先普及一波常識:選擇的點一定是在乙個妹子倉庫同一位置的
所以我們可以列舉右端點,然後二分一下左端點
並不想說具體怎麼做qaq
var
a,sum:array[0..100005]of int64;
n,l,w,k,x,y,x1,y1,ans,mid,r:int64;
i,j:longint;
procedure
qsort
(l,r:longint);
var i,j,mid:longint;
begin
i:=l;
j:=r;
mid:=a[(i+j) div
2]; repeat
while a[i]do inc(i);
while a[j]>mid do dec(j);
if i<=j then
begin
a[0]:=a[i];
a[i]:=a[j];
a[j]:=a[0];
inc(i);
dec(j);
end;
until i>j;
if ithen qsort(i,r);
if lthen qsort(l,j);
end;
function
check
(x,y:int64):boolean;
var mid,pp,t1,t2:int64;
begin
mid:=(x+y) div
2; pp:=0;
t1:=mid-x+1;
pp:=pp+t1*a[mid]-(sum[mid]-sum[x-1]);
t1:=y-mid;
pp:=pp-t1*a[mid]+(sum[y]-sum[mid]);
if pp<=w then
exit(true);
exit(false);
end;
begin
// assign(input,'t3.in'); reset(input);
readln(n,l,w);
for i:=1
to n do
read(a[i]);
readln;
qsort(1,n);
for i:=1
to n do sum[i]:=sum[i-1]+a[i];
ans:=1;
for i:=2
to n do
begin
l:=1;
r:=i-1;
while ldo
begin
mid:=(l+r) div
2; if check(mid,i) then r:=mid else l:=mid+1;
end;
if check(l,i)=false
then inc(l);
if i-l+1>ans then ans:=i-l+1;
end;
writeln(ans);
// close(input);
end.
NOIP2016提高組模擬 積木
比賽的時候用了個神奇的小暴力,本來打算拿40分,沒想到暴力出奇蹟,隨機資料下表現優良,居然碾過去了。暴力方法不講,只貼 僅供對拍。正解顯然要用狀態壓縮 看資料範圍 設fs i,0 1 2 s表示當前已選擇的積木集合,i表示在最上方的積木編號,0 1 2表示最上方的積木哪面朝上。轉移方程容易推導。暴力...
計數 NOIP2016提高A組模擬7 15
樣例輸入 2 10 樣例輸出 90資料範圍 剖解題目 題目說的很明了了。思路 求方案數,一般會設計道dp,規律之類的。解法 數字dp,設f i j 表示當前到了第i位,這一位的數字是j的方案數。自然有 f i j f i 1 l f i j 0 l k 且 l 0 and j 0 看到這位數,很明顯...
NOIP2016提高A組模擬9 2 單峰
問1 n,n個數的全排列中有多少個滿足單峰序列的性質,並把答案mod 1e9 7 這題還是很簡單的,一開始打了乙個50分的做法,然後發現答案就是2n 1,然後沒有發現輸入也會爆,於是就得了50分 我們容易發現峰一定是最大的那個數,我們把峰放到每乙個位置上,然後在往峰的左邊隨便填一些數,每種填數的方法...