NOIP2016提高A組五校聯考4 ksum

2021-07-23 13:25:35 字數 908 閱讀 3024

發現,當子段[l,r]被取了出來,那麼[l-1,r]、[l,r+1]一定也被取了出來。

那麼,首先將[1,n]放入大頂堆,每次將堆頂的子段[l,r]取出來,因為它是堆頂,所以一定是最大的子段,輸出它,並將[l+1,r]和[l,r-1]放進堆中。

一共就只用做k次就可以了。

#include 

#include

#include

#include

#include

#include

#include

const

int maxlongint=2147483647;

const

int mo=1000000007;

const

int n=100005;

using

namespace

std;

long

long n,m,a[n],sum[n],t[n*3][3],tot=1;

int swap(int x,int y,int z)

int up(int x)

}int down(int x)

else

if(s1<=tot)

s=x*2,s1=x*2+1;

}}int insert(int x,int y)

int cut()

int main()

tot=1;

t[tot][0]=1;

t[tot][1]=n;

t[tot][2]=sum[n]-sum[0];

while(m--)

}

NOIP2016提高A組五校聯考1 道路規劃

我們考慮,當現在有乙個合法的集合時,如何往裡面增加乙個點,使這個集合仍然合法。假設現在有乙個合法的集合,那麼當我們加入乙個點,它的道路穿過來整個集合,那麼 然後搞一遍最長下降子串行就可以了。include include include include include const int maxlo...

NOIP2016提高A組五校聯考1 挖金礦

剛看到這題時,還在想怎麼貪心,然後很快的打完之後發現貪心是錯的。然後仔細的看了看範圍,哈哈,這不是二分嗎。二分出乙個mid,然後在所有行裡面用mid j 字首和然後找乙個最大值。最後把這些最大值加起來,判斷一下就好了。include include include include include i...

NOIP2016提高A組五校聯考1 挖金礦

答案,保留4位小數 4 3 4 3 3 5 1 6 2 6 1 3 2 9 4.4286 n m 100000 很簡單的一道題 設sum i j 表示第i列向下挖j行的字首和 假設第i列挖h i 行 設二分的答案是m,答案如果合法,那麼 n i 1s um i h i ni 1 h i m 移項 i...