CSP-S 2019第二轮认证(原NOIP提高组复赛)试题.pdf_第1页
CSP-S 2019第二轮认证(原NOIP提高组复赛)试题.pdf_第2页
CSP-S 2019第二轮认证(原NOIP提高组复赛)试题.pdf_第3页
CSP-S 2019第二轮认证(原NOIP提高组复赛)试题.pdf_第4页
CSP-S 2019第二轮认证(原NOIP提高组复赛)试题.pdf_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019 年 CCF 非专业级软件能力认证第二轮 提高级 2019 CCF CSP S2 day1 时间 2019年11月16日08 30 12 00 题目名称格雷码括号树树上的数 题目类型传统型传统型传统型 目录codebracketstree 可执行文件名codebracketstree 输入文件名code inbrackets intree in 输出文件名code outbrackets outtree out 每个测试点时限1 0 秒1 0 秒2 0 秒 内存限制256 MiB256 MiB256 MiB 子任务数目202020 测试点是否等分是是是 提交源程序文件名 对于 C 语言code cppbrackets cpptree cpp 对于 C语言code cbrackets ctree c 对于 Pascal 语言code pasbrackets pastree pas 编译选项 对于 C 语言 lm 对于 C语言 lm 对于 Pascal 语言 注意事项与提醒 请选手务必仔细阅读 1 文件名 程序名和输入输出文件名 必须使用英文小写 2 C C 中函数 main 的返回值类型必须是 int 程序正常结束时的返回值必须 是 0 3 提交的程序代码文件的放置位置请参照各省的具体要求 4 因违反以上三点而出现的错误或问题 申诉时一律不予受理 5 若无特殊说明 结果的比较方式为全文比较 过滤行末空格及文末回车 2019 年 CCF 非专业级软件能力认证第二轮提高级 day1 6 程序可使用的栈内存空间限制与题目的内存限制一致 7 全国统一评测时采用的机器配置为 Intel R Core TM i7 8700K CPU 3 70GHz 内存 32GB 上述时限以此配置为准 8 只提供 Linux 格式附加样例文件 9 评测在当前最新公布的 NOI Linux 下进行 各语言的编译器版本以其为准 10 最终评测时所用的编译命令中不含任何优化开关 11 是求和运算符 n i 1 ai的值等于 a1 a2 an 第 2 页共 10 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day1 格雷码 code 格雷码 code 题目描述 通常 人们习惯将所有 n 位二进制串按照字典序排列 例如所有 2 位二进制串按 字典序从小到大排列为 00 01 10 11 格雷码 Gray Code 是一种特殊的 n 位二进制串排列法 它要求相邻的两个二进 制串间 恰 好有一位 不 同 特别地 第一个串与最后一个串也算作相邻 所有 2 位二进制串按格雷码排列的一个例子为 00 01 11 10 n 位格雷码不止一种 下面给出其中一种格雷码的生成算法 1 1 位格雷码由两个 1 位二进制串组成 顺序为 0 1 2 n 1 位格雷码的前 2n个二进制串 可以由依此算法生成的 n 位格雷码 总共 2n个 n 位二进制串 按 顺 序排列 再在每个串前加一个前缀 0 构成 3 n 1 位格雷码的后 2n个二进制串 可以由依此算法生成的 n 位格雷码 总共 2n个 n 位二进制串 按 逆 序排列 再在每个串前加一个前缀 1 构成 综上 n 1 位格雷码 由 n 位格雷码的 2n个二进制串按顺序排列再加前缀 0 和 按逆序排列再加前缀 1 构成 共 2n 1个二进制串 另外 对于 n 位格雷码中的 2n个 二进制串 我们按上述算法得到的排列顺序将它们从 0 2n 1 编号 按该算法 2 位格雷码可以这样推出 1 已知 1 位格雷码为 0 1 2 前两个格雷码为 00 01 后两个格雷码为 11 10 合并得到 00 01 11 10 编号依次为 0 3 同理 3 位格雷码可以这样推出 1 已知 2 位格雷码为 00 01 11 10 2 前四个格雷码为 000 001 011 010 后四个格雷码为 110 111 101 100 合并得到 000 001 011 010 110 111 101 100 编号依次为 0 7 现在给出 n k 请你求出按上述算法生成的 n 位格雷码中的 k 号二进制串 输入格式 从文件 code in 中读入数据 仅一行两个整数 n k 意义见题目描述 输出格式 输出到文件 code out 中 仅一行一个 n 位二进制串表示答案 第 3 页共 10 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day1 格雷码 code 样例1输入 2 3 样例1输出 10 样例1解释 2 位格雷码为 00 01 11 10 编号从 0 3 因此 3 号串是 10 样例2输入 3 5 样例2输出 111 样例2解释 3 位格雷码为 000 001 011 010 110 111 101 100 编号从 0 7 因此 5 号串是 111 样例3 见选手目录下的 code code3 in 与 code code3 ans 数据范围 对于 50 的数据 n 10 对于 80 的数据 k 5 106 对于 95 的数据 k 263 1 对于 100 的数据 1 n 64 0 k 2n 第 4 页共 10 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day1 括号树 brackets 括号树 brackets 题目背景 本题中 合 法 括 号 串的定义如下 1 是合法括号串 2 如果 A 是合法括号串 则 A 是合法括号串 3 如果 A B 是合法括号串 则 AB 是合法括号串 本题中 子 串与 不 同 的 子 串的定义如下 1 字符串 S 的子串是 S 中 连 续的任意个字符组成的字符串 S 的子串可用起始位 置 l 与终止位置 r 来表示 记为 S l r 1 l r S S 表示 S 的长度 2 S 的两个子串视作不同 当 且 仅 当它们在 S 中的位置不同 即 l 不同或 r 不同 题目描述 一个大小为 n 的树包含 n 个结点和 n 1 条边 每条边连接两个结点 且任意两个 结点间 有 且 仅 有一条简单路径互相可达 小 Q 是一个充满好奇心的小朋友 有一天他在上学的路上碰见了一个大小为 n 的 树 树上结点从 1 n 编号 1 号结点为树的根 除 1 号结点外 每个结点有一个父亲 结点 u 2 u n 号结点的父亲为 fu 1 fu u 号结点 小 Q 发现这个树的每个结点上 恰 有一个括号 可能是 或 小 Q 定义 si为 将 根结点到 i 号结点的简单路径上的括号 按结点经过顺序依次排列组成的字符串 显然 si是个括号串 但不一定是合法括号串 因此现在小 Q 想对所有的 i 1 i n 求出 si中有多少个 互 不 相 同 的 子 串是 合 法 括 号 串 这个问题难倒了小 Q 他只好向你求助 设 si共有 ki个不同子串是合法括号串 你只需要告诉小 Q 所有 i ki的异或和 即 1 k1 xor 2 k2 xor 3 k3 xor xor n kn 其中 xor 是位异或运算 输入格式 从文件 brackets in 中读入数据 第一行一个整数 n 表示树的大小 第二行一个长为 n 的由 与 组成的括号串 第 i 个括号表示 i 号结点上的括号 第三行包含 n 1 个整数 第 i 1 i n 个整数表示 i 1 号结点的父亲编号 fi 1 第 5 页共 10 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day1 括号树 brackets 输出格式 输出到文件 brackets out 中 仅一行一个整数表示答案 样例1输入 5 1 1 2 2 样例1输出 6 样例1解释 树的形态如下图 将根到 1 号结点的简单路径上的括号 按经过顺序排列所组成的字符串为 子串 是合法括号串的个数为 0 将根到 2 号结点的简单路径上的括号 按经过顺序排列所组成的字符串为 子 串是合法括号串的个数为 0 将根到 3 号结点的简单路径上的括号 按经过顺序排列所组成的字符串为 子 串是合法括号串的个数为 1 将根到 4 号结点的简单路径上的括号 按经过顺序排列所组成的字符串为 子 串是合法括号串的个数为 0 将根到 5 号结点的简单路径上的括号 按经过顺序排列所组成的字符串为 子 串是合法括号串的个数为 1 样例2 见选手目录下的 brackets brackets2 in 与 brackets brackets2 ans 第 6 页共 10 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day1 括号树 brackets 样例3 见选手目录下的 brackets brackets3 in 与 brackets brackets3 ans 数据范围 测试点编号n 特殊性质 1 28 fi i 13 4200 5 7 2000 8 10无 11 14 105 fi i 1 15 16 无 17 205 105 第 7 页共 10 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day1 树上的数 tree 树上的数 tree 题目描述 给定一个大小为 n 的树 它共有 n 个结点与 n 1 条边 结点从 1 n 编号 初始 时每个结点上都有一个 1 n 的数字 且每个 1 n 的数字都只在 恰 好一个结点上出现 接下来你需要进行 恰 好 n 1 次删边操作 每次操作你需要选一条 未 被 删 去的边 此时这条边所连接的两个结点上的数字将会 交 换 然后这条边将被删去 n 1 次操作过后 所有的边都将被删去 此时 按数字从小到大的顺序 将数字 1 n 所在的结点编号依次排列 就得到一个结点编号的排列 Pi 现在请你求出 在最 优操作方案下能得到的 字 典 序 最 小的 Pi 如上图 蓝圈中的数字 1 5 一开始分别在结点 2 1 3 5 4 按照 1 4 3 2 的顺序删去所有边 树变为下图 按数字顺序得到的结点编号排列为 1 3 4 2 5 该 排列是所有可能的结果中字典序最小的 输入格式 从文件 tree in 中读入数据 本 题 输 入 包 含 多 组 测 试 数 据 第一行一个正整数 T 表示数据组数 对于每组测试数据 第一行一个整数 n 表示树的大小 第二行 n 个整数 第 i 1 i n 个整数表示数字 i 初始时所在的结点编号 接下来 n 1 行每行两个整数 x y 表示一条连接 x 号结点与 y 号结点的边 第 8 页共 10 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day1 树上的数 tree 输出格式 输出到文件 tree out 中 对于每组测试数据 输出一行共 n 个用空格隔开的整数 表示最优操作方案下所 能得到的字典序最小的 Pi 样例1输入 4 5 2 1 3 5 4 1 3 1 4 2 4 4 5 5 3 4 2 1 5 1 2 2 3 3 4 4 5 5 1 2 5 3 4 1 2 1 3 1 4 1 5 10 1 2 3 4 5 7 8 9 10 6 1 2 1 3 1 4 1 5 5 6 6 7 7 8 8 9 9 10 第 9 页共 10 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day1 树上的数 tree 样例1输出 1 3 4 2 5 1 3 5 2 4 2 3 1 4 5 2 3 4 5 6 1 7 8 9 10 样例2 见选手目录下的 tree tree2 in 与 tree tree2 ans 数据范围 测试点编号n 特殊性质 1 210无 3 4160 树的形态是一条链 5 72000 8 9160 存在度数为 n 1 的结点 10 122000 13 16160 无 17 202000 对于所有测试点 1 T 10 保证给出的是一个树 第 10 页共 10 页 2019 年 CCF 非专业级软件能力认证第二轮 提高级 2019 CCF CSP S2 day2 时间 2019年11月17日08 30 12 00 题目名称Emiya 家今天的饭划分树的重心 题目类型传统型传统型传统型 目录mealpartitioncentroid 可执行文件名mealpartitioncentroid 输入文件名meal inpartition incentroid in 输出文件名meal outpartition outcentroid out 每个测试点时限1 0 秒2 0 秒3 0 秒 内存限制256 MiB1 GiB256 MiB 子任务数目252520 测试点是否等分是是是 提交源程序文件名 对于 C 语言meal cpppartition cppcentroid cpp 对于 C语言meal cpartition ccentroid c 对于 Pascal 语言meal paspartition pascentroid pas 编译选项 对于 C 语言 lm 对于 C语言 lm 对于 Pascal 语言 注意事项与提醒 请选手务必仔细阅读 1 文件名 程序名和输入输出文件名 必须使用英文小写 2 C C 中函数 main 的返回值类型必须是 int 程序正常结束时的返回值必须 是 0 3 提交的程序代码文件的放置位置请参照各省的具体要求 4 因违反以上三点而出现的错误或问题 申诉时一律不予受理 5 若无特殊说明 结果的比较方式为全文比较 过滤行末空格及文末回车 2019 年 CCF 非专业级软件能力认证第二轮提高级 day2 6 程序可使用的栈内存空间限制与题目的内存限制一致 7 全国统一评测时采用的机器配置为 Intel R Core TM i7 8700K CPU 3 70GHz 内存 32GB 上述时限以此配置为准 8 只提供 Linux 格式附加样例文件 9 评测在当前最新公布的 NOI Linux 下进行 各语言的编译器版本以其为准 10 最终评测时所用的编译命令中不含任何优化开关 11 是求和运算符 n i 1 ai的值等于 a1 a2 an 第 2 页共 11 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day2 Emiya 家今天的饭 meal Emiya家今天的饭 meal 题目描述 Emiya 是个擅长做菜的高中生 他共掌握 n 种 烹 饪 方 法 且会使用 m 种 主 要 食 材 做菜 为了方便叙述 我们对烹饪方法从 1 n 编号 对主要食材从 1 m 编号 Emiya 做的每道菜都将使用 恰 好 一 种烹饪方法与 恰 好 一 种主要食材 更具体地 Emiya 会做 ai j道不同的使用烹饪方法 i 和主要食材 j 的菜 1 i n 1 j m 这 也意味着 Emiya 总共会做 n i 1 m j 1 ai j道不同的菜 Emiya 今天要准备一桌饭招待 Yazid 和 Rin 这对好朋友 然而三个人对菜的搭配 有不同的要求 更具体地 对于一种包含 k 道菜的搭配方案而言 Emiya 不会让大家饿肚子 所以将做 至 少 一 道 菜 即 k 1 Rin 希望品尝不同烹饪方法做出的菜 因此她要求每道菜的 烹 饪 方 法 互 不 相 同 Yazid 不希望品尝太多同一食材做出的菜 因此他要求每种 主 要 食 材至多在 一 半 的菜 即 k 2 道菜 中被使用 这里的 x 为下取整函数 表示不超过 x 的最大整数 这些要求难不倒 Emiya 但他想知道共有多少种不同的符合要求的搭配方案 两种 方案不同 当且仅当存在至少一道菜在一种方案中出现 而不在另一种方案中出现 Emiya 找到了你 请你帮他计算 你只需要告诉他符合所有要求的搭配方案数对质 数 998 244 353 取模的结果 输入格式 从文件 meal in 中读入数据 第 1 行两个用单个空格隔开的整数 n m 第 2 行至第 n 1 行 每行 m 个用单个空格隔开的整数 其中第 i 1 行的 m 个 数依次为 ai 1 ai 2 ai m 输出格式 输出到文件 meal out 中 仅一行一个整数 表示所求方案数对 998 244 353 取模的结果 样例1输入 2 3 1 0 1 0 1 1 第 3 页共 11 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day2 Emiya 家今天的饭 meal 样例1输出 3 样例1解释 由于在这个样例中 对于每组 i j Emiya 都最多只会做一道菜 因此我们直接通 过给出烹饪方法 主要食材的编号来描述一道菜 符合要求的方案包括 做一道用烹饪方法 1 主要食材 1 的菜和一道用烹饪方法 2 主要食材 2 的菜 做一道用烹饪方法 1 主要食材 1 的菜和一道用烹饪方法 2 主要食材 3 的菜 做一道用烹饪方法 1 主要食材 3 的菜和一道用烹饪方法 2 主要食材 2 的菜 因此输出结果为 3 mod 998 244 353 3 需要注意的是 所有只包含一道菜的方案都是不符合要求的 因为唯一的主要食材 在超过一半的菜中出现 这不满足 Yazid 的要求 样例2输入 3 3 1 2 3 4 5 0 6 0 0 样例2输出 190 样例2解释 Emiya 必须至少做 2 道菜 做 2 道菜的符合要求的方案数为 100 做 3 道菜的符合要求的方案数为 90 因此符合要求的方案数为 100 90 190 样例3输入 5 5 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 第 4 页共 11 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day2 Emiya 家今天的饭 meal 1 0 1 0 1 0 1 1 0 1 样例3输出 742 样例4 见选手目录下的 meal meal4 in 与 meal meal4 ans 样例5 见选手目录下的 meal meal5 in 与 meal meal5 ans 数据范围 测试点编号n m ai j 1 2 2 2 23 3 5 2 43 5 10 2 63 7 10 2 1000 83 9 12 40 2 13 163 17 21500 22 251002000998 244 353 对于所有测试点 保证 1 n 100 1 m 2000 0 ai j 998 244 353 第 5 页共 11 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day2 划分 partition 划分 partition 题目描述 2048 年 第三十届 CSP 认证的考场上 作为选手的小明打开了第一题 这个题的 样例有 n 组数据 数据从 1 n 编号 i 号数据的规模为 ai 小明对该题设计出了一个暴力程序 对于一组规模为 u 的数据 该程序的 运 行 时 间为 u2 然而这个程序运行完一组规模为 u 的数据之后 它将在任何一组规模 小 于 u 的数据上运行错误 样例中的 ai不一定递增 但小明又想在不修改程序的情况下正确 运行样例 于是小明决定使用一种非常原始的解决方案 将所有数据划分成若干个数据 段 段内数据编号 连 续 接着将同一段内的数据合并成新数据 其规模等于段内原数据 的 规 模 之 和 小明将让新数据的规模能够递增 也就是说 小明需要找到一些分界点 1 k1 k2 kp 2 则 3 i n bi x bi 1 y bi 2 z mod 230 保证 1 pi n pm n 令 p0 0 则 pi还满足 0 i m 有 pi pi 1 第 6 页共 11 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day2 划分 partition 对于所有 1 j m 若下标值 i 1 i n 满足 pj 1 1 虽然划分方案 5 1 7 9 9 合法 但该方案对应的运行时间为 251 比 247 大 样例2输入 10 0 5 6 7 7 4 6 2 13 19 9 样例2输出 1256 样例2解释 最优的划分方案为 5 6 7 7 4 6 2 13 19 9 第 7 页共 11 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day2 划分 partition 样例3输入 10000000 1 123 456 789 12345 6789 3 2000000 123456789 987654321 7000000 234567891 876543219 10000000 456789123 567891234 样例3输出 4972194419293431240859891640 样例4 见选手目录下的 partition partition4 in 与 partition partition4 ans 样例5 见选手目录下的 partition partition5 in 与 partition partition5 ans 数据范围 测试点编号n ai type 1 31010 0 4 650103 7 9400104 10 165000105 17 225 105106 23 254 1071091 所有测试点满足 type 0 1 2 n 4 107 1 ai 109 1 m 105 1 li ri 109 0 x y z b1 b2 230 第 8 页共 11 页 2019 年 CCF 非专业级软件能力认证第二轮提高级day2 树的重心 centroid 树的重心 centroid 题目描述 小简单正在学习离散数学 今天的内容是图论基础 在课上他做了如下两条笔记 1 一个大小为 n 的树由 n 个结点与 n 1 条无向边构成 且满足任意两个结点间 有 且 仅 有一条简单路径 在树中删去一个结点及与它关联的边 树将分裂为若干个 子树 而在树中删去一条边 保留关联结点 下同 树将分裂为 恰 好两个子树 2 对于一个大小为 n 的树与任意一个树中结点 c 称 c 是该树的 重 心当且仅当在树 中删去 c 及与它关联的边后 分裂出的所有子树的大小均 不 超 过 n 2 其中 x 是下取整函数 对于包含至少一个结点的树 它的重心只可能有 1 或 2 个 课后老师给出了一个大小为 n 的树 S 树中结点从 1 n 编号 小简单的课后作业 是求出 S 单独删去每条边后 分裂出的两个子树的重心编号和之和 即 u v E 1 x n 且 x 号点是 S u的重心 x 1 y n 且 y 号点是 S v的重心 y 上式中 E 表示树 S 的边集 u v 表示一条连接 u 号点和 v 号点的边 S u 与 S v 分别表示树 S 删去边 u v 后 u 号点与 v 号点所在的被分裂出的子树 小简单觉得作业并不简单 只好向你求助 请你教教他 输入格式 从文件 centroid in 中读入数据 本 题 输 入 包 含 多 组 测 试 数 据 第一行一个整数 T 表示数据组数 接下来依次给出每组输入数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论