Noip 2016 提高組第二試 蚯蚓

2021-07-25 10:48:02 字數 2338 閱讀 7167

蛐蛐國裡現在共有n只蚯蚓(n為正整數)。每只蚯蚓擁有長度,我們設第i只蚯蚓的長度為a_i(i=1,2,…,n),並保證所有的長度都是非負整數(即:可能存在長度為0的蚯蚓)。每一秒,神刀手會在所有的蚯蚓中,準確地找到最長的那乙隻將其切成兩半。神刀手切開蚯蚓的位置由常數p決定,設這只蚯蚓長度為x,神刀手會將其切成兩隻長度分別為[px]和x-[px]([c]表示對c向下取整)的蚯蚓。特殊地,如果這兩個數的其中乙個等於0,則這個長度為0的蚯蚓也會被保留。此外,除了剛剛產生的兩隻新蚯蚓,其餘蚯蚓的長度都會增加q(是乙個非負整常數)。蛐蛐國王決定求助於一位有著洪荒之力的神秘人物,但是救兵還需要m秒才能到來……(m為非負整數)蛐蛐國王希望知道這m秒內的戰況。具體來說,他希望知道:m秒內,每一秒被切斷的蚯蚓被切斷前的長度(有m個數)m秒後,所有蚯蚓的長度(有n+m個數)。
第一行包含六個整數n,m,q,u,v,t,其中:n,m,q的意義見問題描述;u,v,t均為正整數;你需要自己計算p=u/v(保證0 < u < v)t是輸出引數,其含義將會在輸出格式中解釋。

第二行包含n個非負整數,為ai,a2,…,an,即初始時n只蚯蚓的長度。

第一行輸出[m/t]個整數,按時間順序,依次輸出第t秒,第2t秒,第3t秒……被切斷蚯蚓(在被切斷前)的長度。 

第二行輸出[(n+m)/t]個整數,輸出m秒後蚯蚓的長度;需要按從大到小的順序依次輸出排名第t,第2t,第3t……的長度。

即使某一行沒有任何數需要 輸出,你也應輸出乙個空行。

請閱讀樣例來更好地理解這個格式。

3 7 1 1 3 1

3 3 2

3 4 4 4 5 5 6

6 6 6 5 5 4 4 3 2 2

1<=n<=10^5

0< m< 7*10^6

0< u< v<10^9

0<=q<=200

1< t<71

0< ai<10^8。

比賽時用了線段樹,但是寫的太簡單粗暴。。。tle了

為了找出每秒最長的那乙個蚯蚓,開3個佇列。

第乙個為從大到小排序後的a陣列。

第二個為每次切掉的一段。

第三個為切掉剩下的部分。

因為每次都是切最大的,三個佇列都是單調的,←_←正確性顯然。。每次取最長的隊頭就可以了。變長的計算可以保持相對長度不變,每次切時先還原,在減去,輸出時再加上。

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=100010;

const

int m=8000100;

long

long n,m,q,u,v,t;

long

long a[m],b[m],c[m];

long

long h1,h2,h3,t1,t2,t3;

bool comp(long

long a,long

long b)

void init()

for (i=1;i<=n;i++) a[i]=w[i];

}void change(int tmp,long

long x,long

long ti)

int main()

if (b[h2]>=a[h1] && b[h2]>=c[h3])

if (c[h3]>=a[h1] && c[h3]>=b[h2])

}

printf("\n");

/*for (i=1;i<=t2;i++) printf("%lld ",b[i]);

printf("\n");

for (i=1;i<=t3;i++) printf("%lld ",c[i]);

printf("\n");*/

for (i=h1;i<=t1;i++) a[i]=a[i]+m*q;

for (i=h2;i<=t2;i++) b[i]=b[i]+m*q;

for (i=h3;i<=t3;i++) c[i]=c[i]+m*q;

for (i=1;i<=n+m;i++)

if (b[h2]>=a[h1] && b[h2]>=c[h3])

if (c[h3]>=b[h2] && c[h3]>=a[h1])

}return

0;}

各種神奇錯誤,賦了初值的變數值執行時改變了。。。(大坑啊啊啊啊啊)

要開long long

NOIP2016提高組總結

這次noip可以用幾個字來形容 浪的飛起,頹的不行。中午從校門出發,在車上睡了半個車程。4 00左右,霧比較大,遠處的小蠻腰若隱若現。你好,廣州。5 00,symbol叫我們去看考場,結果被拒在門外,然後大家都散了。我與其它幾位小夥伴匆匆吃完飯,回到酒店,該看電視看電視,中途開會,提醒我們一些注意事...

NOIP2016 提高組 總結

這是倒數第三次noip了。今年我初三。去年的傷痕還未褪去,我在比賽前意識到,當務之急其實是鞏固基礎而非深究一些難題。於是賽前兩周,我認真讀了白書的前面部分,尤其重點練習了dp。dp作為基礎演算法之一,其靈活性極高,所以可以出得很難,也是各種比賽的寵兒。練好dp是尤為重要的。賽前好幾場模擬賽都做得很爛...

NOIP2016提高組總結

來到了廣州,不錯啊,旁邊的飯店很多,可以好好的腐一下了。一群人走進了乙個小巷,住進了乙個七天酒店,發現房間裡面好小啊。吃完飯後,一直都在腐敗。通知開會的同學並沒有到我們的房間來,結果在結束開會的前幾分鐘我們才過去。早早的睡了 第一天,狀態不錯。早早的到了考場。開啟c 發現除錯不了,嚇了我一大跳。做到...