2020-2021年度第⼆届全国⼤学⽣算法设计与编程挑战赛(冬季赛)——正式赛(做题过程)

2020-2021年度第⼆届全国⼤学⽣算法设计与编程挑战赛(冬季赛)——正式赛(做题记录)

A-塔

【题⽬描述】

初来到海拉尔⼤陆的你,有些许的局促,但当你看到塔,或许⼀切的⼀切都迎刃⽽解。
⼀个层⾼为n的字⺟塔的定义为:

  • 共n⾏,由字⺟组成的等腰三⻆形。 塔顶为第⼀层,且只有⼀个⼤写字⺟A;下⾯
  • 每⼀层都⽐上⾯⼀层多两个字⺟。 每⼀层都是左右对称。
  • 对于第i层,前i个字⺟由⼤写字⺟表中A~第i个字⺟顺序组成。

为了稳住局⾯,样例给出了层⾼为5的字⺟塔,请你输出层⾼ 26 的字⺟塔。

输出描述:
输出⾼度为 26 的塔。
样例
样例输⼊
TIPS:此题是⼀道程序填空题,下⾯会给出此题正确代码的挖空版本,选⼿可以根据提示对代码进⾏完善。
下⾯给出层⾼为5的塔的样例输出

样例输出

看这个图

#include<stdio.h>
int main() {
	char c1;
	int n = 26; //设定塔的层数为26
	int i, j;
	for (i = 1; i <= n; i++) { //对塔每 一层按照规律进行构造。
//首先进行输出空格的操作:对于第i行,字符前面的空格个数为n-i个。
		for(j=1; j<=n-i; j++)
			printf(" ");
		for (j = 1; j <= i; j++) { //按照规律1,输出第1~第个大写字母。
			c1 =j +'A'- 1; //第j个大写字母为'A'+j-1
			printf("%c",c1); //输出第j个大写字母
		}
		for (j = i-1; j >= 1; j--) {//按照规律1,输出第i-1~第1 个大写字母,注意是倒序
			c1 = j+'A'-1;
			printf("%c",c1);
		}
		printf("\n");//第i.行输出结束,进行换行。

	}
	return 0;
}

B-⽇记

【题⽬描述】

题⽬描述
你喜欢偷窥帕雅⽇记⼀事已⼴为⼈知,帕雅特地在⽇记本上加了密。
加密的⽅式很简单:对于⼀串字符串,如果其中有 l , i , n , k , e 这五个字⺟当中的任意⼀个,帕雅都会
在这后⾯加上 bt 再加上原来的字⺟已加密,如 love 就会加密成 lbtlovebte 。
下⾯给出帕雅⽇记的第⼀⻚内容,请你根据他的⽇记内容进⾏解密。

ibti lbtlovebte lbtlibtinbtnkbtkebtezbas jebte dosadnbtna
ovakbtkebtemibtijaxaszxdbtddbtddbtddbtddbtddbtd

上⾯内容为⼀⾏内容,为帕雅的⽇记第⼀⻚内容
但这能拦得住你吗?时间紧迫,快解密吧!
输出描述:
输出帕雅⽇记第⼀⻚解密后的内容。

【解析】
手动:
碰到一个‘l’ 或者‘i’或者‘n’或者‘k’或者‘e’跳过后面3个字符,一个一个解密得

i love linkezbas je dosadna ovakemijaxaszxdbtddbtddbtddbtddbtddbtd
package2;

public class _02B日记 {
//	加密的方式很简单:对于一串字符串,如果其中有l,i,n,k,e这五个字母当中的任意一个, 
//	帕雅都会在这后面加上bt再加上原来的字母已加密
//	如love就会加密成lbtlovebte。
//	加密码:ibti lbtlovebte lbtlibtinbtnkbtkebtezbas jebte dosadnbtna ovakbtkebtemibtijaxaszxdbtddbtddbtddbtddbtddbtd

	public static void main(String[] args) {
//		l,i,n,k,e        
//		System.out.println("i love linkezbas je dosadna ovakemijaxaszxdbtddbtddbtddbtddbtddbtd");
		String string = "ibti lbtlovebte lbtlibtinbtnkbtkebtezbas jebte dosadnbtna ovakbtkebtemibtijaxaszxdbtddbtddbtddbtddbtddbtd";
		char[] str = string.toCharArray();
		System.out.println("加密码:");
		System.out.println(string);
		System.out.println("原码:");
		for (int i = 0; i < str.length; i++) {
			System.out.print(str[i]);
			if (str[i] == 'l' || str[i] == 'i' || str[i] == 'n' || str[i] == 'k' || str[i] == 'e') {
				i += 3;
			}
		}
	}
}

控制台
在这里插入图片描述

C-哥布林

题目描述
成堆成山的哥布林已经做好出征前的准备,特殊的,这次出征时,每只哥布林出征前都要拿一把武器。
武器库给这些哥布林们配有M把各不相同的武器,编号为 1—M,目前,前N只哥布林已经选好了武器,他们 分别选的武器编号是ai,a2,…,an,恰好,之后将有M-N只哥布林来拿武器。
这M-N只哥布林取武器的方式有些许特殊:
-对于每只哥布林,都会在「未被取用的」武器区间中去找「最长的」一个连续的武器区间,如果「最长的」的 武器区间有不止一个,则取用最左边的一个。
-出于隐私,哥布林将取用这个连续区间上最中间的一个武器。如果区间段为偶数,则取用中间靠左的武器。
可以肯定的是,每个武器都会被哥布林「不重复地」取用。
为了更好的应对哥布林的入侵,你想知道其中T名哥布林选用的武器编号。
这T名哥布林的编号为b1,b2,b(T).

为了更快捷的做好出征准备,哥布林们总是有序的。
即 皆为单调递增的数组
在这里插入图片描述
输⼊描述:
第⼀⾏输⼊三个整数 ,含义如题⾯描述。
第⼆⾏包括 个整数,每个整数之间⽤空格分隔开,表示ai
第三⾏包括 个整数,每个整数之间⽤空格分隔开,表示bi
输出描述:
每⾏⼀个整数,分别表示这 只哥布林对应的武器编号。

在这里插入图片描述

样例
样例输⼊①

7 1 4
4
2 3 4 5

样例输出①

2
6
1
3

样例输⼊②

10 2 4
2 8
1 3 5 8

样例输出②

2
5
6
4
  • 待解决

D-质数区间

题⽬描述
有⼀个有序的⽆限⼤集合,集合内元素是素数。每⼀个集合内的元素按升序排序。集合顺序优先按「集合元素和」
排序,其次按「集合字典序」排序。您需要给出给定区间[l,r]的内容。
该集合的⼀部分为

[2], [3], [2, 3], [5], [2, 5], [7], [3, 5], [2, 7], [2, 3, 5], [3, 7], [11], [2, 3, 7], [5, 7],
[2, 11], [13], [2, 5, 7],
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210314224951865.png)

在这里插入图片描述
样例
样例输入①

1 6

样例输出①

[2][

样例输入②

25 30

样例输出②

25]25]
  • 待解决

E-神仙爱采药

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 待解决

F-但更爱字符串

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
样例输⼊①

No mind to think, No Will To Break, No voick to cry suffering,Born Of God And Void.

样例输出①

No mind to think, NWTB (No Will To Break), No voick to cry suffering,BOGAV (Born Of God And Void).

样例输⼊②

You shall seal the blinding light that plagues their dreams.You Are The Vessel, You Are THe Hollow Knight.!

样例输出②

You shall seal the blinding light that plagues their dreams.YATV (You Are The Vessel), YA (You Are) THe HK (Hollow Knight).!

样例输⼊③

In wilds beyond they speak your NamE With Reverence And Regret, For none could tame our Savage Souls yet you the challenge met, Under, Palest. Watch, You Taught , you changed. Base instincts were redeemed, A World You gave to bug and beast as they had never dreamed.

样例输出③

In wilds beyond they speak your NamE WRAR (With Reverence And Regret), For none could tame our SS (Savage Souls) yet you the challenge met, Under, Palest. Watch, YT (You Taught) , you changed. Base instincts were redeemed, A WY (World You) gave to bug and beast as they had never dreamed.
  • 待解决

G-猫腥草争夺大战

题⽬描述⼩c和⼩w都在⼀棵有 个节点的树上,节点编号为  。在⼀号节点有⼀个猫腥草,他们开始了⼀场有趣的抢夺。两只猫都是优雅的猫,所以他们的抢夺按以下⽅式重复进⾏:1、⼩c选择⼀个节点并「占有」它。2、⼩w「占有」猫腥草所在的节点3、⼩w再将猫腥草移⾄⼀个「未被占有过」且与「当前节点」相邻的节点。

在这里插入图片描述
在这里插入图片描述
输入1

6 2
1 3
3 2
2 5
1 4
4 6

输出1

C!

输入2

3 1
1 3
1 2

输出2

W!

输入3

11 3
1 2
1 4
2 3
2 6
4 5
4 10
5 7
6 8
6 9
7 11

输出3

C!
  • 待解决

H-⽆限⼭河印的故事

在这里插入图片描述
在这里插入图片描述

4 4 9
dadd
caca
llxa
ssca

在这里插入图片描述

39/2048

样例输⼊②

1 2 2
ac

样例输出②

5/16

I-奇怪的传输机增加了

在这里插入图片描述
在这里插入图片描述
样例输⼊①

70000 20 140

样例输出①

N0!
9 1820.860641

样例输⼊②

70000 8 14

样例输出②

YE5!
3312.486449
  • 待解决

J-奇怪的⼩鸭⼦也增加了

题⽬背景
这题是个签到题。

【题⽬描述】

有⼀个 AB 的⼤澡盆,还有若⼲个 ab 的⻓⽅形⼩鸭⼦,澡盆⾥最少放⼏只鸭⼦后,便⽆法再向其中放⼊更多的鸭⼦?
鸭⼦很倔强,不能旋转成 ba ,也不能重叠放置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
鸭⼦很倔强,不能旋转成 b
a ,也不能重叠放置。所以行列一样的情况。
先看行,如果平均小间隙的长度 < 鸭子长方形的长,则无法继续加入。
尝试行添加0,1块等等,直到不能添加为止。
列也同理。
最后的结果是最少的块数 = row*col

package2;

import java.util.Scanner;

public class _10J奇怪的小鸭子也增加了 {
//	有一个 A×B 的大澡盆,还有若干个 a×b 的长方形小鸭子,
//	澡盆里最少放几只鸭子后,便无法再向其中放入更多的鸭子?
//	鸭子很倔强,不能旋转成 b * a,也不能重叠放置
//	Sample Input 1 
//	12 10 4 5
//	Sample Output 1
//	2
//	Sample Input 2 
//	20 10 9 2
//	Sample Output 2
//	3
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt();
		int B = sc.nextInt();
		int a = sc.nextInt();
		int b = sc.nextInt();
		int row = 0;
		int col = 0;
		//每一行剩下的小间隙
		int rowYu = A;
		do {
			row++;
//			System.out.println("row " + row);
			rowYu = (A - a*row) / (row + 1);
//			System.out.println("rowYu " + rowYu);
		} while (rowYu >= a);
		
		int colYu = B;
		do {
			col++;
			colYu = (B - b*col) / (col + 1);
		} while (colYu >= b);
//		System.out.println(row);
//		System.out.println(col);
		System.out.println(row  * col );
	}
}

K-关于哥俩好的数字这件事

在这里插入图片描述
在这里插入图片描述
输出描述:
最⼩的数位和。
样例
样例输⼊①

5

样例输出①

110

样例输⼊②

2

样例输出②

11

L-我们仍未知道那窝蛋的名字

在这里插入图片描述
在这里插入图片描述

3 5
1 1 2 1 3
1 3 1 2 3
2 4 1 2
2 6 1 3
2 9 1 3

样例输出①

6
9
15

样例输⼊②

4 6
1 1 2 3 -2
1 2 3 3 7
2 3 3 1
2 4 3 1
1 5 4 -5 18
2 6 3 4

样例输出②

10
13
19

样例输⼊③

6 9
1 2 5 8 -10
2 3 3 5
1 4 4 12 18
2 5 1 2
1 7 2 4 6
2 9 2 1
1 10 4 0 34
2 11 5 5
2 12 1 4

样例输出③

-2
baigei
14
62
34

M出题人说这道题是一个签到题

题目在java代码注释中

package2;

import java.util.Scanner;

public class _13M出题人说这道题是一个签到题 {
//	如果输入的值是1,则回复ADPC。
//	否则的话,输出12345
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String string = sc.nextLine();
		if (string.equals("1")) {
			System.out.println("ADPC");
		}else {
			System.out.println("12345");
		}
	}
}
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值