狗都不打模拟赛

发布时间 2023-06-01 16:47:33作者: Mysterious_Cat

2023年儿童节信息学程序设计水平调研

题目名称 build digits monisai oreo people wjdwzc
源代码名称 build.cpp digits.cpp monisai.cpp oreo.cpp people.cpp wjdwzc.cpp
输入文件名称 build.in digits.in monisai.in oreo.in people.in wjdwzc.in
输出文件名称 build.out digits.out monisai.out oreo.out people.out wjdwzc.out
题目类型 传统 传统 传统 传统 传统 传统
时间限制 \(2s\) \(1s\) \(1s\) \(1s\) \(1s\) \(1s\)
空间限制 \(128MB\) \(128MB\) \(128MB\) \(128MB\) \(128MB\) \(128MB\)
测试点数量 \(20\) \(20\) \(20\) \(20\) \(20\) \(20\)
测试点是否等分

注意事项:

  1. 本次调研统一使用C++语言编写源代码。
  2. 本次调研时长 \(3\) 时。
  3. 本次调研源代码编译参数统一使用 -O2 -std=c++14
  4. 本次调研题目不分先后。
  5. 本次调研的时间和空间限制均达到标准源代码实际测试时的两倍。欢迎吊打标准源代码。
  6. 每道题的样例在每道题对应的子文件夹中。输入文件后缀为 .in,输出文件后缀为 .ans
  7. 您需要建立您的文件夹。您可以按照文件夹 example 中的文件夹来建立您的文件夹。
  8. 本次调研题目很简单,请AK的大佬不要喧哗。
  9. 祝本次调研顺利!

build

题目背景

一天,Jabb在做摩天楼数独。

题目描述

Jabb要在一条直线上盖楼。最初,每个位置上的楼会有一定的高度。

他可以进行两个操作:

  • 将一个区间内所有的楼增加(或减少)一定高度。
  • 询问,如果他站在一栋楼的左边,到右边的一栋楼为止,能看见多少栋楼。

形式化描述见输入格式。

输入格式

你需要维护一个非负整数数列 \(a_{1 \sim n}\)

第一行两个整数 \(N\)\(Q\),分别是数列长度和操作个数。

第二行 \(N\) 个整数,表示数列的每个数初始的值。

接下来 \(Q\) 行,每行按照以下格式之一输入:

  • 1 x y z,对于 \([x,y]\) 中的每一个整数 \(i\),将 \(a_i\) 增加 \(z\)
  • 2 x y,询问,对于 \([x,y]\) 中的每一个整数 \(i\)\(max_{x,x+1,...,i}\) 共有多少种不同的取值。

输出格式

对于每一个询问,输出一行,表示询问的答案。

数据范围

对于所有数据,保证 \(1 \leqslant N,Q \leqslant 10^5\)\(x,y,z\)是整数,\(1 \leqslant x \leqslant y \leqslant n\)\(|z| \leqslant 10^9\)

保证数列的每一个数在任一时刻都不超过 \(10^9\)

测试点编号 \(N \leqslant\) \(Q \leqslant\) 特殊性质
\(1\) \(10^5\) \(10^5\) 对于所有 2 操作,\(x = y\)
\(2\) \(1000\) \(1000\)
\(3\) \(10^5\) \(10^5\) 对于所有 2 操作,\(y - x \leqslant 10\)
\(4\) \(10^5\) \(10^5\) 没有 1 操作
\(5\) \(10^5\) \(10^5\) 对于所有 1 操作,\(x = y\)
\(6\) \(10^5\) \(10^5\) 对于所有 2 操作,\(x = 1\)\(y = n\)
\(7 \sim 20\) \(10^5\) \(10^5\)

digits

题目背景

Jabb打音游太菜了,所以退游了,开始研究数的性质。

题目描述

你需要求出不小于 \(10\) 且不超过 \(N\) 的满足以下条件的自然数的个数:

  1. 存在连续两个非零位,满足最小公倍数不小于 \(P\)
  2. 任意连续三位中(如果有),最多有 \(S\) 个质数(包括前导零)。

比如在 \(P = 20\)\(S = 0\) 时,\(159\)\(267\) 是符合要求的,而 \(149\)\(123\) 是不符合要求的。

输入格式

本题有多组测试数据。

第一行一个正整数 \(T\),表示测试数据组数。

接下来 \(T\) 行,每行三个数,分别表示每个测试数据的 \(N\)\(P\)\(S\)

输出格式

一共 \(T\) 行,每行一个非负整数,代表符合要求的数的个数。

样例1解释

要求相当于:这个数的两位的最小公倍数不小于 \(72\)

只有 \(89\)\(98\) 满足要求。

数据范围

对于所有的数据:\(1 \leqslant T \leqslant 100\)\(100 \leqslant N < 10^{15}\)\(1 \leqslant P \leqslant 72\)\(0 \leqslant S \leqslant 13\)\(P\)\(S\)\(N\) 均为整数。

测试点编号 \(T \leqslant\) \(N <\) \(P \leqslant\) \(S \leqslant\) 特殊性质
\(1\) \(1\) \(1000\) \(72\) \(1\)
\(2 \sim 3\) \(100\) \(10000\) \(72\) \(2\)
\(4\) \(1\) \(10^9\) \(1\) \(7\)
\(5\) \(1\) \(10^9\) \(50\) \(7\) \(P = 50\)
\(6\) \(1\) \(10^9\) \(10\) \(7\) \(N\) 共有 \(S + 2\)
\(7 \sim 10\) \(1\) \(10^9\) \(72\) \(7\)
\(11 \sim 12\) \(100\) \(10^{15}\) \(72\) \(13\) \(N = 10^{15}-1\)
\(13 \sim 20\) \(100\) \(10^{15}\) \(72\) \(13\)

monisai

题目描述

一场模拟赛一共有 \(N\) 道题。

每道题都必须先让小A造数据,再让小B验题。

小A需要花费 \(A_i\) 分钟给第 \(i\) 题造数据,小B需要花费 \(B_i\) 分钟验第 \(i\) 题。

小A和小B同时只能分别处理一道题,可以调换题目顺序,请问一共最少需要多少时间才能处理完所有题?

输入格式

第一行一个整数 \(N\)

接下来 \(N\) 行,每行两个整数,表示 \(A_i\)\(B_i\)

输出格式

只有一行,一个整数,代表处理完所有题最少需要的时间。

数据范围

对于所有数据,\(1 \leqslant N \leqslant 1000\)\(0 \leqslant A_i , B_i \leqslant 10^5\)

测试点编号 \(N \leqslant\) 特殊性质
\(1\) \(1000\) \(B_i = 0\)
\(2\) \(10\)
\(3 \sim 4\) \(100\)
\(5\) \(1000\) \(A_i \geqslant B_i, A_i \geqslant A_{i+1}\)
\(6 \sim 20\) \(1000\)

注:特殊性质中的 \(i\) 均为在有意义的范围内的任意 \(i\)

花絮

终于,在模拟赛出完之后,出题人Jabb承诺之后再也不出超过一千道题的模拟赛,也不会出需要超过十万分钟才能造完数据验完题的难题了。

oreo

题目背景




众所周知,奥利奥有一个很大的家族。

题目描述

现在,Jabb一边吃奥利奥,一边在想一个问题。

定义合法单奥利奥字符串为所有仅由 al 构成的满足下列条件的字符串:

  • 字符串的首位和末位均为 a
  • 不存在两个相邻的字符 a

定义合法奥利奥字符串如下:

  • 任意合法单奥利奥字符串都是合法奥利奥字符串;
  • AB 都是合法奥利奥字符串,则 AyB 是合法奥利奥序列。

现在Jabb想要知道一共有多少个长度为 \(N\) 的合法奥利奥序列。

由于数量可能太多,所以要对 \(P\) 取模。

输入格式

共一行,两个正整数,分别表示 \(N\)\(P\)

输出格式

只有一行,表示长度为 \(N\) 的合法奥利奥字符串的数量对 \(P\) 取模后的值。

样例1说明

共有 \(5\) 个字符串:alalaalllaayayaayalaalaya,而 \(5 \bmod 3 = 2\),因此输出为 \(2\)

数据范围

对于所有数据,\(1\) \(\leqslant\) \(N\) \(\leqslant\) \(10^{18}\)\(2\) \(\leqslant\) \(P\) \(\leqslant\) \(10^{9}\)

测试点编号 \(N \leqslant\) \(P \leqslant\)
\(1\) \(10\) \(10^9\)
\(2 \sim 3\) \(1000\) \(10^9\)
\(4 \sim 5\) \(10^6\) \(10^9\)
\(6\) \(10^{18}\) \(2\)
\(7 \sim 20\) \(10^{18}\) \(10^9\)

people

题目描述

J国实行人民代表大会制度。

J国一共有 \(N\) 个政党,每个政党中有 \(2\) 个代表参与人民代表大会选举。

然而,这些代表里面也存在 \(M\) 对敌人。

人民代表大会组成的要求如下:

  • 每个政党在人民代表大会中恰有 \(1\) 个代表;

  • 其中不能有一对代表是敌人。

规定第 \(i\) 个政党的两位代表的编号分别为 \(2i-1\)\(2i\)

请问人民代表大会是否能够成功组成?

输入格式

为了避免“不可以,总司令”或“可以,总司令”获得满分,本题有多组测试数据。

第一行一个整数 \(T\),表示测试数据组数。

对于每组测试数据,输入格式如下:

第一行两个整数,分别表示 \(N\)\(M\)

之后 \(N\) 行,每行两个数 \(X\)\(Y\),表示一对敌人的编号。

输出格式

对于每组测试数据,输出一行。如果人民代表大会可以成功组成,输出 YE5;如果不可以成功组成,输出 N0

样例1解释

人民代表大会可以由1号、4号和5号代表组成。

数据范围

对于所有测试点,\(1 \leqslant T \leqslant 10\)\(1 \leqslant N \leqslant 8*10^3\)\(1 \leqslant M \leqslant 2*10^4\)\(1 \leqslant X < Y < 2N\)

测试点编号 \(N \leqslant\) \(M \leqslant\)
\(1\) \(10\) \(30\)
\(2 \sim 5\) \(100\) \(1000\)
\(6 \sim 20\) \(8*10^3\) \(2*10^4\)

wjdwzc

题目描述

wjd在和wzc玩一个游戏。

给定 \(N\) 堆果子,每堆果子各有一个。wjd和wzc每一次操作可以把两堆果子合并,新堆的果子数量为两个堆的果子之和。

然而,出于某些原因,规定每一个堆的果子数量都不能超过 \(M\)

众所周知,wjd和wzc都聪明绝顶。

wjd先手,请问谁能赢得游戏?

输入格式

为了避免个人情感的影响,本题多组数据。

第一行为一个整数 \(T\),表示数据组数。

之后 \(T\) 行,每行两个整数,代表 \(N\)\(M\)

输出格式

一共 \(T\) 行,每行为 wjdwzc,表示谁能获胜。

数据范围

对于所有数据,\(1 \leqslant T \leqslant 10^5\)\(1 \leqslant M , N \leqslant 10^9\)

测试点编号 \(T \leqslant\) \(N \leqslant\) \(M \leqslant\) 特殊性质
\(1\) \(10^5\) \(10^9\) \(10^9\) \(N \leqslant M\)
\(2\) \(10^5\) \(10^9\) \(2\)
\(3\) \(10\) \(10\) \(10\)
\(4\) \(100\) \(100\) \(100\)
\(5\) \(10^5\) \(100\) \(100\)
\(6\) \(10\) \(1000\) \(1000\)
\(7 \sim 20\) \(10^5\) \(10^9\) \(10^9\)