傳送門
我是個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 列舉...