牛客練習賽25 F 青蛙 貪心,尺取

2021-10-12 08:29:05 字數 990 閱讀 4630

傳送門

我是個fwfw

fw由於第1

11塊石頭有無限的青蛙

所以首先把所有a[i

]−a[

1]

<=d

a[i]-a[1]<=d

a[i]−a

[1]<=d

的石頭都佔乙個青蛙不會使答案邊劣

那麼現在[1,

r]

[1,r]

[1,r

]都有乙隻青蛙

這些青蛙,肯定是最左邊的青蛙最容易被拋棄

那麼嘗試把最左邊的青蛙跳到r+1

r+1r+

1塊石頭去

如果不行,就嘗試下乙隻青蛙…這樣不會使答案變劣

正確性??

假如使用第r+1

r+1r+

1塊石頭,那麼讓最左端的青蛙跳過去一定是最優秀的

假如不使用第r+1

r+1r+

1塊石頭,而是跳到大於r+1

r+1r+

1的第j

jj塊石頭

其實這是沒有必要的。我們完全可以把r+1

r+1r+

1作為中間的跳板,然後跳到jjj

這樣一定優與不使用r+1

r+1r+

1 那麼就尺取就好了…

#include

using

namespace std;

const

int maxn =

3e5+10;

int t,n,m,a[maxn]

,d;int

main()

while

( r>=l&&r<=m-1)

for(

int i=l;i<=r;i++)if

( a[m]

-a[i]

<=d ) ans++

; cout << ans << endl;

}}

牛客練習賽25

我好菜啊。本來是奔著t恤去的 要求 ans ni 1 j i1 ans i 1n j i 1注意到我們並不需要什麼奇蹟銀殼,只需要交換列舉主體就可以 n做了 include include define rep i,st,ed for int i st i ed i typedef long lon...

牛客練習賽58 F

求帶單點修改的樹上兩點間任意子路徑長異或和。路徑長等於路徑上所有異或和。簡單模擬一下,可以發現。奇數情況下,答案是偶數點異或和。偶數情況下,就是正常的異或和。偶數點異或和也很容易處理。分深度奇偶樹狀陣列即可。但是這是對於鏈的,不能直接dfs dfsdf s序,需要剖分一下。但是我不會,所以去學了一下...

20180824牛客練習賽25 A

q次詢問,每次給乙個x,問1到x的因數個數的和。輸入描述 第一行乙個正整數q 接下來q行,每行乙個正整數 x 輸出描述 共q行,每行乙個正整數表示答案 輸入 4 1 2 3 10 輸出 1 3 5 27 備註 1 q 10 1 x 1e9 方法1 尤拉篩列舉 絕逼炸了,無論是空間還是時間方法2 列舉...