【SEOI2024】试题

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\)

posted @ 2024-06-02 22:57  Jefferyzzzz  阅读(23)  评论(0编辑  收藏  举报