南京信息工程大学 第二届程序设计大赛团队赛 试题

南京信息工程大学 第二届程序设计大赛团队赛 题解

A - Offer

题目描述

某位同学在今年的校招中同时收到了来自 阿里 、 腾讯 和 百度 的 Offer。这让他感到难以选择。在他的心目中,三个 Offer 各有一个吸引力,如果存在一个吸引力最高的 Offer,他就会选择那个 Offer。否则他会在犹豫和纠结中错过确认 Offer 的 DDL,从而呆在南京信息工程大学度过余生。

现在给出三个 Offer 对他的吸引力,请输出他最终的去向。

输入描述

三个整数 A , T , B A,T,B A,T,B 分别表示 阿里 、 腾讯 和 百度 的 Offer 的吸引力,输入值保证在 int 范围内。

输出描述

输出一个字符串,应当为 Alibaba , Tencent , BaiduNUIST ,输出区分大小写。

样例输入

1 0 0

样例输出

Alibaba

B - 负鼠的工资

题目描述

负鼠的校招工资为基础月薪 x 元。就在沉浸在自己财富自由的喜悦当中时,突然她想起来自己需要交五险一金。

根据最新的政策,五险一金的计算公式如下:

  • 养老保险:月薪的 8%
  • 失业保险:月薪的 0.5%
  • 工伤保险:0
  • 生育保险:0
  • 医疗保险:月薪的 2%
  • 住房公积金:月薪 12%

同时,负鼠所在的公司会给她评绩效,分为一下三档:

  1. 一年额外获得 6 个月年终奖
  2. 一年额外获得 3 个月年终奖
  3. 没有年终奖,并且惨遭主管约谈

注意:只有月薪需要交五险一金,年终奖是一次性发放(不需扣除任何金额)。

由于负鼠的脑容量不够,所以暂时就不计算个人所得税了。

现在她已经知道了五险一金的计算方法和自己的绩效,一年总收入的计算公式如下图所示:

一年总收入 = 月薪(扣完五险一金)*12 + 年终奖

请计算出她的一年总收入是多少,如果她一年的总收入小于 100000 元,她会觉得还不如去考公务员来的实在,这种情况下请输出 GongWuYuan

输入描述

两个整数 a 和 b,分别表示负鼠的月薪(单位:元)和负鼠的绩效。

输出描述

一个整数,表示负鼠交完五险一金后的年薪。

样例输入 1

10000 2

样例输出 1

123000

样例输入 2

2000 1

样例输出 2

GongWuYuan

样例解释

样例 1:

一个月需要交五险一金:2250 元

绩效为第 2 档,获得 3 个月年终奖:10000*3 元

一年总收入 = (10000-2250)* 12 + 10000 *3 = 123000 元

样例 2:

总收入计算同上,很明显未满 100000 元,输出 GongWuYuan

数据规模与描述

1000 ≤ a ≤ 100000 1000 \leq a \leq 100000 1000a100000,数据保证 a 是 1000 的整数倍。

1 ≤ b ≤ 3 1 \leq b \leq 3 1b3

C - 选队出征

题目描述

南京信息工程大学第二届程序设计大赛团队赛开始啦!

这是一场模拟 ACM 的比赛。正式 ACM 比赛设有若干赛站,先通过网络预选赛选拔出出线队伍,出线队伍再进行线下比赛。

假设你现在是 ACM 队的教练,今年有两个赛站,你的队伍共获得了两个线下赛名额,每个名额可以任选一个赛站参赛一次。

你手下有两个队伍,你打算给他们每队一个名额。很巧的是,你做了个梦,知道了每个赛站其它队伍的实力值。比赛的排名为实力值的降序排列,保证没有实力相同的队伍,且队伍实力值均为一千以内的正整数。

除了实力,策略也是很重要的一环,比如比赛中的做题顺序,比如赛站的选择!你现在想要知道,如何安排才能让两个队伍获得的排名之和最小。请输出这个最小排名之和。

输入描述

输入共 3 行

前两行,每行第 1 个正整数 N i N_i Ni ( 1 ⩽ N i ⩽ 100 ) (1 \leqslant N_i \leqslant 100) (1Ni100) 表示第 i i i 个赛站的其它队伍数。后面有 N i N_i Ni 个用空格隔开的正整数,表示这些队伍的实力值。

第三行,两个用空格隔开的正整数,表示你的两个队伍的实力值。

输出描述

一个正整数,表示最小排名之和。(排名从 1 开始)

样例输入

3 10 6 1
4 13 11 5 4
12 2

样例输出

5

by idyllic

D - SCV

题目描述

G s i m t Gsimt Gsimt 在最近沉迷于星际争霸 II。

在星际争霸 II 中,玩家一开始有 a a a 个 scv(一种采矿的机器人)和 1 1 1 个基地。

地图上总共有 x x x 个矿场,每个矿场上最多建造一个基地,每个基地最多可以容纳 16 16 16 个 scv 同时工作,每个 scv 每工作 1 1 1 秒可以获得 b b b 个矿石。

每建造一个基地需要消耗数量为 c c c 的矿石,每建造一个 scv 需要消耗数量为 d d d 的矿石。

因为 G s i m t Gsimt Gsimt 开了修改器,所以 scv 移动、建造基地、建造 scv 均不需要时间。

G s i m t Gsimt Gsimt 想知道,在他的完美运营下, t t t 秒后他最多可以积攒多少矿石。

输入描述

一行 6 6 6 个正整数 a ( 0 ⩽ a ⩽ 16 ) , b , c , d , x ( 1 ⩽ b , c , d , x ⩽ 400 ) , t ( 1 ⩽ t ⩽ 1 0 9 ) a(0 \leqslant a \leqslant 16),b,c,d,x(1 \leqslant b,c,d,x \leqslant 400),t(1 \leqslant t \leqslant 10^9) a0a16,b,c,d,x1b,c,d,x400,t1t109

输出描述

共一行,输出 t t t 秒后 G s i m t Gsimt Gsimt 最多可以积攒多少矿石。

样例输入

2 25 5 200 50 13

样例输出

675

by Gsimt

E - 团子,团子

题目描述

小水和阿水是兄弟,他们都喜欢吃团子。

有一天他们回到家,看到桌上放着 n 个团子。由于他们很久没吃团子了,所以他们都想一个人吃个爽。于是两人决定靠实力(运气)来决定团子的归属,谁赢谁就能获得所有的团子。

两个人轮流进行操作,小水先手,规则如下:

  • 每次操作可以拿走一定数量的团子(至少一个),使得剩余团子数变成此次操作前的团子数的因子。
  • 如果某次操作后剩余的团子数的因子个数变成了奇数,则操作者输掉这次比赛。

请问如果两人都采用最佳策略,最后谁会获胜。

输入描述

输入一个数 n ( 2 ⩽ n ⩽ 1 0 9 ) n (2 \leqslant n \leqslant 10^9) n2n109,代表桌上共有 n 个团子。

输出描述

如果小水获胜,则输出 shui win ,否则输出 shui shui win

样例输入

12345

样例输出

shui win

by Gsimt

F - 蒙德旅行

题目描述

蒙德有 n n n 个村庄、其中有 m m m 条单向道路将它们连接。某天,风神巴巴托斯一时兴起,想用自己的神力修建一些桥梁,桥梁的修建规则如下:

巴巴托斯给村庄编号,依次为 1 1 1 ~ n n n,又每个村庄赋予了美观值,编号为 i i i 的村庄美观值为 V i V_i Vi。对于编号分别为 i i i j j j 的任意两个村庄,如果 V i V_i Vi & V j V_j Vj = = = V j V_j Vj (这里的 & 指的是二进制与运算),那么他就修建一条由 i i i 通向 j j j 的单向桥梁。

旅行者无论通过一条道路还是一座桥梁,都需要花费单位 1 1 1 的时间。现在我们想知道从 1 1 1 号村庄到 1 1 1 ~ n n n 号村庄分别所需要的最短时间。

输入描述

第一行两个整数 n n n m m m

第二行 n n n 个整数,表示 V 1 , V 2 , . . . , V n V_1,V_2,...,V_n V1,V2,...,Vn

接下来的 m m m 行,每行两个整数 u u u, v v v, 表示从 u u u 号村庄到 v v v 号村庄有一条单向道路。

输出描述

n n n 行,第 i i i 行表示从 1 1 1 号村庄到 i i i 号村庄所需要的时间。如果无法到达,输出 − 1 -1 1

样例输入

5 2
5 4 2 3 7
1 4
2 3

样例输出

0
1
2
1
-1

数据规模与约定

n ≤ 2 × 1 0 5 n≤2\times10^5 n2×105

m ≤ 3 × 1 0 5 m≤3\times10^5 m3×105

V i ≤ 2 20 V_i≤2^{20} Vi220

G - 矩阵变换

题目描述

现有一 n n n m m m 列的 01 01 01 矩阵,可以进行如下操作:把一个 0 0 0 变成 1 1 1,同时使所有和这个 0 0 0 同行同列的 1 1 1 变成 0 0 0。现给你矩阵 A A A,问你是否可以通过若干次操作将矩阵 A A A 变换成矩阵 B B B

输入描述

第一行两个正整数 n , m n,m n,m ( 1 ⩽ n , m ⩽ 1000 ) (1 \leqslant n,m \leqslant 1000) (1n,m1000)

第二行到第 n + 1 n+1 n+1 行,每行 m m m 个用空格隔开的 0 0 0 1 1 1, 表示矩阵 A。

n + 2 n+2 n+2 行到第 n ∗ 2 + 1 n*2+1 n2+1 行,每行 m m m 个用空格隔开的 0 0 0 1 1 1, 表示矩阵 B。

输出描述

如果可以输出 1 1 1,否则输出 0 0 0

样例输入

2 2
1 0
1 1
0 1
0 0

样例输出

1

by idyllic

H - 重薪排序

题目描述

今年,ThinkSpirit 实验室在 CPC 竞赛上收获颇丰,获得若干金奖、银奖、铜奖。

但是,因为参加了多场比赛,每场比赛的比赛时间不一样,有先后顺序,所以拿回来的奖牌的顺序是按时间顺序排列的,而不是按金银铜奖的顺序排列的。

现在让你帮忙整理奖牌,使得它们按照金银铜奖的顺序重薪排列,即把金奖放在最前面,银奖放在中间,铜奖放在最后面。

值得注意的是,因为奖牌已经摆放好了,所以你只能两两交换其中的奖牌,让它们按照需要的顺序重薪排列,你现在想知道是否存在一个最小的交换次数来完成奖牌的整理工作。

为了便于表示,定义 Au 表示金奖, Ag 表示银奖, Cu 表示铜奖。

输入描述

单组输入,输入共 1 行

一行非空字符串 s s s ,表示奖牌的顺序,保证字符串中不含空格且字符串长度不大于 2 ∗ 1 0 6 2*10^6 2106

输出描述

输出一个整数,表示重薪排序,完成整理工作所需的最小交换次数。

样例输入 1

AuCuAg

样例输出 1

1

样例输入 2

AgAuAuAgCuAgAuCuCu

样例输出 2

2

样例解释

对于第 1 组样例 AuCuAg ,只要将第 2 个位置上的奖牌与第 3 个位置上奖牌交换即可满足条件,所以输出最小交换次数为 1 。

对于第 2 组样例 AgAuAuAgCuAgAuCuCu ,先将第 5 个奖牌与第 7 个位置上的奖牌交换,再将第 5 个与第 1 个交换即可满足条件,所以输出最小交换次数 2。

by 朵在薪哩

I - 夏日旅行

题目描述

夏天的时候, T h i n k S p i r i t ThinkSpirit ThinkSpirit 实验室去海边玩了。蒙起眼睛的 C r u s h Crush Crush 举起了木棒,他要在大家的帮助下打西瓜。

沙滩可以被描述成一个 N × M N\times M N×M 的网格,其中某些格子为不可移动的障碍物。 C r u s h Crush Crush 总是在格子上,始终在格子上移动,且不会走出边界。西瓜也处于一个格子上,当 C r u s h Crush Crush 走到西瓜所在格子,他就会举起木棒,重重挥下 —— 啪!

好心的其它成员当然会说出提示,来帮助 C r u s h Crush Crush ,每个提示都会让 C r u s h Crush Crush 走向相邻的一个可走的格子。问最少需要多少条提示,才能让 C r u s h Crush Crush 打到西瓜?

输入描述

第一行两个正整数 N N N, M M M( N N N, M ⩽ 50 M\leqslant50 M50),表示沙滩的大小。

接下来 N 行,每行 M 个用空格隔开的 0 或 1,表示沙滩的构造。其中,0 表示此格点无障碍,1 表示此格点为不可移动的障碍物。

最后一行输入 4 个整数,分别表示 Crush(起始点)和西瓜(目标点)所在网格的行号与列号。(行号和列号从 1 开始,行号从上往下递增,列号从左往右递增。)

输出描述

一个整数,表示需要的最小提示数,如果无论接收多少提示 C r u s h Crush Crush 都不能抵达西瓜,输出 − 1 -1 1

样例输入

9 10
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 1 0
3 3 4 4 

样例输出

6

J - 生活在二叉树上

现代社会以海德格尔的一句 “一切实践传统都已经瓦解完了” 为嚆矢。滥觞于家庭与社会传统的期望正失去它们的借鉴意义。但面对看似无垠的未来天空,我想循卡尔维诺 “树上的男爵” 的生活好过过早地振翮。

一棵完美二叉树上有 n n n 片叶子,每片叶子上标有一个整数。如果一棵二叉树深度为 k k k 且结点数为 2 k − 1 2^k-1 2k1,那么它称为完美二叉树(满二叉树),每层的结点数都达到了最大值。

作为一个生活在二叉树上的人,你想要在树上做 m m m 次操作。

操作 1 1 1 l l l r r r k k k:输出第 l l l 片叶子到第 r r r 片叶子上所有数分别乘 2 k 2^k 2k 的和。

形式化地讲,假如所有叶子按顺序排列为 a a a,第 i 片叶子上的数为 a i a_i ai,那么操作 1 的答案是 ∑ i = l r 2 k a i \sum_{i=l}^{r}{2^ka_i} i=lr2kai

操作 2 2 2 l 1 l_1 l1 r 1 r_1 r1 l 2 l_2 l2 r 2 r_2 r2:按顺序一一对应地交换第 l 1 l_1 l1​ 到 r 1 r_1 r1​ 片叶子和第 l 2 l_2 l2​ 到 r 2 r_2 r2 片叶子。保证 r 1 − l 1 = r 2 − l 2 r_1 - l_1 = r_2 - l_2 r1l1=r2l2​。被交换的叶子的数量是 2 2 2 的幂。 r 1 r_1 r1​ 和 r 2 r_2 r2 2 2 2 的幂。

例如,对于叶子为 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 的完美二叉树:

操作 1 1 1 1 1 1 8 8 8 0 0 0 输出 36 36 36

操作 2 2 2 1 1 1 2 2 2 7 7 7 8 8 8 将序列变为 7 7 7 8 8 8 3 3 3 4 4 4 5 5 5 6 6 6 1 1 1 2 2 2

操作 1 1 1 1 1 1 3 3 3 32 32 32 输出 77309411328 77309411328 77309411328,即 ( 2 32 × 7 ) + ( 2 32 × 8 ) + ( 2 32 × 3 ) = 30064771072 + 34359738368 + 12884901888 = 77309411328 (2^{32} \times 7)+(2^{32} \times 8)+(2^{32} \times 3)= 30064771072+34359738368+12884901888=77309411328 (232×7)+(232×8)+(232×3)=30064771072+34359738368+12884901888=77309411328

用在二叉树上的生活方式体现个体的超越性,保持婞直却又不拘泥于所谓 “遗世独立” 的单向度形象。这便是哈罗德・埃布尔森为我们提供的理想期望范式。生活在二叉树上 —— 始终热爱大地 —— 升上天空。

输入描述

第 1 行:两个正整数 n n n m m m

第 2 行: n n n 个整数。总和不超过 1 0 8 10^8 108

后续 m m m 行,每行以一个整数开头,表示操作种类。

如果是操作 1,该行后继为三个整数,分别表示 l l l, r r r, k k k

如果是操作 2,该行后继为四个整数,分别表示 l 1 l_1 l1, r 1 r_1 r1​, l 2 l_2 l2​, r 2 r_2 r2

数据保证:

  • ∀   0 ≤ i ≤ 16 ,    n = 2 i \forall\,0\le i \le 16,\;n = 2^i 0i16,n=2i
  • 1 ≤ m ≤ 1 0 5 1\le m \le 10^5 1m105
  • 1 ≤ l ≤ r ≤ n 1\le l \le r \le n 1lrn
  • 0 ≤ k ≤ 32 0\le k \le 32 0k32
  • 1 ≤ l 1 ≤ r 1 < l 2 ≤ r 2 ≤ n 1\le l_1\le r_1< l_2 \le r_2 \le n 1l1r1<l2r2n
  • ∀   0 ≤ j ≤ 16 ,    r 1 − l 1 = r 2 − l 2 = 2 j − 1 \forall\,0\le j \le 16,\;r_1-l_1=r_2-l_2=2^j-1 0j16,r1l1=r2l2=2j1
  • ∃   0 ≤ j 1 ≤ 16 ,    r 1 = 2 j 1 \exists\,0\le j_1 \le 16,\;r_1 = 2^{j_1} 0j116,r1=2j1
  • ∃   0 ≤ j 2 ≤ 16 ,    r 2 = 2 j 2 \exists\,0\le j_2 \le 16,\;r_2 = 2^{j_2} 0j216,r2=2j2

输出描述

按操作顺序,每行输出一个整数表示操作 1 的答案。

样例输入

8 3
1 2 3 4 5 6 7 8
1 1 8 0
2 1 2 7 8
1 1 3 32

样例输出

36
77309411328

by Nugine

K - 疫情检测

题目描述

新冠疫情期间,大家闷在家里, idyllic 看到了武汉疫情检测的新闻,于是开始思考无聊的问题。

假设现在有 n n n 个人需要检测,每个人都有 p p p 的概率是患者,且他们得病概率相互独立。现在有一种理想的检测试剂,可以检查出任意一批人中有无患者,但是无法知道每个人的患病情况,且同时只能进行一次检验。同时,为了避免交叉感染,确认有患者的一批人将被单独隔离,不能与其他人参加同一次检测。已知 p p p, 问检查出这 n n n 个人每个人患病情况所需要的期望最小检测次数。

输入描述

第一行一个正整数 n n n ( 1 ⩽ n ⩽ 5000 ) (1\leqslant n\leqslant5000) (1n5000),表示总人数。 第二行一个实数 p p p ( 0 ⩽ p ⩽ 1 ) (0\leqslant p \leqslant 1) (0p1),表示每个人的得病概率。

输出描述

共一行,输出期望最小检测次数,保留 6 6 6 位小数。

样例输入

2 0.1

样例输出

1.290000

样例解释

先对两个人进行一次统一检测,如果结果是无患者,则两个人都不患病,所需检测次数为 1。

如果结果是有患者,则再对其中一人单独检测一次,如果是无病症,则剩下一人必定患病,所需检测次数为 2。如果是有病症,则还需要再检测一次另外一人,所需检测次数为 3。

再乘上发生概率得到最小的检测次数期望: 0.81 ∗ 1 + 0.09 ∗ 2 + 0.1 ∗ 3 = 1.29 0.81*1+0.09*2+0.1*3=1.29 0.811+0.092+0.13=1.29

L - 三元对

题目描述

i d y l l i c idyllic idyllic 现在信仰飞天意面神教,因此他认为数组里的三元对是一个神秘的东西。

现有一数组 A A A,若 ( i , j , k ) (i,j,k) (i,j,k) 满足 A i < A j < A k A_i<A_j<A_k Ai<Aj<Ak i < j < k i<j<k i<j<k。则称 ( i , j , k ) (i,j,k) (i,j,k) 为三元对。

现给你一含有 n n n 个元素的数组 A A A ,问存在多少种 j j j 不同的三元对 ( i , j , k ) (i,j,k) (i,j,k)

输入描述

第一行输入一个正整数 n ( 1 ⩽ n ⩽ 100000 ) n (1 \leqslant n \leqslant 100000) n(1n100000),表示 A A A 数组元素个数。

第二行输入 n n n 个正整数(保证输入的正整数均处于 int 范围内),按下标从小到大的顺序给出 A A A 数组。

输出描述

一个正整数 n n n ,表示 j j j 不同的三元对 ( i , j , k ) (i,j,k) (i,j,k) 种数。

样例输入

5 
1 1 4 2 3 

样例输出

1
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值