2020-2021年度第二届全国大学生算法设计与编程挑战赛(冬季赛)——正式赛
Posted nuist__NJUPT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020-2021年度第二届全国大学生算法设计与编程挑战赛(冬季赛)——正式赛相关的知识,希望对你有一定的参考价值。
目录
A题-塔
思路:签到题,26层,第i层先打印26-i个空格,然后正序和逆序打印字符,每一层换一行。
public class Main
public static void main(String[] args)
for(int i=1; i<=26; i++)
for(int j=1; j<=26-i; j++)
System.out.print(" ");
for(int k=1; k<=i; k++)
System.out.print( (char)(k + 'A'- 1));
for(int l=i-1; l>=1; l--)
System.out.print( (char)(l + 'A' - 1));
System.out.println();
B题-日记
思路:每次遇到相应的字母,就调3个,把相应的去掉就可以,测试用例应该有问题。
public class Main
public static void main(String[] args)
String s = "smrt cvrst aebteibtiou aa btbtbtbtpapaprpopalbtlapabba\\n" +
"bas jebte dosadnbtna ova kbtkebtemibtija aszxdbtddbtddbtddbtddbtddbtddbtddbtddbtbba\\n" +
"aszxdbtddbtddbtddbtddbtddbtddbtddbtddbtdcsc\\n" +
"bas jebte dosadnbtna ova kbtkebtemibtija\\n" +
"ibti lbtlovebte lbtlibtinbtnkbtkebtec\\n" +
"sadnbtna ova kbtkebtemibtija aszxdbtddbtddbtddbtddbtddbtddbtddbtddbtbbz\\n" +
"aszxdbtddbtddbtddbtddbtddbtddbtddbtddbtdcs\\n" +
"bas jebte dosadnbtna ova kbtkebtemibtija" ;
String ans = "" ;
for(int i=0; i<s.length(); i++)
char c = s.charAt(i) ;
ans += c ;
if(c=='l' || c=='i' || c=='n' || c=='k' || c=='e')
i += 3 ;
System.out.print(ans);
E题-神仙爱采药
思路:简单贪心,如果体积够用,有多少装多少,如果体积不够用,遇到体积为2的不用管,遇到体积为1的,将体积为2的踢出去,将体积为1的装进去,保证可以装的更多。
import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner input = new Scanner(System.in) ;
int V = input.nextInt() ;
String s = input.next() ;
long ans = 0, volume=0, height=0, num2=0 ;
for(int i=0; i<s.length(); i++)
long c = s.charAt(i) - '0' ;
if(volume+c<=V)
if(c==2)
num2 ++ ;
volume += c ;
height ++ ;
else
if(num2>=1 && c==1)
volume -- ;
num2 -- ;
ans += height ;
System.out.println(ans);
这样写也是可以的,变量少一点,思路都是一样的。
import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner input = new Scanner(System.in) ;
int V = input.nextInt() ;
String s = input.next() ;
long ans = 0, sum = 0, num2=0;
for(int i=0; i<s.length(); i++)
if(s.charAt(i)=='1' && V>=1)
ans ++ ;
V -- ;
else if(s.charAt(i)=='1' && V<1)
if(num2>0)
num2-- ;
V ++ ;
if(s.charAt(i)=='2' && V>=2)
ans ++ ;
V -= 2 ;
num2 ++ ;
sum += ans ;
System.out.println(sum);
I题-奇怪的传输机增加了
思路:模拟每一天就可以,注意超过x天只能恢复一次,且最后打印的是YE5!和N0!不是YES!和NO!
import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner input = new Scanner(System.in) ;
int N = input.nextInt() ;
int x = input.nextInt() ;
int y = input.nextInt() ;
double now = N ;
boolean flag = true ;
for(int i=1; i<=y; i++)
now = 2.0 * now / 3.0 ;
if(i>=x)
now = Math.min(now+(1.0*N/2), N) ;
x = Integer.MAX_VALUE ;
if(now<1.0*N/32)
System.out.println("N0!");
System.out.print(i + " ");
System.out.printf("%.6f", now);
flag = false ;
break ;
if(flag)
System.out.println("YE5!");
System.out.printf("%.6f", now);
J题-奇怪的小鸭子也增加了
思想:数学题,说真话,题目描述的一言难尽。
import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner input = new Scanner(System.in) ;
int A = input.nextInt() ;
int B = input.nextInt() ;
int a = input.nextInt() ;
int b = input.nextInt() ;
int x = (A-a)/a/2 + 1 ;
int y = (B-b)/b/2 + 1 ;
System.out.println(x*y);
K题-关于哥俩好的数字数字这件事
同样的代码,C++不超时,Java超时!!!
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main
static final int N = 1000000;
public static void main(String[] args)
Scanner input = new Scanner(System.in) ;
int n = input.nextInt() ;
List<List<Integer>> ans1 = new ArrayList<>() ;
for(int i=0; i<N; i++)
ans1.add(new ArrayList<>()) ;
for(int i=1; i<=10000000; i++)
ans1.get(get(i)).add(i) ; ;
if(n==1)
System.out.println(1);
else if(n<=10)
long res = 0 ;
for(int i=0; i<n; i++)
res += ans1.get(n-1).get(i) ;
System.out.println(res);
else if(n>=11)
long res1 = Long.MAX_VALUE ;
for(int j=9; j<=20; j++)
long temp = 0 ;
for(int i=0; i<n; i++)
temp += ans1.get(j).get(i) ;
res1 = Math.min(temp, res1) ;
System.out.println(res1);
private static int get(int i)
int ans = 0 ;
while(i>0)
ans += i % 10 ;
i /= 10 ;
return ans ;
以上是关于2020-2021年度第二届全国大学生算法设计与编程挑战赛(冬季赛)——正式赛的主要内容,如果未能解决你的问题,请参考以下文章
2020-2021年度第二届全国大学生算法设计与编程挑战赛(冬季赛)——正式赛
2020-2021年度第二届全国大学生算法设计与编程挑战赛 (春季赛)- 天才的操作(线段树+主席树+树上倍增)
个人赛组2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)-正式赛
个人赛组2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)——热身赛