首页 > 其他分享 >SMU Winter 2023 Round #1 (Div.2)

SMU Winter 2023 Round #1 (Div.2)

时间:2023-01-09 17:23:57浏览次数:55  
标签:scanner Winter int SMU System Div.2 new public Scanner

A.不可以,总司令

题目:

扶苏当上了星战地球舰队的参谋长,但是她不太聪明。
人工智能计算出,如果扶苏在一直回答“NO”的话,她在战役中判断完全正确的概率为 x%;如果她一直在回答“YES”的话,她在战役中判断完全正确的概率是 y%。
注意可能 x+y!=100,因为还存在她需要既回答“YES”也回答“NO”的情况,但是这一概率并不重要,因为她并不聪明,只能在全回答“YES”和全回答“NO”之中做一个选择。
扶苏自然希望做出的判断能尽可能准确,如果一直说“NO”的判断正确概率较高,她会一直回答“NO”;如果一直说“YES”的判断正确概率较高,她会一直回答“YES”。现在,给出这两者的概率,请你确定她应该回答 YES 还是 NO。
如果回答“YES”和“NO”的正确概率一样高,请你输出 “equal probability”

思路:

输入两个数,前面的大就输出“NO”,后面的大就输出“YES”,如果相等就输出“equal probability”

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int x,y;
		x=scanner.nextInt();
		y=scanner.nextInt();
		if(x<y) {
			System.out.println("YES");
		}else if(x>y) {
			System.out.println("NO");
		}else if(x==y) {
			System.out.println("equal probability");
		}
		scanner.close();
	}
}

B.计算

题目:

给定一个 3 位整数 n,计算:

n 的各位数字之和;
n 的各位数字之和的平方;
n 的各位数字之和的立方;

代码

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int one,ten,hun;
		int sum,sum2,sum3;
		one = n%10;
		ten = n/10%10;
		hun = n/100;
		sum=one+ten+hun;
		sum2=sum*sum;
		sum3=sum2*sum;
		System.out.println(sum);
		System.out.println(sum2);
		System.out.println(sum3);
		scanner.close();
	}
}

D.数字口袋

题目:

小 A 有一个口袋,里面可以装整数。他从 1 开始,按从小到大的顺序,依次将每个整数装入口袋。
但是口袋是有限的,大小为 n,这就是说,口袋里所有的数字的和不能够超过 n。

思路:

从1开始加,当和大于n的时候停下来即可。

代码:

点击查看代码
import java.util.Scanner;
public class MainD {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int sum=0;
		int mark=0;
		for(int i=1;i<=n+1;i++) {
			sum+=i;
			if(sum>n) {
				mark = i-1;
				break;
			}
		}
		for(int i = 1;i<=mark;i++) {
			System.out.println(i);
		}
		scanner.close();
	}
}

E.狠狠地切割(简单版)

题目:

精简后的题目:

给出两组数,第二组数不可以有重复的,在第一组数中,如果出现了第二组数中出现了的数,该数就是切割点,剩余的数可以一个或者多个组成片段,求最后片段的个数。注意这个题的输入规模会很大!

思路:

这个题总共分为两步:第一步是找到切割点,第二步是数片段。
第一步找切割点的话用二分查找才行,因为这道题的输入规模很大,我暂时还没有掌握,用的很一般的O(n^2)的方法,所以无法通过最后三个测试点,后面掌握了二分查找再尝试。找到切割点后,将切割点改为0作为标志。
第二步数片段,需要遍历一遍数组,如果i非0,并且i的下一个数为0的话,这就是一个片段,那么片段数就加一。当然这并没有考虑到最后一个片段的情况,如果最后一个数是0那就没有片段了;如果不是,就存在最后一个片段。

代码(太大的输入规模过不了,但大概应该是这个思路,就是要用二分查找才可以):

点击查看代码
import java.util.Scanner;
public class MainE {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int m = scanner.nextInt();
		int result = 0;
		long[] narr = new long[n];
		long[] marr = new long[m];
		for(int i=0;i<n;i++) {
			narr[i] = scanner.nextLong();
		}
		for(int j = 0;j < m;j++) {
			marr[j] = scanner.nextLong();
		}
		
		for(int i = 0;i<n;i++) {
			for(int j = 0;j<m;j++) {
				if(narr[i]==marr[j]) {
					narr[i] = 0;
					break;
				}
			}
		}
		
		int count = 0;
		for(int i = 0;i < n-1;i++) {
			if(narr[i]!=0) {
				if(narr[i+1]==0) {
					count++;
				}
			}
		}
		if(narr[n-1]!=0) {
			 count++;
		 }
		System.out.println(count);
	}
}

F.旋转排列

题目:

我们称一个数列 p 是一个长度为 n 的排列,当且仅当 p 满足如下条件:

p 的长度为 n;
1, 2, 3, … n 这 n 个数在 p 中均恰好出现一次。
题目描述
对于一个排列 p,定义一次“shift”操作是指:将 p 里的每一个数字都依次向后移动一位,并把 p 的最后一个数字移动到开头去。

例如,若排列 p 初始时为 [1,4,2,3],则“shift”一次以后将变为 [3,1,4,2]。

现在,给定一个长度为 n 的排列 p,请你按照如下规定循环操作:

对当前的排列 p 做一次“shift”操作;
输出本次“shift”以后的排列 p;
判断排列 p 的最后一个数字是否是 n,如果是,则结束循环操作;否则回到 1 继续操作。
提示:请严格按照题目给出的顺序进行循环操作。

思路:

这道题我首先想到的是用两个数组,后面只需要一个变量存储最后一个数,数组除最后一个数字其他依次向后移一位即可,直到最后一个为n。但是这个方法用java写会超时,用C写不会。

代码:

点击查看java代码
public class MinaJ {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int[] arr = new int[n];
		for(int i = 0;i < n;i++) {
			arr[i] = scanner.nextInt();
		}
		int count=0;
		int j=0;
		while(n!=0) {
			count = 0;
			for(int i = n-1; count<arr.length; i=(i+1)%arr.length) {
				System.out.print(arr[i]+" ");
				count++;
			}
			n--;
			j++;
			System.out.println();
			if(arr[n+j-1]==n+j) {
				break;
			}
		}
	}
}
点击查看C语言代码
#include<stdio.h>
int main(){
    int n,i;
    scanf("%d",&n);
    int arr[2000];
    for(i = 0;i<n;i++){
        scanf("%d",&arr[i]);
    }
    while(1){
        int last = arr[n-1];
        for(i=n-2;i>=0;i--){
            arr[i+1] = arr[i];
        }
        arr[0] = last;
        for(i=0;i<n;i++){
            printf("%d ",arr[i]);
        }
        printf("\n");
        if(arr[n-1]==n){
            break;
        }
    }
}

G.标题计数

题目:

Markdown 是一种标记语言。在 Markdown 中,若一行的第一个非空白字符是井号(#),且紧跟着若干个空格,则这一行剩余的非空白内容将会按照一级标题渲染。

在本题范围内,下面的都是一级标题:

# This is a title
#    This is another title
    # This is also a title
    #   You#can#add#more#sharps
# #

在本题范围内,下面的都不是一级标题:

<h1>an HTML title</h1>
#You should insert a space
## This is a secondary title
aaaaa # This is not a title at all
 # 
You should add something after the sharp sign

思路:

这道题主要是弄清什么是一级标题,#是第一个非空白内容,#后必须要有一个空格,后面必须要有非空白内容才可以。首先找到第一个#,然后确认后面是空格,是的话就向前遍历,如果出现了其他字符就不是一级标题。

代码:

点击查看代码
public class MainK {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		scanner.nextLine();
		int count=0;
		String[] str = new String[n];
		for(int i=0;i<n;i++) {
			str[i] = scanner.nextLine();
		}
		boolean flag = true;
		for(int i=0;i<n;i++) {
			flag = true;
			for(int j = 0;j<str[i].length()-1;j++) {
				if(str[i].charAt(j)=='#'&&str[i].charAt(j+1)==' ') {
					if(str[i].charAt(str[i].length()-1)!=' ') {
						for(int k = j;k>=0;k--) {
							if(str[i].charAt(k)!=' '&&str[i].charAt(k)!='#') {
								flag = false;
								break;
							}
						}
						if(flag) {
							count++;
						}
						break;
					}
				}else if(str[i].charAt(j)=='#'&&str[i].charAt(j+1)!=' ') {
					break;
				}
			}
		}
		System.out.println(count);
	}
}

标签:scanner,Winter,int,SMU,System,Div.2,new,public,Scanner
From: https://www.cnblogs.com/Tcoo/p/17034598.html

相关文章

  • SMU 冬令营第一周蓝桥杯模拟赛
    A.带分数题目:100可以表示为带分数的形式:100=3+69258/714。还可以表示为:100=82+3546/197。注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。类似这......
  • 1.4 SMU Winter 2023 Round #1 (Div.2)
    [语言月赛202212]不可以,总司令思路:比较大小 if(x>y)cout<<"NO";elseif(x<y)cout<<"YES";elsecout<<"equalprobability"; [语言月赛202212]计算......
  • 1.6 SMU Winter 2023 Round #2 (Div.2)
    SMUWinter2023Round#2(Div.2)1760A-MediumNumber思路:排列后,输出第二大的数intmain(){intt,a[5];cin>>t;while(t--){for(inti=0;i......
  • 2023 winter training long round #2
    2023wintertraininglonground#2比赛后面写了一堆乐色。开场跟风写了A,B,L,然后看C,发现是简单dp。这时候看了D,是个字符串,先扔了(不会串题)E好像是个奇怪结论,......
  • HZNU Winter Trainning STL 补题
    2023.01.03HZNUWinterTrainningSTL补题CodeForces-4C题意:给你n个字符串,如果某个字符串出现过,则在这个字符串后面加上1,2,3,4....以此类推题解:利用map记录某个字符......
  • 23.0104 winter training 3
    B-Editor题意给定长度为n的字符串,每个字符代表一个操作,'L','R'分别代表位置左移和右移,其余字符代表修改当前位置为s[i]输出每次操作后打印出的字符串是否是合法的括号......
  • 1.2 SMU Winter 2023 蓝桥杯模拟赛 1
    [蓝桥杯2013省B]带分数题意:给n,使满足式子a+b/c=n,其中a,b,c共同恰好由1,2...9组成,求a,b,c的取值种数思路1:枚举出9个数的全排列(可使用next_permutation()),再用两重循环暴......
  • 23.0101 winter training.2
    A-BasicDiplomacy题意某人有n个朋友要出去m天,第i天可以选着\(a_i\)个朋友中的一个一起出去玩,每个朋友被选择的次数不能超过\(\lceilm\rceil\)问是否存在一种方案......
  • HZNU Winter Trainning 8 补题
    CodeForces-1353DConstructingtheArray题目传送门:https://vjudge.net/contest/536385#problem/D题意:给你一个全是0的数组,用1-n的数将这个数组填满,规则是从左至右筛......
  • UNIQUE VISION Programming Contest 2022 Winter(AtCoder Beginner Contest 283)
    A-PowerGivenintegersAandB,printthevalueA^B.基础不解答B-FirstQueryProblem基础不解答C-CashRegisterTakahashiisacashier.Thereis......