• 沒有找到結果。

2021 網際網路程式設計全國⼤賽⾼中組網路賽

N/A
N/A
Protected

Academic year: 2023

Share "2021 網際網路程式設計全國⼤賽⾼中組網路賽"

Copied!
26
0
0

加載中.... (立即查看全文)

全文

(1)

2021 網際網路程式設計全國⼤賽

⾼中組網路賽

• 本次⽐賽共9題,含本封⾯共26⾴。

• 全部題⽬的輸⼊都來⾃標準輸⼊。輸⼊中可能包含多組輸⼊,以題⽬敘述為主。

• 全部題⽬的輸出皆輸出到螢幕(標準輸出)。

輸出和裁判的答案必須完全⼀致,英⽂字⺟⼤⼩寫不同或有多餘字元皆視為答題錯誤。

• ⽐賽中上傳之程式碼,使⽤C 語⾔請⽤.c為副檔名;使⽤C++ 語⾔則⽤.cpp 為副檔 名。

• 使⽤ cin輸⼊速度遠慢於 scanf輸⼊,若使⽤需⾃⾏承擔 Time Limit Exceeded的⾵

險。

• 任何題⽬內提到的「⼀⾏」,皆代表以換⾏字元「\n」結尾的字串。

• 部分題⽬有浮點數輸出,會採容許部分誤差的⽅式進⾏評測。⼀般來說「相對或絕對誤差 不超過ϵ皆視為正確」,ϵ值以題⽬敘述為主。

舉例來說,假設 ϵ= 106a 是正確答案,b是你的答案,如果符合 max(|a|,|b|,1)|ab| 106, 就會被評測程式視為正確。

Problem Problem Name Time Limit Memory Limit A 殿壬的飲料王國 1 s 1024 MB

B ⼩P打仗 2 s 1024 MB

C 箭頭謎題 1 s 1024 MB

D 紗霧與正宗 6 s 1024 MB E 計算機結構 12 s 1024 MB

F 隨機排序 3 s 1024 MB

G 陣列刪除 1 s 1024 MB

H 殿壬愛字串 2 s 1024 MB

I 幸福感 3 s 1024 MB

(2)

2021 網際網路程式設計全國⼤賽 輸⼊輸出範例

C程式範例:

1 #include <stdio.h>

2 int main()

3 {

4 int cases;

5 scanf("%d", &cases);

6 for (int i = 0; i < cases; ++i)

7 {

8 long long a, b;

9 scanf("%lld %lld", &a, &b);

10 printf("%lld\n", a + b);

11 }

12 return 0;

13 }

C++程式範例:

1 #include <iostream>

2 int main()

3 {

4 int cases;

5 std::cin >> cases;

6 for (int i = 0; i < cases; ++i)

7 {

8 long long a, b;

9 std::cin >> a >> b;

10 std::cout << a + b << std::endl;

11 }

12 return 0;

(3)

A. 殿壬的飲料王國

Problem ID: drinks

殿壬是個天才兒童,他在⼀個⽉⼤的時候就學會數數、六個⽉⼤的時候就學會乘法跟除 法、⼀歲時學會寫程式、⼀歲⼜六個⽉時養了可愛的拉布拉多、⼀歲⼜⼗個⽉時養了可愛的貓 咪、兩歲時發明了「吃餅乾」的遊戲、三歲⼜三個⽉⼤時成功地對貓咪做了排序。現在要講的 是殿壬三歲⼜四個⽉的故事。

殿壬在三歲⼜四個⽉的時候創⽴了⼀個飲料王國,這個王國⼀共有N 種⾯額的貨幣,⾯額

⼤⼩分別為1,2, . . . , N 元。某⼀天,王國中的N ×M 位⼩朋友想⼀起去飲料王國中最有名的 飲料店「億園」買飲料,「億園」之所以有名是因為他販售了史上最好喝的飲料「QQ捏捏好喝 到殿壬茶」,⽽且只需要花1元就能購買。這N ×M 位⼩朋友中,有M 位恰有⼀張⾯額為 1 元的貨幣、M 位⼩朋友恰有⼀張⾯額為2元的貨幣、· · ·M 位⼩朋友恰有⼀張⾯額為N 元的 貨幣。這N ×M 位⼩朋友都想去買「QQ捏捏好喝到殿壬茶」,然⽽因為⼈數實在太多,殿壬 只好將⼩朋友們分成紅⽩兩隊,讓紅隊的⼈先去買飲料,等紅隊的所有⼈買完再讓⽩隊的⼈去 買飲料。已知殿壬在幫⼩朋友們分完隊伍後,紅⽩兩隊當中,分別有ai, bi位⼩朋友持有i元貨 幣。

⾝為「億園」飲料店唯⼀店員的你,每次只能接受⼀張訂單,將⼿上唯⼀⼀張訂單處理完 後才能受理下⼀位客⼈點餐。然⽽店⾯開張當天,你發現了⼀個⼤問題,那就是收銀機完全沒 有任何的零錢,也就是沒有辦法找零。無奈之下你只能使⽤客⼈們⽀付的零錢進⾏找零,於是 你希望⼩朋友們能以「完美的」順序排隊,使得每⼀位⼩朋友在點餐時,你都有⾜夠的零錢可 以⽀付找零,也就是說,如果⼀位⼩朋友⽀付了⾯額為x元的貨幣,你必須能夠恰好找給他 x−1元。

好奇⼼旺盛的你,想知道⼩朋友們有幾種「完美的」排隊順序可以讓你順利的為每位⼩朋 友進⾏找零。在兩種排隊順序中,只要存在正整數k 使得你在這兩個排隊順序中服務的第k

⼩朋友是不同⼈,那它們就是不相同的排隊順序。因為答案可能很⼤,所以只需要計算其除以 998244353之後的餘數就可以了。

Input

輸⼊第⼀⾏包含兩個正整數N, M

接下來共有N ⾏,其中第i⾏包含兩個整數ai, bi,分別代表紅隊與⽩隊中持有i元貨幣的

(4)

• 1≤N ×M 106

• 0≤ai, bi ≤M

ai+bi =M

Output

請輸出⼀個整數,代表⼀共有幾種「完美的」排隊順序除以998244353後的餘數。

Notes

在Sample Input 1中,假設x1, x2 是兩位恰有⼀張⾯額為 1元的⼩朋友,y1, y2 是兩位恰 有⼀張⾯額為2元的⼩朋友,並且{x1, x2, y1}隸屬於紅隊,{y2}隸屬於⽩隊,那麼所有完美的 排隊順序如下:

x1, x2, y1, y2

x2, x1, y1, y2

x1, y1, x2, y2

x2, y1, x1, y2

Sample Input 1 Sample Output 1

2 2 2 0 1 1

4

Sample Input 2 Sample Output 2

3 2 20

(5)

B. ⼩ P 打仗

Problem ID: war

在⼩P國裡,有 N 個⼠兵隨時防守著城牆。由於疫情險峻,所以⼩P決定要替每位⼠兵 施打疫苗。已知第i位⼠兵的防禦⼒為 si,且在施打疫苗後,必須休息ri 天。也就是說,如果 第i位⼠兵在第D天施打疫苗,那在第D, D+ 1,· · · , D+ri1天,都必須休息。

讓我們定義w(i)為所有在第i天不必休息的⼠兵的防禦⼒和。

為了避免新冠肺炎擴散,⼩P在接下來的N 天中,每天必須恰好為⼀位⼠兵施打疫苗,且 每位⼠兵都必須被施打恰⼀劑疫苗。

因為敵⼈每天都有可能攻打過來,所以⼩P想問你,如果敵⼈在第k天攻打過來,那w(k) 最⼤可以是多少?

請對於k = 1,2,3, . . . , N 都輸出⼀個整數代表答案。注意對於每個k ,你可以獨⽴的決定 對於這個k的施打順序。

Input

輸⼊的第⼀⾏有⼀個正整數N,代表有幾名⼠兵。

第⼆⾏有N 個以空格分開的整數s1, s2, . . . , sN,代表第 i個⼠兵的防禦⼒為si。第三⾏有 N 個以空格分開的整數r1, r2, . . . , rN,代表第i個⼠兵打完疫苗要休息ri 天。

• 1≤N 3×105

• 1≤si 109

• 1≤ri ≤N

Output

請輸出N 個以空⽩隔開的整數,第i個整數代表最⼤的w(i)。請注意不要輸出多餘的⾏尾 空⽩。

(6)

Sample Input 1 Sample Output 1 5

1 1 1 1 1 1 5 5 4 4

4 4 3 2 2

Sample Input 2 Sample Output 2

10

20 9 1 38 2 1 3 4 8 23 1 3 3 2 9 9 8 9 10 10

108 108 108 108 108 106 103 99 94 75

(7)

C. 箭頭謎題

Problem ID: arrowpuzzle

OET是⼀位喜愛並且精通放置遊戲的玩家。各式各樣的放置遊戲帶給他快樂。在遊玩「對 數忙碌」的時候,他遇上了⼀個⼩遊戲:箭頭謎題。

在箭頭謎題這個⼩遊戲中,有N 個箭頭由左⾄右排成⼀列。每個箭頭⼀開始可能會是向上 或是向下的,每當你點擊⼀個箭頭,該箭頭以及與其相鄰的所有箭頭的狀態都會被反轉,也就 是說,如果某個箭頭是向下的,那麼直接點擊該箭頭或是點擊任何與其相鄰的箭頭都會使得它 變為向上,反之亦然。遊戲⽬標是在經過⼀系列的點擊操作之後,使得所有箭頭都是向上的,

當你達成這個⽬標就可以得到⼀定的「星星」,是遊戲中的關鍵貨幣。

OET是追求效率的玩家,每有空閒就會遊玩箭頭謎題賺取「星星」。他發現,有時候怎麼 玩都不可能讓所有箭頭都是向上的狀態,只能按「我放棄!」按鈕重新來過。

現在告訴你所有箭頭的初始狀態(向上或是向下),請你幫OET快速辨別他是否有可能完 成這局遊戲,也就是讓所有箭頭都是向上的狀態。

Input

第⼀⾏有⼀個正整數N,表⽰箭頭的數量。

第⼆⾏有⼀個⻑度N 的01字串S表⽰所有箭頭的初始狀態,Si =0表⽰第i個箭頭的狀 態是向上的,Si =1則表⽰第i個箭頭的狀態是向下的。

• 1≤N 3×105

|S|=N, Si ∈ {0,1}

Output

請輸出Yes或No,代表OET是否有可能完成這局遊戲,也就是讓所有箭頭都是向上的狀 態。

(8)

Sample Input 1 Sample Output 1 4

0101

Yes

Sample Input 2 Sample Output 2

2 01

No

Sample Input 3 Sample Output 3

7

1011001

Yes

(9)

D. 紗霧與正宗

Problem ID: sagiri

紗霧與正宗是⼀對感情⾮常好的兄妹。他們除了會⼀起畫漫畫、做家事、看煙⽕之外,還 會⼀起玩撲克牌。

他們玩撲克牌的⽅式很特別,跟⼀般⼈的撲克牌玩法不太⼀樣。

⾸先,紗霧⼿上會先拿著N 張撲克牌,對於第i張撲克牌,紗霧會給他⼀個數值ai ,代表 紗霧對於那張撲克牌的喜好程度。撲克牌的喜好程度可以是正的(代表紗霧喜歡那張撲克牌),

也可以是負的(代表紗霧討厭那張撲克牌),也可以是零(代表紗霧對那張撲克牌沒感覺)。 接著,正宗會與紗霧進⾏K 輪的交易。第i輪交易的進⾏⽅式如下:

• 正宗會給紗霧⼀張喜好程度為bi的牌。

• 紗霧必須丟出⼀張牌。她可以從以下兩個操作中選擇⼀個:

直接把正宗給她的牌丟掉。

把她⼿上的某⼀張牌丟掉,並且把正宗給她的牌放進那張被丟掉的牌的位置。

• 正宗會把紗霧丟掉的牌放進家裡的垃圾桶。

進⾏完K 輪交易,他們會把那 N 張撲克牌按照原本的順序,由左⾄右的放在地板上。接 著,正宗與紗霧會個別拿起⼀枝筆,指向撲克牌中的兩個位置(指向的位置可以⼀樣),並且把 介於那兩個位置中間的撲克牌通通拿出來(包含那兩張被筆指的撲克牌),放進他們的作品之 中。

⽽正宗與紗霧很好奇,他們所有可能的作品之中的撲克牌喜好程度總和,最⼤可以到多

⼤?

Input

輸⼊的第⼀⾏包含⼀個正整數T,代表接下來測試資料的筆數。

每⼀筆測試資料,總共會占三⾏。

(10)

第⼀⾏包含兩個正整數N, K,代表,⼀開始紗霧⼿上的撲克牌數量,以及進⾏交易的次 數。

第⼆⾏包含N 個正整數a1, a2, . . . , aNai 代表紗霧⼿上第i張撲克牌的喜好程度。

第三⾏包含K 個正整數b1, b2, . . . , bKbi 代表正宗在第i輪交易時,會拿出來的撲克牌的 喜好程度。

• 1≤T 106

• 1≤N 106

• 1≤K 106

109 ≤ai, bi 109

• 在這T 筆測試資料中,N 的總和不會超過106

• 在這T 筆測試資料中,K 的總和不會超過106

Output

對於每⼀筆測試資料,請輸出⼀⾏,代表所有可能作品中的喜好程度總和的最⼤值。

Notes

在範例的第⼀組測試資料中,紗霧可以在第⼀輪交易時,把第三張牌換掉。這時候她⼿上 的牌的喜好程度分別就是[1,3,−2,3]。如果他們指向第⼆張牌、第四張牌的話,可以得到喜 好程度總和4,這也是所有喜好程度總和的可能值中,最⼤的那⼀個。

在範例的第⼆組測試資料中,紗霧在第⼀輪交易時,可以直接把正宗給他的牌丟掉。接 著,他們可以指向第⼀張牌、第五張牌,就可以得到喜好程度總和15,這也是所有喜好程度總 和的可能值中,最⼤的那⼀個。

(11)

Sample Input 1 Sample Output 1 2

4 1

-1 3 -6 3 -2

5 1

1 2 3 4 5 -1

4 15

(12)

This page is intentionally left blank.

(13)

E. 計算機結構

Problem ID: architecture

⼩Y是個熱愛學習的資⼯系學⽣,為了確保⾃⼰能夠更有效率地複習,⼩ Y習慣從教授的 投影⽚中擷取精華,製作⾃⼰的筆記。

某⼀天計算機結構(Computer Architecture,臺⼤資⼯系⼤三必修課程)下課後,⼩Y

⼀如往常的打開這天上課的投影⽚打算開始製作筆記。這天的投影⽚上有⼀個重要的圖形,所 以⼩Y 打算將它也畫到⾃⼰的筆記本上。不過⼩Y很快地就遇到了問題:由於投影⽚上教授

⽤了許多種顏⾊來代表圖形中各個不同意義的部分,⼩Y也想在⾃⼰筆記本上使⽤相對應的顏

⾊。可是這個圖形實在太複雜,使得⼩Y不知道要⽤什麼順序跟⽅法來畫它!

投影⽚上的圖形可以被視為⼀個N 個點以及M 條邊的簡單無向圖,每個邊上都有編號為 1到K 的其中⼀種顏⾊。⼩Y也有這 K 種顏⾊的⾊筆。⼀開始,⼩Y的筆記本上已經畫好了 這N 個點,由於⼩Y 是完美主義者,他每次都想要挑⼀個顏⾊,並使⽤這個顏⾊的⾊筆畫⼀

簡單環。如果著⾊的過程中經過了⼀條已經被塗⾊過的邊,那麼舊的顏⾊會被新的顏⾊蓋過 去。

⼩Y不確定在這種只畫簡單環的⽅式下,能不能成功的畫出投影⽚上的圖⽚。請你寫⼀個 程式幫他判斷吧!

⼀個簡單環被定義為⼀串⻑度⼤於3的序列v1, v2, . . . , vc,滿⾜v1 =vcv1, v2, . . . , vc1 兩 兩相異且對於所有的1≤i < c,都存在連接vivi+1 的邊。

Input

輸⼊的第⼀⾏為⼀個正整數T,代表測試資料的數量。

每⼀筆測試資料的第⼀⾏有三個整數N,M,K,分別代表點的數量、邊的數量、以及顏⾊

的數量。接著M ⾏,第i⾏有三個正整數ui,vi,ci,分別代表第i條邊是從第ui 個點連到第vi 個點,且顏⾊為ci

• 1≤T 100

• 1≤N 2000

• 0≤M min(N×(N21),106)

(14)

• 1≤ui ̸=vi ≤N

• 1≤ci ≤K

• 保證輸⼊沒有重複的邊

• 保證T 筆測試資料中N 的總和不超過2000

• 保證T 筆測試資料中M 的總和不超過106

• 保證T 筆測試資料中K的總和不超過2000

Output

輸出T ⾏,每⾏代表⼀筆測試資料的答案:如果⼩Y可以成功畫出這個圖形,輸出Yes, 否則,輸出No。

Notes

對於第三筆範例輸⼊,⼀種合法的畫法是先將環23652塗顏⾊2,接著再將環 12541塗為顏⾊1。

(15)

Sample Input 1 Sample Output 1 3

3 3 1 1 2 1 2 3 1 3 1 1 4 4 2 1 2 1 2 3 1 3 1 1 1 4 2 6 7 2 1 2 1 2 3 2 1 4 1 2 5 1 3 6 2 4 5 1 5 6 2

Yes No Yes

(16)

This page is intentionally left blank.

(17)

F. 隨機排序

Problem ID: randomshuffle

⾝經百戰、參加了各式各樣的程式競賽的⼩Y,今天遇到了⼀個與眾不同的題⽬如下:

「有⼀個1 N 的祕密排列P = [p1, p2, . . . , pN],但你不知道P 確切的排列內容。現在有 M 個線索,每個線索⻑得形如ai < bi 或是ai > bi,代表pai < pbi 或是pai > pbi ,請你輸出 P 到底⻑什麼樣⼦。」

⼩ Y 覺得這題實在太簡單了,瞬間寫完 AC code 並且上傳!然⽽他得到的結果是 WA (Wrong Answer)。⼩Y與他的隊友都覺得很奇怪,⼩Y怎麼可能寫出會WA的code呢?

經過0.1秒的檢查,⼩Y 發現這題並沒有說清楚在P 有多組解的時候要輸出字典序最⼩

或是最⼤的P,或者是輸出任⼀組解。在等待發問被回答的期間,他決定使⽤隨機⼤法來嘗試 直接AC這題。更精確的說,他會在所有符合每⼀個線索的排列當中,均勻隨機的選擇⼀個輸 出。⼩Y 的隊友,⼩P,也是⼀位通靈⼤師,已經猜到主辦單位每⼀筆測試資料的輸⼊了,請 你幫忙計算⼀下,對於某⼀筆輸⼊,⼩Y有多少機率會答對,或者答對的機率太低了。

Input

輸⼊第⼀⾏包含兩個⾮負整數N, M,以空⽩間隔,分別代表P 的⻑度與線索的數量。

接下來M ⾏,第i⾏會是ai>bi或是ai<bi,分別表⽰這個線索是pai > pbi或是pai < pbi

• 1≤N 105

• 0≤M 105

• 1≤ai ≤N

• 1≤bi ≤N

Output

如果完全沒有任何符合所有線索的排列,請你輸出1,代表根本沒有存在符合所有線索 的排列P。如果答對的機率⼩於 1%,請你輸出 0,代表你建議⼩ Y不要⽤隨機來唬爛了。否

(18)

你的答案的絕對或相對誤差不超過106 都會被當作正確。

Sample Input 1 Sample Output 1

3 1 1 < 2

33.3333333333

Sample Input 2 Sample Output 2

7 6 2 > 1 2 < 3 3 < 4 1 > 5 4 < 6 7 > 1

20.0000000000

Sample Input 3 Sample Output 3

3 3 1 < 2 2 < 3 3 < 1

-1.0

Sample Input 4 Sample Output 4

5 0 0.0

(19)

G. 陣列刪除

Problem ID: deleting

這天,你在趕著去參加NPSC (National Party of Super Cat)的路上,就在你快抵達會場 時,⼀隻巨⼤的貓貓神突然降臨在你的⾯前。

「⽤最⼩的花費,刪除掉整個陣列吧!」

這麼說著的貓貓神拿出了⼀個N 個元素的陣列並擺在你眼前,祂向你說明了規則:

• 你每次可以選擇⼀對相鄰的元素對將其刪除,並花費「兩個元素的數值最⼩值」。

• 刪除後,陣列將會合併起來。

• 你必須執⾏ N

2 個操作來將整個陣列刪除,並且所有操作的花費和要最⼩。

不快⼀點完成貓貓神的任務的話,你就⾒不到可愛的貓咪們了,⽽經由你苦苦哀求後,貓 貓神決定讓你找出最⼩的花費和即可,快點完成祂的任務並投向貓咪的懷抱吧!

Input

輸⼊的第⼀⾏有⼀個正整數N,代表陣列的⼤⼩。

第⼆⾏有N 個以空格分開的正整數a1, a2, . . . , aN,代表陣列的內容,ai 代表第i個元素的 數值。

• 1≤N 2×105

N 是偶數

• 1≤ai 109

Output

輸出⼀⾏⼀個正整數,代表欲將整個陣列刪除的最⼩花費。

(20)

Sample Input 1 Sample Output 1 4

1 3 2 4

3

Sample Input 2 Sample Output 2

8

1 9 7 6 8 7 6 3

16

Sample Input 3 Sample Output 3

6

3 1 4 1 5 9

5

(21)

H. 殿壬愛字串

Problem ID: string

殿壬是個天才兒童,他在⼀個⽉⼤的時候就學會數數、六個⽉⼤的時候就學會乘法跟除 法、⼀歲時學會寫程式、⼀歲⼜六個⽉時養了可愛的拉不拉多、⼀歲⼜⼗個⽉時養了可愛的貓 咪、兩歲時發明了「吃餅乾」的遊戲,三歲⼜三個⽉⼤時成功的對貓咪做了排序,三歲⼜四個

⽉時創⽴的飲料王國,販賣了「QQ捏捏好喝到殿壬茶」。現在要講的是殿壬三歲六個⽉⼤時的 故事。

在殿壬三歲⼜六個⽉⼤時,他在地板上撿到⼀組字串A, B

因為A, B 兩個字串⻑的不⼀樣,所以愛好平等的殿壬就很⽣氣,決定要把B 經由⼀系列 的操作變成A

他每次會選定 B 字串上的⼀個字元,並且把他刪掉。也就是說,他每次會選定 i 使得 0≤i <|B|,令B =B0B1B2· · ·Bi1Bi+1Bi+2· · ·B|B|−1,然後把B 變成B

已知殿壬永遠找得到⼀個⽅法把B 變成A,現在殿壬想知道,在把B 變成A所有⽅法 中,若將所有過程中出現的字串蒐集起來,究竟有多少種⻑的不⼀樣的字串呢?

字串X, Y ⻑的不⼀樣,若且唯若|X| ̸=|Y|或存在0≤i <|X|, Xi ̸=Yi。 因為可能有太多種了,所以殿壬只想知道答案除以998244353之後的餘數。

Input

輸⼊的第⼀⾏有⼀個由⼩寫字⺟組成的字串A。輸⼊的第⼆⾏有⼀個由⼩寫字⺟組成的字 串B

• 1≤ |A| ≤100

|A| ≤ |B| ≤10000

• 保證殿壬可以將B 經由⼀系列操作變成A

(22)

Output

輸出只有⼀⾏僅包含⼀個⾮負整數,代表答案除以998244353之後的餘數。

Notes

在範例測試資料2中,殿壬將aba變成a的過程中可以是下列三種的其中⼀種:

• aba aa a

• aba ab a

• aba ba a

不同的字串有a, aa, ab, ba, aba,共5種。

Sample Input 1 Sample Output 1

a ab

2

Sample Input 2 Sample Output 2

a aba

5

(23)

I. 幸福感

Problem ID: happiness

殿壬是個天才兒童,他在⼀個⽉⼤的時候就學會數數、六個⽉⼤的時候就學會乘法跟除 法、⼀歲時學會寫程式、⼀歲⼜六個⽉時養了可愛的拉不拉多、⼀歲⼜⼗個⽉時養了可愛的貓 咪、兩歲時發明了「吃餅乾」的遊戲,三歲⼜三個⽉⼤時成功的對貓咪做了排序,三歲⼜四個

⽉時創⽴的飲料王國,販賣了「QQ捏捏好喝到殿壬茶」,三歲⼜六個⽉時學會與字串平等相 處。現在要講的是殿壬三歲⼜九個⽉⼤時的故事。

在殿壬三歲⼜九個⽉⼤時,住進了CSPN國,在CSPN國,有著⼀種特別的⽣物:PETS。 殿壬認為,與PETS⼀起⽣活,是⼀件⾮常具有幸福感的事情。⽽在⽣活的過程中,殿壬 還發現,如果跟不同的PETS⼀起⽣活,⽣活得到的幸福感會特別⾼!

殿壬想要量化⾃⼰的幸福感,因此他對CSPN國的PETS做出了⼀些分類。在CSPN國裡

⾯,總共有N 個PETS,編號從1到N,對於第i個PETS,殿壬會給他⼀個介於[1, N]之間的 整數ai,代表這個PETS的種類。

接著,殿壬要來定義跟⼀群PETS⽣活可以得到的幸福感。假設殿壬跟第L個PETS到第 R個PETS⼀起⽣活,他得到的幸福感的計算⽅式如下:

• 把aL, aL+1, . . . , aR這些數字蒐集起來

• 如果某種數字出現超過⼀次,把那種數字刪除到只剩⼀個

• 剩下數字的數量,就是殿壬得到的幸福感

例如,如果殿壬跟種類為 [1,2,1]的PETS ⼀起⽣活的話,得到的幸福感是 2,跟種類為 [1,2]的PETS⼀起⽣活的話,得到的幸福感也是2,但跟種類為[1]的PETS⼀起⽣活的話,得 到的幸福感便只有1。

在接下來的Q天內,殿壬每天都想著要跟哪些 PETS⼀起⽣活。在第 i天中,殿壬會特 別想跟第Li 個PETS到第 Ri 個PETS中的其中⼀些PETS⽣活。但是,有選擇障礙的殿壬,

常常不知道要怎麼選擇。於是,他索性隨機選擇滿⾜ Li l r Ri 的 (l, r),並且跟第 l, l+ 1, . . . , r 個PETS⽣活。每個滿⾜條件的(l, r)都有相同的機率被選擇。

⽽殿壬也知道,每天這樣⼦隨機的選擇,很有可能會帶給他隨機的幸福感。於是他很好 奇,每天這樣⼦⽣活下來,每天個別得到的幸福感期望值是多少?

(24)

但是殿壬特別懶得計算這種複雜的問題,於是他找上了你,打算請你告訴他每天的幸福感 期望值。⽽他也知道計算期望值時,浮點數誤差的問題很⿇煩,於是對於第i天,你只要告訴 他第i天的期望值乘上 (RiLi+1)(RiLi)

2 就可以了。可以證明,如此⼀來,你需要告訴殿壬的數 字全部都是整數。

Input

輸⼊的第⼀⾏包含兩個正整數N, Q,分別代表PETS的數量,以及殿壬接下來要度過的天 數。

接下來的⼀⾏,包含N 個正整數a1, a2, . . . , aNai 代表第i個PETS的種類。

接下來的Q⾏,第i⾏包含著兩個正整數Li, Ri,代表殿壬在第i天特別想跟第Li個PETS 到第Ri 個PETS中的其中⼀些PETS⽣活。

• 1≤N ≤Q≤3×105

• 1≤ai ≤N

• 1≤Li ≤Ri ≤N

Output

請輸出Q⾏,第i⾏請輸出第i天殿壬希望你告訴他的數字。

Sample Input 1 Sample Output 1

3 4 1 2 1 1 3 2 3

9 4 1 9

(25)

Sample Input 2 Sample Output 2 7 5

2 4 7 4 3 3 1 1 7

3 6 1 5 2 6 3 4

66 17 31 28 4

(26)

This page is intentionally left blank.

參考文獻

相關文件

明誠高中舉辦2017校際網球單打賽,由全校排名第1至排名第8(各名 次恰1人,無並列)的選手參賽,如果比賽講求實力,不考慮運氣,也 就是排名在前的,對戰必勝,比賽採用單淘汰制,賽程如右圖.若賽程 隨機抽籤決定,則排名第3的選手能參加最後一場的冠亞軍決賽的機率 為... 小惠、阿海、小明和婷婷四個人一起去電影院看鋼鐵人5,已知某一排共有10個相連的空位,

提問: 1.美國為什麼會選擇與中共合作? 2.中美的合作對於臺灣(中華民國)有什麼樣的衝擊與影響 ? 19 世紀的英國首相帕默斯頓( LordPalmerston ):「沒 有永遠的盟友,也沒有永遠的敵人,只有永遠的利益。」 We have no eternal allies, and we have no perpetual enemies.. Our