NOIP2016提高組day2 蚯蚓

2022-08-18 05:12:10 字數 1594 閱讀 4701

本題中,我們將用符號 lcj 表示對 c 向下取整,例如: l3.0j = l3.1j = l3.9j = 3 。 蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去 請神刀手來幫他們消滅蚯蚓。

蛐蛐國裡現在共有 n 只蚯蚓( n 為正整數)。 每只蚯蚓擁有長度,我們設第 i 只匠 蚓的長度為 ai ( i = 1, 2, . . . , n ),並保證所有的長度都是非負整數(即:可能存在長度為 0 的蚯蚓)。

每一秒,神刀手會在所有的蚯蚓中,準確地找到最長的那乙隻(如有多個則任選 乙個)將其切成兩半。 神刀手切開蚯蚓的位置由常數 p (是滿足 0 < p < 1 的有理數) 決定,設這只蚯蚓長度為 x ,神刀手會將其切成兩隻長度分別為 lpxj 和 x − lpxj 的匠 蚓。特殊地,如果這兩個數的其中乙個等於 0 ,則這個長度為 0 的蚯蚓也會被保留。此 外,除了剛剛產生的兩隻新蚯蚓,其餘蚯蚓的長度都會增加q(是乙個非負整常數)。

蛐蛐國王知道這樣不是長久之計,因為蚯蚓不僅會越來越多,還會越來越長。蛐蛐國王決定求助於一位有著洪荒之力的神秘人物,但是救兵還需要 m 秒才能到來. . . . . . ( m 為非負整數)

蛐蛐國王希望知道這 m 秒內的戰況。 具體來說,他希望知道: • m 秒內,每一秒被切斷的蚯蚓被切斷前的長度(有 m 個數): • m 秒後,所有蚯蚓的長度(有 n + m 個數)。 蛐蛐國王當然知道怎麼做啦! 但是他想考考你. . . . . .

這題很坑爹,

假設有兩個數x、y,先後被切(x>y),那麼

分別分成xp,x(1-p),yp,y(1-p)。

那麼會先切那條呢?

發現,因為增長的速度一樣,所以就只比較切完y之後。

\(x:xp+q\)

\(y:(y+q)p=yp+qp\)

顯然$$xp+q>yp+qp$$

於是將xp放在yp前面

x(1-p),y(1-p)同理。

那麼我們開三個不上公升佇列,

第乙個記錄原來的蚯蚓,

第二個記錄乘以p的蚯蚓

第三個記錄乘以(1-p)的蚯蚓,

在記錄每條就要入佇列的時間,就可以求出增加的長度

每次比較三個佇列的隊首,取最大的值x的切。

將xp加入第二個佇列的隊尾

將x(1-p)加入第三個佇列的隊尾

(第二個第三個佇列保證單調,上面證明了)

#include #include #include #include #include #include #include const int maxlongint=2147483647;

const int mo=1000000007;

const int n=7100005;

using namespace std;

struct ddx

d[3][n];

int s[3],t[3],n,m,tt,q,v,u;

bool cmp(ddx x,ddx y)

int get(int i,int x)

int compete(int x)

return pos;

}int main()

cout

}

NOIP 2016 提高組 Day2 組合數問題

是我想起了有一年考過相似的題目 當時用的是楊輝三角。思路 遞推 矩陣字首和 關於矩陣字首和 c n,m c n 1,m c n 1,m 1 就可以直接遞推出2000以內的所有的組合數。而我們只需要判斷有多少個點對滿足是k的倍數,很容易想到只要對k取模,對於為0的c i,j 是肯定滿足是k的倍數的。因...

NOIP2016提高組 day2 組合數問題

總所周知 階乘int到14就爆了long long到20也就爆了,所以說直接存肯定是不行的 在觀察一下題目發現試求組合數是k的倍數,所以說可以把k作為mod,餘數為零肯定就是k的倍數啦,否則不是。又因為由二項式定理 易得二項式展開的每一項就包涵組合數的答案。我們又已知楊輝三角其實就是二項式的係數恰好...

憤怒的小鳥(NOIP2016提高組Day2T3)

題目描述 kiana最近沉迷於一款神奇的遊戲無法自拔。簡單來說,這款遊戲是在乙個平面上進行的。有一架彈弓位於 0,0 處,每次kiana可以用它向第一象限發射乙隻紅色的小鳥,小鳥們的飛行軌跡均為形如y ax 2 bx的曲線,其中a,b是kiana指定的引數,且必須滿足a 0。當小鳥落回地面 即x軸 ...