【SEOI2024】賽題

Jefferyzzzz發表於2024-06-02

SEOI2024 上海市第二中學資訊學比賽

時間:\(2024\)\(5\)\(21\)號 $ 16:45\sim 17:45$

題目名稱 \(二元運算器\) \(修改向量\) \(義大利麵序列\) \(旅途的華章\) \(異色\)
題目型別 傳統型 傳統型 傳統型 傳統型 傳統型
目錄 \(calulator\) \(vector\) \(noddles\) \(journey\) \(color\)
每個測試點時限\(^{[1]}\) \(0.5\) \(1\) \(1.5\) \(2\) \(2\)
記憶體限制 \(64 \ MiB\) $ 128 \ MiB $ $256 \ MiB $ \(512 \ MiB\) \(512 \ MiB\)
測試點數目 \(100\) \(20\) \(25\) \(20\) \(20\)
測試點是否等分
測評方式 \(SUBTASK^{[2]}\) 全文比較\(^{[3]}\) \(SPJ^{[4]}\) 全文比較 \(SUBTASK\)
總分 \(60\) \(100\) \(100\) \(100\) \(100\)

註釋

\([1]\):對於單個測試點而言你的程式執行時間不能超過此限制。

\([2]\):我們採用捆綁測試。只有完整地透過了一個\(SUBTASK\)中的所有資料點,才能得到該\(SUBTASK\)的整體分數。

\([3]\):對選手輸出結果進行過濾行尾空格及文末換行符後的結果與同樣經過過濾後的標準答案進行比較,若完全一致該測試點透過。

\([4]\)\(SPJ\)\(Special Judge\),我們在全文比較的基礎下新增自定義評測指令碼,根據指令碼的判斷結果決定改測試點是否透過,具體判斷方式見所屬題目下方解釋。

注意事項(請仔細閱讀)

  • 請嚴格依據題目所說明的輸入輸出方式讀取資料以及輸出答案。
  • 請及時儲存程式碼,可以使用洛谷的雲剪貼簿,位置在洛谷左側功能\(\rightarrow\)”應用>>"\(\rightarrow\)雲剪貼簿。
  • 對於使用C/C++選手請確保\(main()\)函式返回型別為\(int\)\(signed\),且返回值為\(0\)
  • 因違反以上三點而出現的錯誤或問題,申訴時一律不予受理。
  • 程式可使用的棧空間記憶體限制與題目的記憶體限制一致。
  • 測評機統一採用洛谷標準測評機,具體配置詳見https://www.luogu.com/discuss/86673。
  • 資料中的換行符均為“\n”。

[SEOI] 試機題

題目背景

這是一道試機題,請選手使用自己的程式語言測試輸入輸出,確保正式比賽時輸入輸出不會出現問題。

題目描述

給定\(T\)組資料,每組資料\(n\)個數字,請輸出每組資料的加和。

輸入格式

第一行一個整數\(T\)表示資料組數。
接下來\(T\times 2\)
偶數行一個整數\(n\)表示接下來一組資料的長度。
奇數行\(n\)個數字表示這組資料的值,中間用空格隔開。

輸出格式

一共\(T\)行,每\(i\)行表示第\(i\)組資料的總和。

樣例 #1

樣例輸入 #1

2
3
1 2 3
5
1 2 3 4 5

樣例輸出 #1

6
15

提示

請注意輸入輸出細節,包括對行尾空格以及文末回車的處理,同時注意對同行中用空格隔開的資料的適當處理,輸出時注意不要輸出任何其他字元,我們才用全文比較,僅僅過濾行尾空格以及文末回車,其他任何字元若有不符都將被判錯。

對於\(100\%\)的資料保證\(1\le T\le1000\)\(1\le n \le 1000\)\(-100 \le a_{i} \le 100\)

[SEOI2024 T1] 二元運算器

題目背景

你用過D991CN嗎?就是那個白蓋子的黑色計算器。雖然製作一個實體的計算器非常困難,但是製作一個程式計算給定的數字是非常容易的!由於這是比賽的第一題,你只需要設計一個支援幾種二元運算的簡單計算器即可!

題目描述

你需要完成一個二元運算器,支援一些二元運算。

這個運算器首先會讀取一個Ascii運算子\(opt\),運算子有\(5\)種,“+,-,*,/,%,^",分別代表加,減,乘,除,模(取餘),冪。然後計算器會讀取兩個整數\(num_1\)\(num_2\)。你需要輸出\(num_1 \ opt \ num_2\)的結果。如果運算出現數學錯誤,請輸出”math error"。如果出現小數結果,請四捨五入至整數。對於模運算我們給出的資料保證均非負。

輸入格式

第一行一個Ascii字元,包括“+,-,*,/,%,^”。

第二行兩個參與運算的兩個整數\(num_1\)\(num_2\)。如果是取模運算我們保證給出的資料均非負。

輸出格式

一行,如果出現數學錯誤輸出"math error",否則答案四捨五入至整數的結果。

樣例 #1

樣例輸入 #1

+ 
1 1

樣例輸出 #1

2

樣例 #2

樣例輸入 #2

/ 
3 2

樣例輸出 #2

2

樣例 #3

樣例輸入 #3

/ 
2 0

樣例輸出 #3

math error

樣例 #4

樣例輸入 #4

% 
3 2

樣例輸出 #4

1

提示

對於\(100\%\)的資料,保證$2^{-63}\le \(運算結果\) \le 2^{63}-1$。

子任務編號 特殊性質 分值
Subtask #1 僅包含+,- \(10pts\)
Subtask #2 僅包含*,^ \(10pts\)
Subtask #3 僅包含/,% \(20pts\)
Subtask #4 \(60pts\)

[SEOI2024 T2] Grievous

題目背景

奇異的紫色Arcaea

題目描述

真理便是,這一切都毫無意義

在經歷過這一切後,這位少女嘗試尋找世界上最糟糕的Arcaea,也便是回憶。這種回憶往往孤立存在,且不講究道理(人話:素數),她一共有\(n\)塊Arcaea,每塊Arcaea有一個數值\(k\)(\(k\le 2\times 10^5\)),他希望得到有幾個\(k\)是素數。

輸入格式

第一行 整數\(n\)
第二行\(n\)個整數,分別為每一塊Arcaea的\(k\)

輸出格式

\(k\)為素數的Arcaea個數

樣例 #1

樣例輸入 #1

5
2 3 4 5 6

樣例輸出 #1

3

樣例 #2

樣例輸入 #2

1
1

樣例輸出 #2

0

提示

資料範圍

對於\(100\%\)的資料,保證\(n\le 5000\)\(0<k_{i}\le 10^5\)

[SEOI2024 T3] 修改向量

題目背景

在遙遠的\(k\)維空間,有一位建築工程師GuanGuan。他正在使用一款\(k\)維建模軟體“k-d CAD”,但是\(k\)維時空的建模非常複雜,全部是以向量形式進行編寫的,這使得操作變得十分不方便,於是GuanGuan需要你幫助他程式設計計算出某些操作至少需要進行多少次。

題目描述

現在場景中有一個向量\(A\)與一個向量\(B\),GuanGuan想調整向量\(B\)使得向量\(B\)與向量\(A\)垂直,GuanGuan每次可以增減\(B\)向量中一個維度的值,每次修改不能超過\(|m|\),且每個位置最多隻能被修改一次,請問GuanGuan至少需要多少次操作使得向量\(A\)垂直於向量\(B\),如果無法使得向量\(A\)垂直於向量\(B\),請輸出\(-1\)

輸入格式

第一行兩個整數,分別表示\(k\)\(m\),中間用空格隔開。
第二行\(k\)個整數,描述向量\(A\)
第三行\(k\)個整數,描述向量\(B\)

輸出格式

一個整數,表示最少操作次數。

樣例 #1

樣例輸入 #1

5 1
2 2 2 2 2
-2 3 -2 1 2

樣例輸出 #1

2

提示

\(B\)中第五維與第三維降低1,即可使\(A\cdot B=0\),需要消耗\(2\)次操作,可以證明不存在更少的操作次數。

測試點編號 \(k\le\)
\(1∼5\) $10 $
\(6∼10\) \(5000\)
\(11∼15\) \(5\times 10^4\)
\(16∼20\) \(5\times 10^5\)

對於\(100\%\)的資料保證\(1\le k \le 5\times 10^5\)\(0\le m \le 1000\)\(-100 \le A_i \le 100\)\(-100 \le B_i \le 100\)

[SEOI2024 T4] 義大利麵序列

題目背景

眾所周知,一根義大利麵掰斷後必定會斷裂成隨機的\(3\)段!(具體參見搞笑諾貝爾獎的證明)

題目描述

GuanGuan為了研究義大利麵斷裂對面條美味值的影響,他把一根義大利麵用記號筆劃分成\(n\)小塊(\(3\le n\))。每塊有一個引數\(a_i\)\((-1000\le a_i \le 1000)\)。然後他會把義大利麵橫著扔向地面,據搞笑諾貝爾獎的義大利麵定理,這根義大利麵會等機率以劃分處為界線分裂成均非空的三段。

GuanGuan會扔掉中間一段並將左邊的一段和右邊的一段撿起來烹飪。現定義一根義大利麵貢獻的美味係數為這根麵條剩下的兩段上各自的引數最大值之乘積。GuanGuan想要知道這根義大利麵所貢獻的美味係數的數學期望是多少?

聰明的小傻管管還發現,在\(a_i\)隨機給出且範圍為\([-k,k]\)的情況下,當義大利麵長度趨近於無窮大,這根義大利麵所貢獻的美味係數會不斷趨近於一個整數。他想知道這個整數是多少。

輸入格式

第一行一個整數\(type\)表示輸入型別,如果為\(0\)請計算給定的序列的美味引數期望值,如果為\(1\)請輸出在\(a_i\)隨機給出且範圍為\([-k,k]\)的情況下,當義大利麵長度趨近於無窮大,這根義大利麵所貢獻的美味係數所趨近於一個整數。

如果\(type=0\)

第二行兩個整數,表示\(n\)

第三行\(n\)個整數,表示\(a_i\),中間用空格隔開。

如果\(type=1\)

第二行一個整數表示\(k\)

輸出格式

如果\(type=0\)

輸出一個小數,表示這根義大利麵所共獻的數學期望是多少,與標準答案之差不超過\(10^{-4}\)即正確。

如果\(type=1\)

輸出一個整數,表示在\(a_i\)隨機給出且範圍為\([-k,k]\)的情況下,當義大利麵長度趨近於無窮大,這根義大利麵所貢獻的美味係數所不斷趨近於的一個整數。

樣例 #1

樣例輸入 #1

4
1 2 3 4

樣例輸出 #1

5.333333333
16

提示

有以下三種劃分:

\([1] [2,3] [4]\),貢獻為\(1*4=4\)

\([1] [2] [3,4]\),貢獻為\(1*4=4\)

\([1,2] [3] [4]\),貢獻為\(2*4=8\)

可以證明數學期望為\(5.333333...\)

測試點編號 \(type\) \(n\le\)
\(1∼5\) \(0\) \(10\)
\(6∼10\) \(0\) \(1000\)
\(11∼15\) \(0\) \(5\times 10^4\)
\(16∼20\) \(0\) \(2\times 10^6\)
\(21∼25\) \(1\) \(/\)

對於\(100\%\)的資料,保證\(3\le n \le 2\times 10^6\)\(-1000\le a_i \le 1000\)\(0<k\le 5\times 10^5\)

本題開啟SPJ,輸出答案與正確答案誤差不超過\(10^{-4}\)即可透過。

[SEOI2024 T5] 旅途的華章

題目背景

PS: 我們準備了一份形式化題意, 如果你不想看可愛的伊蕾娜或覺得具體化題意太過於難理解,請直接跳到形式化題意及以下內容。

1.png
2.png
3.png
4.png
5.png
6.png
7.png
8.png
9.png
10.png

題目描述

灰之魔女伊蕾娜的夢想是成為魔女自由地遊歷世界,但是她發現出了一個問題:作為一個小女生的伊蕾娜完全沒有方向感,於是她請來了你——一位天才OIer來幫她規劃旅途。

已知伊蕾娜需要遊歷\(n\)個時刻,也就意味著你需要維護一個長度為\(n\)的序列,序列每一個值表示伊蕾娜在那一個時刻處於的國家序號\(a_i(1 \le a_i \le 10^9)\)。初始這個序列全為\(0\),因為這些時刻都沒有被規劃過。接下來伊蕾娜會給定\(m\)個指令,其中包括修改和詢問,規則如下:

  • 0 s 伊蕾娜想知道在經過之前的修改後在第\(s\)時刻她要前往的國家序號\(a_s\),如果沒有那個時刻沒有被規劃則\(a_s=0\)

  • 1 l r k 伊蕾娜想要在\([l,r]\)這段時間去編號為\(k\)的國家。

  • 2 p 伊蕾娜特別想去某些國家,也討厭某些國家。所以她想把在後期喜歡的\(p\)個國家放到最前面,或將前期討厭的\(-p\)個國家放到最後面。也就是將序列整體向右迴圈\(k\)位,如果\(p\)為負數則向左迴圈\(-p\)位。

  • 3 伊蕾娜想要一個截然不同的旅行,於是她將整個旅途翻轉。

形式化題意

你將獲得一個長度為\(n\)的序列下標為\(1\rightarrow n\),初始全為\(0\),你的任務是維護這個序列並執行以下操作:

  • 0 s 輸出序列下標s位置的值。

  • 1 l r k 將序列中從位置\(l\)到位置\(r\)的數修改為\(k\)

  • 2 p 將整個序列向右迴圈移動\(p\)位。如果\(p\)為負數,則向左迴圈移動\(|p|\)位。

  • 3 將整個序列翻轉。

輸入格式

第一行包含兩個整數\(n\)\(m\),分別表示序列的長度和操作的數量。

接下來\(m\)行,每行的第一個整數為\(opt\),表示操作型別:

  • 0 詢問操作。
  • 1 區間修改操作。
  • 2 整體偏移操作。
  • 3 整體翻轉操作。

如果是操作1,則在同一行輸入三個整數引數,分別為\(l\)\(r\)\(k\),用空格隔開。其他,則在同一行輸入一個引數\(s\)\(k\)\(p\)。所有引數的含義如題目描述所示。

輸出格式

對於詢問操作0,輸出對應的結果。

序列中的每個數用空格隔開。每次詢問後請換行。

樣例 #1

樣例輸入 #1

5 15
1 1 5 1
0 4
1 2 2 2
1 3 3 3
1 4 4 4
1 5 5 5
2 2
2 -3
3
2 1
0 1
0 2
0 3
0 4
0 5

樣例輸出 #1

1
2
1
5
4
3

提示

迴圈的意義為,例如:\(12345\)

向右迴圈意味著將將最後面\(2\)個數提到序列最前面。原序列向右\(2\)位後為\(45123\)

向左迴圈\(2\)位意味著將最前面2個數提到最後面,原序列向左迴圈\(2\)位後為\(34512\)

在樣例中:

經過第一次\(1∼5\)修改後為:\(1 1 1 1 1\)

經過後五次修改後為:\(12345\)

右移\(2\)後為:\(45123\)

左移\(3\)後為:\(23451\)

翻轉後為:\(15432\)

右移\(1\)後為:\(21543\)

資料範圍

測試點編號 \(n\le\) \(m\le\) 特殊性質
\(1∼5\) $1000 $ \(100\)
\(6∼10\) \(5\times 10^5\) \(3\times 10^4\) \(A\)
\(11∼15\) \(5\times 10^5\) \(3\times 10^4\) \(B\)
\(16∼20\) \(5\times 10^5\) \(3\times 10^4\) \(C\)
\(21∼25\) \(2\times 10^6\) \(2\times 10^5\)

特殊性質\(A\):資料中\(1\)運算元目不超過\(100\)次。
特殊性質\(B\):資料中不包含\(2\)操作。
特殊性質\(C\):資料中不包含\(3\)操作。

對於\(100\%\)的資料保證,$ 1 \le n \le 2\times 10^6 \(,\) 1 \le m \le 2\times 10^5$,\(0 \le opt \le 3\),$1\le s \le n $,\(1\le l\le r \le n\)\(1\le k \le 10^9\)\(0\le p \le n\)

[SEOI2024 T6] 異色

題目背景











傳說中每個人都有一顆記憶之樹,每段記憶都有一個特殊的顏色,無窮無盡的顏色拼湊出五彩斑斕的人生。

題目描述

珂朵莉給你一個序列\(C\),你需要維護序列並支援以下操作:

記上次\(0\)操作答案為\(ans\),如果是第一次\(0\)操作,則\(ans=0\)

  • 0 l r 求出\([((l+ans)mod\ r)+1,r]\)區間內有多少個不同的數。

  • 1 p k\(p\)位置的數改成\(k\)

輸入格式

第一行兩個整數\(n\)\(q\),分別表示序列\(C\)的長度以及操作個數。

第二行\(n\)個整數描述\(C\)序列,每個整數之間用空格隔開。

接下來\(q\)行操作,格式見題目描述。

輸出格式

回答所有\(0\)查詢操作,每次回答之間用換行符隔開。

樣例 #1

樣例輸入 #1

5 6
1 2 3 4 5
0 1 4
0 2 4
1 2 3
0 1 3
1 4 3
0 1 5

樣例輸出 #1

3
3
2
3

提示

對於\(50\%\)的資料保證\(1\le n,q \le 1000\)

對於\(100\%\)的資料保證\(1\le n,q \le 10^5\)\(0\le C_i \le 10^8\)

相關文章