luogu P2048 NOI2010 超級鋼琴

2022-02-05 07:22:55 字數 822 閱讀 7361

傳送門

編號好評

先把所有數記個字首和,然後對於某乙個右端點\(r(r\geq l)\),能計入答案的\(l\)的範圍為\([\max(r-r,0),r-l]\)

可以開乙個大根堆,先對於所有右端點\(r\),加入\(pre_r-\min(pre_)\),然後每次取出堆頂加入答案,彈掉堆頂,同時如果這是堆頂對應右端點減第\(k\)小的左端點的值,就把右端點減第\(k+1\)小的左端點的值加入堆中,這裡我們可以使用主席樹查詢該區間內的任意第\(k\)小值

#include#define ll long long

#define il inline

#define re register

#define db double

#define eps (1e-7)

using namespace std;

const int n=500000+10;

const ll inf=1ll<<45;

il ll rd()

while(ch>='0'&&ch<='9')

return x*w;

}#define mid ((l+r)>>1)

int s[n*20],ch[n*20][2],rt[n],tt;

int n,kk,l,r,a[n],b[n],pp[n][3];

il void inst(int p)

il void po()

}int q;

int main()

printf("%lld\n",ans);

return 0;

}

luoguP2048 NOI2010 超級鋼琴

解析 先考慮暴力 將每個區間求出來,放進乙個堆裡,取出前k個就是答案。期望得分 20,原因 tle code 對,我真寫了 includeusing namespace std const int maxn 5 1e5 10 int n,k,l,r,ans int sum maxn priority...

P2048 NOI2010 超級鋼琴

小z是乙個小有名氣的鋼琴家,最近c博士送給了小z一架超級鋼琴,小z希望能夠用這架鋼琴創作出世界上最美妙的 這架超級鋼琴可以彈奏出n個音符,編號為1至n。第i個音符的美妙度為ai,其中ai可正可負。乙個 超級和弦 由若干個編號連續的音符組成,包含的音符個數不少於l且不多於r。我們定義超級和弦的美妙度為...

P2048 NOI2010 超級鋼琴

和十二省聯考d1t2相似的思路 用堆維護最大值,取出乙個位置之後把這個位置的下乙個值插入堆 注意插入的數有負數,並且開long long include include include include define int long long using namespace std struct q...