第十三届蓝桥杯决赛(国赛)真题 Java C 组【原卷】

news2024/11/19 22:47:58

文章目录

  • 发现宝藏
  • 试题 A: 斐波那契与 7
  • 试题 B: 小蓝做实验
  • 试题 C: 取模
  • 试题 D: 内存空间
  • 试题 E \mathrm{E} E : 斐波那契数组
  • 试题 F: 最大公约数
  • 试题 G: 交通信号
  • 试题 I: 打折
  • 试题 J: 宝石收集

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。


第十三届蓝桥杯大赛软件赛国赛
Java C 组

【考生须知】

考试开始后, 选手首先下载题目, 并使用考场现场公布的解压密码解压试题。

考试时间为 4 小时。考试期间选手可浏览自己已经提交的答案, 被浏览的答案允许拷贝。时间截止后,将无法继续提交或浏览答案。

对同一题目, 选手可多次提交答案, 以最后一次提交的答案为准。

选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它方式提交的答案无效。

试题包含 “结果填空” 和 “程序设计” 两种题型。

结果填空题: 要求选手根据题目描述直接填写结果。求解方式不限。不要求源代码。把结果填空的答案直接通过网页提交即可, 不要书写多余的内容。

程序设计题: 要求选手设计的程序对于给定的输入能给出正确的输出结果。考生的程序只有能运行出正确结果才有机会得分。

注意: 在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的, 不能只对试卷中给定的数据有效。

所有源码必须在同一文件中。调试通过后,拷贝提交。

注意: 不要使用 package 语句。

注意:选手代码的主类名必须为: Main, 否则会被判为无效代码。

注意: 如果程序中引用了类库, 在提交时必须将 import 语句与程序的其他部分同时提交。只允许使用 Java 自带的类库。


试题 A: 斐波那契与 7

本题总分: 5 分

【问题描述】

斐波那契数列的递推公式为: F n = F n − 1 + F n − 2 F_{n}=F_{n-1}+F_{n-2} Fn=Fn1+Fn2, 其中 F 1 = F 2 = 1 F_{1}=F_{2}=1 F1=F2=1

请问, 斐波那契数列的第 1 至 202202011200 项(含)中, 有多少项的个位是 7 。

【答案提交】

这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。


试题 B: 小蓝做实验

本题总分:5 分

【问题描述】

小蓝很喜欢科研, 他最近做了一个实验得到了一批实验数据, 一共是两百万个正整数。如果按照预期, 所有的实验数据 x x x 都应该满足 1 0 7 ≤ x ≤ 1 0 8 10^{7} \leq x \leq 10^{8} 107x108 。但是做实验都会有一些误差, 会导致出现一些预期外的数据, 这种误差数据 y y y 的范围是 1 0 3 ≤ y ≤ 1 0 12 10^{3} \leq y \leq 10^{12} 103y1012 。由于小蓝做实验很可靠, 所以他所有的实验数据中 99.99 % 99.99 \% 99.99% 以上都是符合预期的。小蓝的所有实验数据都在 primes.txt 中, 现在他想统计这两百万个正整数中有多少个是质数, 你能告诉他吗?

【答案提交】

这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。


试题 C: 取模

时间限制: 3.0   s 3.0 \mathrm{~s} 3.0 s 内存限制: 512.0 M B 512.0 \mathrm{MB} 512.0MB 本题总分: 10 分

【问题描述】

给定 n , m n, m n,m, 问是否存在两个不同的数 x , y x, y x,y 使得 1 ≤ x < y ≤ m 1 \leq x<y \leq m 1x<ym n   m o d   x = n \bmod x= nmodx= n   m o d   y n \bmod y nmody

【输入格式】

输入包含多组独立的询问。

第一行包含一个整数 T T T 表示询问的组数。

接下来 T T T 行每行包含两个整数 n , m n, m n,m, 用一个空格分隔, 表示一组询问。

【输出格式】

输出 T T T 行, 每行依次对应一组询问的结果。如果存在, 输出单词 Yes; 如果不存在, 输出单词 No。

【样例输入】

3 \begin{array}{llll}3\end{array} 3

5 2 \begin{array}{llll}5&2 \end{array} 52

99 9 \begin{array}{llll}99&9 \end{array} 999

【样例输出】

N o \begin{array}{llll}No \end{array} No

N o \begin{array}{llll}No \end{array} No

Y e s \begin{array}{llll}Yes \end{array} Yes

【评测用例规模与约定】

对于 20 % 20 \% 20% 的评测用例, T ≤ 100 , n , m ≤ 1000 T \leq 100, n, m \leq 1000 T100,n,m1000;

对于 50 % 50 \% 50% 的评测用例, T ≤ 10000 , n , m ≤ 1 0 5 T \leq 10000, n, m \leq 10^{5} T10000,n,m105;

对于所有评测用例, 1 ≤ T ≤ 1 0 5 , 1 ≤ n ≤ 1 0 9 , 2 ≤ m ≤ 1 0 9 1 \leq T \leq 10^{5}, 1 \leq n \leq 10^{9}, 2 \leq m \leq 10^{9} 1T105,1n109,2m109


试题 D: 内存空间

时间限制: 3.0   s 3.0 \mathrm{~s} 3.0 s 内存限制: 512.0 M B 512.0 \mathrm{MB} 512.0MB 本题总分: 10 分

【问题描述】

小蓝最近总喜欢计算自己的代码中定义的变量占用了多少内存空间。

为了简化问题, 变量的类型只有以下三种:

int: 整型变量, 一个 int 型变量占用 4 Byte 的内存空间。

long:长整型变量, 一个 long 型变量占用 8 Byte 的内存空间。

String: 字符串变量, 占用空间和字符串长度有关, 设字符串长度为 L L L,则字符串占用 L L L Byte 的内存空间, 如果字符串长度为 0 则占用 0 Byte 的内存空间。

定义变量的语句只有两种形式, 第一种形式为:

type var1=value1, var2=value2…;

定义了若干个 type 类型变量 var1、var2、开, 并且用 value1、value2 …初始化,

多个变量之间用’, ‘分隔, 语句以’; '结尾, type 可能是 int、long 或 String。例如 int a = 1 , b = 5 , c = 6 a=1, b=5, c=6 a=1,b=5,c=6; 占用空间为 12 Byte; long a = 1 , b = 5 a=1, b=5 a=1,b=5;占用空间为 16 Byte; String s 1 = s 1= s1= " ", s2=“hello”, s3=“world”;占用空间为 10 Byte。

第二种形式为:

type[] arr1=new type[size1], arr2=new type[size2] ⋯ \cdots ;

定义了若干 type 类型的一维数组变量 arr ⁡ 1 , arr ⁡ 2 ⋯ \operatorname{arr} 1, \operatorname{arr} 2 \cdots arr1,arr2, 且数组的大小为 size1、size2 是, 多个变量之间用’, ‘进行分隔, 语句以’;’ 结尾, type 只可能是 int 或 long。例如 int [] al=new int[10]; 占用的内存空间为 40

Byte; long[] a1=new long[10],a2=new long[10];占用的内存空间为 160 Byte.

已知小蓝有 T T T 条定义变量的语句, 请你帮他统计下一共占用了多少内存空间。结果的表示方式为: a   G B b M B c   K B d   B a \mathrm{~GB} b \mathrm{MB} c \mathrm{~KB} d \mathrm{~B} a GBbMBc KBd B, 其中 a 、 b 、 c 、 d a 、 b 、 c 、 d abcd 为统计的结果, GB、MB、KB、B 为单位。优先用大的单位来表示, 1   G B = 1024 M B 1 \mathrm{~GB}=1024 \mathrm{MB} 1 GB=1024MB, 1 M B = 1024   K B , 1   K B = 1024   B 1 \mathrm{MB}=1024 \mathrm{~KB}, 1 \mathrm{~KB}=1024 \mathrm{~B} 1MB=1024 KB,1 KB=1024 B, 其中 B 表示 Byte。如果 a 、 b 、 c 、 d a 、 b 、 c 、 d abcd 中的某几个数字为 0 , 那么不必输出这几个数字及其单位。题目保证一行中只有一句定义变量的语句, 且每条语句都满足题干中描述的定义格式, 所有的变量名都是合法的且均不重复。题目中的数据很规整, 和上述给出的例子类似, 除了类型后面有一个空格, 以及定义数组时 new 后面的一个空格之外, 不会出现多余的空格。

【输入格式】

输入的第一行包含一个整数 T T T, 表示有 T T T 句变量定义的语句。

接下来 T T T 行, 每行包含一句变量定义语句。

【输出格式】

输出一行包含一个字符串, 表示所有语句所占用空间的总大小。

【样例输入 1】

1

long [ ] nums=new long [131072];

【样例输出 1】

1 M B 1 \mathrm{MB} 1MB

【样例输入 2】

4

int a = 0 , b = 0 a=0, b=0 a=0,b=0;

long x = 0 , y = 0 x=0, y=0 x=0,y=0

String s 1 = \mathrm{s} 1= s1= “hello”, s 2 = \mathrm{s} 2= s2= “world”;

long[ ] arr1=new long[100000], arr2=new long[100000];

【样例输出 2】

1 MB538KB546B

【样例说明】

样例 1 , 占用的空间为 131072 × 8 = 1048576   B 131072 \times 8=1048576 \mathrm{~B} 131072×8=1048576 B, 换算过后正好是 1 M B 1 \mathrm{MB} 1MB, 其它三个单位 G B 、   K B 、   B \mathrm{GB} 、 \mathrm{~KB} 、 \mathrm{~B} GB KB B 前面的数字都为 0 , 所以不用输出。

样例 2 , 占用的空间为 4 × 2 + 8 × 2 + 10 + 8 × 100000 × 2   B 4 \times 2+8 \times 2+10+8 \times 100000 \times 2 \mathrm{~B} 4×2+8×2+10+8×100000×2 B, 换算后是 1MB538K5546B。

【评测用例规模与约定】

对于所有评测用例, 1 ≤ T ≤ 10 1 \leq T \leq 10 1T10, 每条变量定义语句的长度不会超过 1000 - 所有的变量名称长度不会超过 10 , 且都由小写字母和数字组成。对于整型变量, 初始化的值均是在其表示范围内的十进制整数, 初始化的值不会是变量.对于 String 类型的变量, 初始化的内容长度不会超过 50 , 且内容仅包含小写字母和数字, 初始化的值不会是变量. 对于数组类型变量, 数组的长度为一个整数, 范围为: [ 0 , 2 30 ] \left[0,2^{30}\right] [0,230], 数组的长度不会是变量。 T T T 条语句定义的变量所占的内存空间总大小不会超过 1   G B 1 \mathrm{~GB} 1 GB, 且大于 0   B 0 \mathrm{~B} 0 B


试题 E \mathrm{E} E : 斐波那契数组

时间限制: 3.0   s 3.0 \mathrm{~s} 3.0 s 内存限制: 512.0 M B 512.0 \mathrm{MB} 512.0MB 本题总分: 15 分

【问题描述】

如果数组 A = ( a 0 , a 1 , ⋯   , a n − 1 ) A=\left(a_{0}, a_{1}, \cdots, a_{n-1}\right) A=(a0,a1,,an1) 满足以下条件, 就说它是一个斐波那契数组:

  1. n ≥ 2 n \geq 2 n2;
  2. a 0 = a 1 a_{0}=a_{1} a0=a1;
  3. 对于所有的 i ( i ≥ 2 ) i(i \geq 2) i(i2), 都满足 a i = a i − 1 + a i − 2 a_{i}=a_{i-1}+a_{i-2} ai=ai1+ai2

现在, 给出一个数组 A A A, 你可以执行任意次修改, 每次修改将数组中的某个位置的元素修改为一个大于 0 的整数。请问最少修改几个元素之后, 数组 A A A会变成一个斐波那契数组。

【输入格式】

输入的第一行包含一个整数 n n n, 表示数组 A A A 中的元素个数。

第二行包含 n n n 个整数 a 0 , a 1 , ⋯   , a n − 1 a_{0}, a_{1}, \cdots, a_{n-1} a0,a1,,an1, 相邻两个整数之间用一个空格分隔。

【输出格式】

输出一行包含一个整数表示最少需要修改数组 A A A 中的几个元素之后, 数组 A A A 可以变为一个斐波那契数组。

【样例输入】

5 \begin{array}{llll}5 \end{array} 5

1 2 4 4 8 \begin{array}{llll}1&2 &4&4&8\end{array} 12448

【样例输出】

3 \begin{array}{llll}3 \end{array} 3

【样例说明】

将原数组修改为 ( 1 , 1 , 2 , 3 , 5 ) (1,1,2,3,5) (1,1,2,3,5), 最少修改三个元素变成了一个斐波那契数组。

【评测用例规模与约定】

对于所有评测用例, 2 ≤ n ≤ 1 0 5 , 1 ≤ a i ≤ 1 0 6 2 \leq n \leq 10^{5}, 1 \leq a_{i} \leq 10^{6} 2n105,1ai106


试题 F: 最大公约数

时间限制: 3.0   s 3.0 \mathrm{~s} 3.0 s 内存限制: 512.0 M B 512.0 \mathrm{MB} 512.0MB 本题总分: 15 分

【问题描述】

给定一个数组, 每次操作可以选择数组中任意两个相邻的元素 x , y x, y x,y 并将其中的一个元素替换为 gcd ⁡ ( x , y ) \operatorname{gcd}(x, y) gcd(x,y), 其中 gcd ⁡ ( x , y ) \operatorname{gcd}(x, y) gcd(x,y) 表示 x x x y y y 的最大公约数。

请问最少需要多少次操作才能让整个数组只含 1 。

【输入格式】

输入的第一行包含一个整数 n n n, 表示数组长度。

第二行包含 n n n 个整数 a 1 , a 2 , ⋯   , a n a_{1}, a_{2}, \cdots, a_{n} a1,a2,,an, 相邻两个整数之间用一个空格分隍。

【输出格式】

输出一行包含一个整数, 表示最少操作次数。如果无论怎么操作都无法满足要求, 输出 -1 。

【样例输入】

2 \begin{array}{llll}2 \end{array} 2

4 6 9 \begin{array}{llll}4&6&9\end{array} 469

【样例输出】

4 \begin{array}{llll}4 \end{array} 4

【评测用例规模与约定】

对于 30 % 30 \% 30% 的评测用例, n ≤ 500 , a i ≤ 1000 n \leq 500, a_{i} \leq 1000 n500,ai1000

对于 50 % 50 \% 50% 的评测用例, n ≤ 5000 , a i ≤ 1 0 6 n \leq 5000, a_{i} \leq 10^{6} n5000,ai106;

对于所有评测用例, 1 ≤ n ≤ 100000 , 1 ≤ a i ≤ 1 0 9 1 \leq n \leq 100000,1 \leq a_{i} \leq 10^{9} 1n100000,1ai109


试题 G: 交通信号

时间限制: 3.0   s 3.0 \mathrm{~s} 3.0 s 内存限制: 512.0 M B 512.0 \mathrm{MB} 512.0MB 本题总分: 20 分

【问题描述】

LQ 市的交通系统可以看成由 n n n 个结点和 m m m 条有向边组成的有向图. 在每条边上有一个信号灯,会不断按绿黄红黄绿黄红黄… 的顺序循环 (初始时刚好变到绿灯)。当信号灯为绿灯时允许正向通行, 红灯时允许反向通行, 黄灯时不允许通行。每条边上的信号灯的三种颜色的持续时长都互相独立, 其中黄灯的持续时长等同于走完路径的耗时。当走到一条边上时, 需要观察边上的信号灯,如果允许通行则可以通过此边, 在通行过程中不再受信号灯的影响: 否则需要等待, 直到允许通行。

请问从结点 s s s 到结点 t t t 所需的最短时间是多少, 如果 s s s 无法到达 t t t 则输出 -1 。

【输入格式】

输入的第一行包含四个整数 n , m , s , t n, m, s, t n,m,s,t, 相邻两个整数之间用一个空格分哹。

接下来 m m m 行, 每行包含五个整数 u i , v i , g i , r i , d i u_{i}, v_{i}, g_{i}, r_{i}, d_{i} ui,vi,gi,ri,di, 相邻两个整数之间用一个空格分隔, 分别表示一条边的起点, 终点, 绿灯、红灯的持续时长和距离 (黄灯的持续时长)。

【输出格式】

输出一行包含一个整数表示从结点 s s s 到达 t t t 所需的最短时间。

【样例输入】

4 4 1 4 \begin{array}{llll}4 & 4 & 1 & 4\end{array} 4414

1 2 1 2 6 \begin{array}{lllll}1 & 2 & 1 & 2 & 6\end{array} 12126

4 2 1 1 5 \begin{array}{llllll}4 & 2 & 1 & 1 & 5\end{array} 42115

1 3 1 1 1 \begin{array}{llllll}1 & 3 & 1 & 1 & 1\end{array} 13111

3 4 1 99 1 \begin{array}{lllll}3 & 4 & 1 & 99 & 1\end{array} 341991

【样例输出】

11 \begin{array}{llll}11\end{array} 11

【评测用例规模与约定】

对于 40 % 40 \% 40% 的评测用例, n ≤ 500 , 1 ≤ g i , r i , d i ≤ 100 n \leq 500,1 \leq g_{i}, r_{i}, d_{i} \leq 100 n500,1gi,ri,di100

对于 70 % 70 \% 70% 的评测用例, n ≤ 5000 n \leq 5000 n5000

对于所有评测用例, 1 ≤ n ≤ 100000 , 1 ≤ m ≤ 200000 , 1 ≤ s , t ≤ n 1 \leq n \leq 100000,1 \leq m \leq 200000,1 \leq s, t \leq n 1n100000,1m200000,1s,tn, 1 ≤ u i , v i ≤ n , 1 ≤ g i , r i , d i ≤ 1 0 9 1 \leq u_{i}, v_{i} \leq n, 1 \leq g_{i}, r_{i}, d_{i} \leq 10^{9} 1ui,vin,1gi,ri,di109

试题 H \mathrm{H} H : 点亮

时间限制: 3.0   s 3.0 \mathrm{~s} 3.0 s 内存限制: 512.0 M B 512.0 \mathrm{MB} 512.0MB 本题总分: 20 分

【问题描述】

小蓝最近迷上了一款名为 《点亮》的迷题游戏, 游戏在一个 n × n n \times n n×n 的格子棋盘上进行, 棋盘由黑色和白色两种格子组成, 玩家在白色格子上放置灯泡, 确保任意两个灯泡不会相互照射, 直到整个棋盘上的白色格子都被点亮(每个谜题均为唯一解)。灯泡只会往水平和垂直方向发射光线, 照亮整行和整列, 除非它的光线被黑色格子挡住。黑色格子上可能有从 0 到 4 的整数数字, 表示与其上下左右四个相邻的白色格子共有几个奵泡; 也可能没有数字, 这表示可以在上下左右四个相邻的白色格子处任意选择几个位置放置灯泡。游戏的目标是选择合适的位置放置灯泡, 使得整个棋盘上的白色格子都被照亮。

例如, 有一个黑色格子处数字为 4 , 这表示它周围必须有 4 个灯泡, 需要在他的上、下、左、右处分别放置一个灯泡: 如果一个黑色格子处数字为 2 , 它的上下左右相邻格子只有 3 个格子是白色格子, 那么需要从这三个白色格子中选择两个来放置灯泡; 如果一个黑色格子没有标记数字, 且其上下左右相邻格子全是白色格子, 那么可以从这 4 个白色格子中任选出 0 至 4 个来放置灯泡。

题目保证给出的数据是合法的, 黑色格子周围一定有位置可以放下对应数量的奵泡。且保证所有谜题的解都是唯一的。

现在,给出一个初始的棋盘局面,请在上面放置好灯泡,使得整个棋盘上的白色格子被点亮。

【输入格式】

输入的第一行包含一个整数 n n n, 表示棋盘的大小。

接下来 n n n 行, 每行包含 n n n 个字符, 表示给定的棋盘。字符. 表示对应的格子为白色, 数字字符 0 、 1 、 2 、 3 、 4 0 、 1 、 2 、 3 、 4 01234 表示一个有数字标识的黑色格子, 大写字母 X 表示没有数字标识的黑色格子。

【输出格式】

输出 n n n 行, 每行包含 n n n 个字符, 表示答案。大写字母 ○ 表示对应的格子包含奵泡, 其它字符的意义与输入相同。

【样例输入】

在这里插入图片描述

【样例输出】

在这里插入图片描述

【样例说明】

答案对应的棋盘布局如下图所示:

在这里插入图片描述

【评测用例规模与约定】

对于所有评测用例, 2 ≤ n ≤ 5 2 \leq n \leq 5 2n5, 且棋盘上至少有 15 % 15 \% 15% 的格子是黑色格子。


试题 I: 打折

时间限制: 5.0   s 5.0 \mathrm{~s} 5.0 s 内存限制: 512.0 M B 512.0 \mathrm{MB} 512.0MB 本题总分: 25 分

【问题描述】

小蓝打算采购 n n n 种物品, 每种物品各需要 1 个。小蓝所住的位置附近一共有 m m m 个店铺, 每个店铺都出售着各种各样的物品。

i i i 家店铺会在第 s i s_{i} si 天至第 t i t_{i} ti 天打折, 折扣率为 p i p_{i} pi, 对于原件为 b b b 的物品, 折后价格为 ⌊ b ⋅ p j 100 ⌋ \left\lfloor\frac{b \cdot p j}{100}\right\rfloor 100bpj 。其它时间需按原价购买。

小蓝很仙, 他只能选择一天的时间去采购这些物品。请问, 他最少需要花多少钱才能买到需要的所有物品。

题目保证小蓝一定能买到需要的所有物品。

【输入格式】

输入的第一行包含两个整数 n , m n, m n,m, 用一个空格分隔, 分别表示物品的个数和店铺的个数。

接下来依次包含每个店铺的描述。每个店铺由若干行组成, 其中第一行包含四个整数 s i , t i , p i , c i s_{i}, t_{i}, p_{i}, c_{i} si,ti,pi,ci, 相邻两个整数之间用一个空格分隔, 分别表示商店优惠的起始和结束时间、折扣率以及商店内的商品总数。之后接 c i c_{i} ci 行, 每行包含两个整数 a j , b j a_{j}, b_{j} aj,bj, 用一个空格分隔, 分别表示该商店的第 j j j 个商品的类型和价格。商品的类型由 1 至 n n n 编号。

【输出格式】

输出一行包含一个整数表示小蓝需要花费的最少的钱数。

【样例输入】

2 2 \begin{array}{llll}2& 2 \end{array} 22

1 2 89 1 \begin{array}{llll}1 & 2 & 89 & 1\end{array} 12891

9 7 \begin{array}{llll}9&7\end{array} 97

3 4 77 1 \begin{array}{llll}3 & 4 & 77 & 1\end{array} 34771

2 15 \begin{array}{llll}2 &15 \end{array} 215

【样例输出】

101 \begin{array}{llll}101\end{array} 101

【评测用例规模与约定】

对于 40 % 40 \% 40% 的评测用例, n , m ≤ 500 , s i ≤ t i ≤ 100 , ∑ c i ≤ 2000 n, m \leq 500, s_{i} \leq t_{i} \leq 100, \sum c_{i} \leq 2000 n,m500,siti100,ci2000;

对于 70 % 70 \% 70% 的评测用例, n , m ≤ 5000 , ∑ c i ≤ 20000 n, m \leq 5000, \sum c_{i} \leq 20000 n,m5000,ci20000;

对于所有评测用例, 1 ≤ n , m ≤ 100000 , 1 ≤ c i ≤ n , ∑ c i ≤ 400000 1 \leq n, m \leq 100000,1 \leq c_{i} \leq n, \sum c_{i} \leq 400000 1n,m100000,1cin,ci400000, 1 ≤ s i ≤ t i ≤ 1 0 9 , 1 < p i < 100 , 1 ≤ a j ≤ n , 1 ≤ b j ≤ 1 0 9 1 \leq s_{i} \leq t_{i} \leq 10^{9}, 1<p_{i}<100,1 \leq a_{j} \leq n, 1 \leq b_{j} \leq 10^{9} 1siti109,1<pi<100,1ajn,1bj109


试题 J: 宝石收集

时间限制: 5.0   s 5.0 \mathrm{~s} 5.0 s 内存限制: 512.0 M B 512.0 \mathrm{MB} 512.0MB 本题总分: 25 分

【问题描述】

小蓝最近迷上了一欨收集宝石的游戏, 在游戏中给出了一幅藏宝图, 藏宝图可以看做是由 n n n 个顶点组成的一个有向图, 顶点编号为 0 , 1 , 2 , ⋯   , n − 1 0,1,2, \cdots, n-1 0,1,2,,n1 。每个顶点有且仅有一颗宝石,可能是红宝石或蓝宝石。

小蓝有一次收集宝石的机会, 他可以任意选择一个顶点当做起点, 沿着有向边前进, 经过的顶点上的宝石都会被自动收集 (包括起点和终点), 直到前方无路可走或者小蓝想退出时停止本次收集。小蓝可以多次经过同一个顶点, 但只会在第一次到达顶点时获得宝石, 后面再次到达时不会再获得宝石。

收集结束后, 小蓝可以用手中的宝石合成紫晶宝石: 一颗红宝石加一颗蓝宝石就可以合成一颗紫晶宝石。

小蓝想在收集结束后合成尽可能多的紫晶宝石, 请帮他规划出一条最优路径, 告诉他最多可以合成多少颗紫晶宝石。

【输入格式】

输入的第一行包含一个整数 n n n, 表示有顶点的个数。

第二行包含一个由 0 、 1 0 、 1 01 组成的长度为 n n n 的字符串, 从左至右依次表示第 0 至 n − 1 n-1 n1 个顶点处宝石的种类, 0 表示红宝石, 1 表示蓝宝石。

第三行包含一个整数 m m m ,表示图中有 m m m 条有向边。

接下来 m m m 行, 每行包含两个整数 s , t s, t s,t, 用一个空格分隔, 表示一条从 s s s t t t 的有向边。

【输出格式】

输出一行包含一个整数, 表示小蓝最多能合成几颗紫晶宝石。

【样例输入】

6 \begin{array}{llll}6\end{array} 6

000111 \begin{array}{llll}000111\end{array} 000111

6 \begin{array}{llll}6\end{array} 6

0 1 \begin{array}{llll}0&1\end{array} 01

1 2 \begin{array}{llll}1&2\end{array} 12

3 1 \begin{array}{llll}3&1\end{array} 31

2 3 \begin{array}{llll}2&3\end{array} 23

2 4 \begin{array}{llll}2&4\end{array} 24

2 5 \begin{array}{llll}2&5\end{array} 25

【样例输出】

2 \begin{array}{llll}2\end{array} 2

【样例说明】

在这里插入图片描述

样例如上图所示, 选择 0 号顶点作为起点, 按照 0 → 1 → 2 → 3 → 1 → 0 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 1 \rightarrow 01231 2 → 4 2 \rightarrow 4 24 的行进路线, 可以获得 3 颗红宝石和 2 颗蓝宝石, 最终可以合成 2 颗紫晶宝石: 他也可以按照 1 → 2 → 3 → 1 → 2 → 4 1 \rightarrow 2 \rightarrow 3 \rightarrow 1 \rightarrow 2 \rightarrow 4 123124 行进, 结果也是 2 。找不到比 2 更大的答案了。

【评测用例规模与约定】

对于所有的评测用例, 1 ≤ n ≤ 2000 , 0 ≤ m ≤ 1 0 5 , 0 ≤ s ≤ n − 1 1 \leq n \leq 2000,0 \leq m \leq 10^{5}, 0 \leq s \leq n-1 1n2000,0m105,0sn1, 0 ≤ t ≤ n − 1 0 \leq t \leq n-1 0tn1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1661844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPF之绑定属性值转换

1&#xff0c;使用Binding.Format属性简易设置绑定的属性数据显示格式。 <TextBox Grid.Row"2" Grid.Column"1"><TextBox.Text><Binding Path"UnitCost" StringFormat"{}{0:C3}" > …

深入理解Django:中间件与信号处理的艺术

title: 深入理解Django&#xff1a;中间件与信号处理的艺术 date: 2024/5/9 18:41:21 updated: 2024/5/9 18:41:21 categories: 后端开发 tags: Django中间件信号异步性能缓存多语言 引言 在当今的Web开发领域&#xff0c;Django以其强大的功能、简洁的代码结构和高度的可扩…

手把手YOLOv9训练推理!

1,原理讲解 文章地址:https://arxiv.org/pdf/2402.13616.pdf 代码地址:https://github.com/WongKinYiu/y YOLOv9的变化相对较小,它仍然基于YOLOv5的代码架构。这就意味着YOLOv5、YOLOv7和YOLOv9实际上是“同一个框架”。如果你已经熟悉其中一个,那么你将能够轻松掌握另外…

多线程-写入读取文件,使用同步逻辑

在一个进程中&#xff0c;创建一个子线程。 主线程负责:向文件中写入数据 子线程负责:从文件中读取数据 要求使用线程的同步逻辑&#xff0c;保证一定在主线程向文件中写入数据成功之后&#xff0c;子线程才开始运行&#xff0c;去读取文件中的数据 #include <stdio.h> …

【竞技宝jjb.lol】MSI:换线战术或将成为BLG命门

北京时间2024年5月10日,英雄联盟2024MSI季中赛继续进行,昨日迎来胜败分组赛首轮BLG对阵PSG。本以为这场比赛没有任何悬念,BLG将会非常轻松地击败PSG,没想到最终PSG两度扳平比分,BLG决胜局抗住压力才艰难取胜。虽然赢下了比赛,但BLG低迷的状态还是在比赛结束后遭到网友们的热议。…

jenkins持续集成框架

1 什么是jenkins Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具&#xff0c;起源于Hudson&#xff08;Hudson是商用的&#xff09;&#xff0c;主要用于持续、自动的构建/测试软件项目、监控外部任务的运行&#xff08;这个比较抽象&#xff0c;暂且写上&#xff0…

信号量、PV操作及软考高级试题解析

信号量 在并发系统中&#xff0c;信号量是用于控制公共资源访问权限的变量。信号量用于解决临界区问题&#xff0c;使得多任务环境下&#xff0c;进程能同步运行。此概念是由荷兰计算机科学家Dijkstra在1962年左右提出的。信号量仅仅跟踪还剩多少资源可用&#xff0c;不会跟踪…

AIGC 时代软件工程师:前景、需求与大模型提效探究

过去&#xff0c;在互联网浪潮汹涌的十年来&#xff0c;软件工程师的角色愈发凸显其不可或缺的价值。随着AIGC&#xff08;人工智能生成内容&#xff09;时代的到来&#xff0c;软件开发的每个环节都正在经历一场前所未有的革新。今天&#xff0c;我们深入研究了大型AI模型如何…

【C++STL详解(十)】--------priority_queue的模拟实现

目录 前言 一、堆的向上调整算法 二、堆的向下调整算法 三、优先队列模拟实现 Ⅰ、接口总览 Ⅱ、各个接口实现 1.构造函数 2.仿函数 3.向上调整 4.向下调整 5.其余接口 Ⅲ、完成代码 前言 上节内容我们简单的介绍了关于priority_queue的使用内容&#xff0c;我们明白…

鸿蒙OpenHarmony开发板解析:【系统能力配置规则】

如何按需配置部件的系统能力 SysCap&#xff08;SystemCapability&#xff0c;系统能力&#xff09;是部件向开发者提供的接口的集合。 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 部件配置系统…

17 【Aseprite 作图】参考图和颜色

参考图 Aseprite 作图&#xff0c;“打开 - 一张参考图”&#xff0c;再把参考图拉到右边&#xff0c;就可以得到参考图和缩略图 取消选区 通过“选择 - 取消选择”&#xff0c;可以 取消选区 复制参考图的颜色 打开参考图后&#xff0c;参考图的调色板就会出现参考图所有的…

视频号小店保证金,服务费,手续费是多少?货款结算周期多长?

大家好&#xff0c;我是电商糖果 随着视频号小店越来越火&#xff0c;很多商家都想入驻小店。 入驻之前大家对视频号的收费问题都比较好奇。 糖果2022年就开始做店的了&#xff0c;对小店的保证金&#xff0c;服务费的&#xff0c;手续费&#xff0c;货款结算周期都非常了解…

Windows11 同时安装jdk8和jdk17 可切换

Windows11 同时安装jdk8和jdk17 可切换 死忠于JDK8的码农们&#xff0c;可能不得不做出一些改变的 因为在springboot3最低也是只能用17 并且最近如果创建springboot项目的时候&#xff0c;你会发现&#xff0c;最低也是17的 并且&#xff0c;如果使用springcloud开发&#x…

axios异步操作第一篇

1 同步请求和异步请求 客户端给java后台程序发送请求&#xff0c;发送请求的方式有两种&#xff1a; 同步请求 同步请求发送方式&#xff1a; 1 浏览器地址栏&#xff0c;输入url&#xff1a;http://localhost:8080/web-app/xxxServlet 2 3 删除 4 javascript:location.hr…

CrossManager软件安装

目录 一、CrossManager软件 1.1 下载安装程序&#xff1a; 1.2 注册-登录 1.3 运行安装程序 1.4 完成安装&#xff1a; 1.5 激活软件&#xff1a; 文章底部可获取安装包---CrossManager软件安装&#xff08;有效期30天&#xff09; 当涉及到专业的软件安装和配置时&…

脑机接口(BCI)助力失语者重获交流能力:纽约大学最新研究突破

近年来&#xff0c;脑机接口&#xff08;BCI&#xff09;技术取得了显著的进展&#xff0c;引发了科研界和公众的广泛关注。特别是在失语症的治疗领域&#xff0c;BCI技术为那些因神经系统缺陷而失去交流能力的患者带来了新的希望。失语症不仅严重影响了患者的日常生活&#xf…

通俗的理解网关的概念的用途(四):什么是网关设备?(网络层面)

任何一台Windows XP操作系统之后的个人电脑、Linux操作系统电脑都可以简单的设置&#xff0c;就可以成为一台具备“网关”性质的设备&#xff0c;因为它们都直接内置了其中的实现程序。MacOS有没有就不知道&#xff0c;因为没用过。 简单的理解&#xff0c;就是运行了具备第二…

给网络镜像模式下的 WSL2 使用 127.0.0.1代理的方法

网络镜像模式下的WSL2虽然复制了宿主机windows的ip&#xff0c;但是仍然无法访问127.0.0.1的代理。经过调查&#xff0c;发现因为WSL2从应用商店下载而来&#xff0c;所以可能是UWP应用&#xff0c;所以需要用工具解除环回代理限制。

数据中心法

数据中心法是实现词法分析器的结构化方法。通过设计主表和子表分开存储状态转移信息&#xff0c;实现词法分析器的控制逻辑和数据结构分离。 主要解决了状态爆炸、难以维护和复杂性的问题。 状态爆炸是指当状态和转移较多时&#xff0c;单一使用一个表来存储所有的信息的话会导…

韩顺平0基础学Java——第8天

p155-168 数组&#xff08;第六章&#xff09; 数组可以存放多个同一类型的数据&#xff0c;数组也是一种数据类型&#xff08;引用类型&#xff09;。 即&#xff0c;数组就是一组数据~ 例&#xff1a;double [] hens {1,2,3,4,5,6}; 新建了一组鸡&#xff0c;里面有6个。…