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

SMU Winter 2023 Round #7 (Div.2)

时间:2023-01-20 21:11:34浏览次数:40  
标签:arr Winter int SMU System Scanner nextInt Div.2 scanner

A.解开束缚缠丝II

题意:

在一堆字符里面找出最长的回文串,并把它的长度输出出来。

思路:

这道题,一开始想的是把所有情况都列举出来,然后一一判断是不是回文串。后面根据第二个样例才想明白,原来根本不需要那样,这道题要我们求的是长度。只需要判断这堆字符里面有多少重复的字符就可以了。如果没有重复的,那最长也就只能是1,如果有一对,中间随便加一个字符就是回文串了。但如果有奇数个同样的字符,那么多出来的一个是不需要的,我们减去即可。因为如果有两个多出来的就会影响判断。

代码:

点击查看代码
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner .nextInt();
		while(n-->0) {
			int[] arr = new int[145];
			int m = scanner.nextInt();
			char[] ch1 = new char[m];
			for(int i = 0 ;i < m;i++) {
				ch1[i] = scanner.next().charAt(0);
			}
			int x = 0;
			for(int i = 0;i < m;i++) {
				x = ch1[i];
				arr[x]++;
			}
			int sum = 0;
			for(int i = 0;i < 145;i++) {
				if(arr[i]>1&&arr[i]%2!=0) {
					sum+=arr[i]-1;
				}else if(arr[i]>1&&arr[i]%2==0) {
					sum+=arr[i];
				}
			}
			if(sum==0) {
				System.out.println(1);
			}else if(sum==m){
				System.out.println(sum);
			}else {
				System.out.println(sum+1);
			}
		}
	}
}

B.好想听肆宝唱歌啊

思路:

就是将两个数组同时排好序,排序的时候我们用快排,然后根据题目说的来找就可以了,注意是倒着找,因为喜爱程度越大的,就会越被先点。

代码:

点击查看代码
import java.util.*;
public class Main {
	static int[] arr;
	static String[] str;
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		arr = new int[n];
		str = new String[n];
		for(int i = 0;i < n;i++) {
			arr[i] = scanner.nextInt();
			str[i] = scanner.next();
		}
		int k = scanner.nextInt();
		quick_sort(arr,0,n-1);
		int g = n-k-1;
		System.out.println(str[g]);
	}
	public static void quick_sort(int[] q,int l,int r) {
		if(l>=r) return;
		int x = q[(l+r)/2],i = l-1,j = r+1;
		while(i<j) {
			do i++; while(q[i]<x);
			do j--; while(q[j]>x);
			if(i<j) {
				int temp = q[i];
				q[i] = q[j];
				q[j] = temp;
				String stemp = str[i];
				str[i] = str[j];
				str[j] = stemp;
			}	
		}
		quick_sort(q,l,j);
		quick_sort(q,j+1,r);
	}
}

C.毁灭凤凰人

思路:

这里主要考虑两种情况,一是先击败,再除外;二是弃一张牌直接除外。
还有就是仔细读题,注意防御那里的判断条件与攻击那里不一样。

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int m = scanner.nextInt();
		int[] arr = new int[n];
		int[] arr1 = new int[n];
		for(int i = 0;i < n;i++) {
			arr[i] = scanner.nextInt();
			if(arr[i]==0) {
				arr1[i] = scanner.nextInt();
			}
		}
		for(int i = 0;i < n-1;i++) {
			if(arr[i]==0&&m==0&&arr1[i]>=2500) {
				for(int j = 0;j<n;j++) {
					if(arr[j]==1) {
						System.out.println("haoye");
						return;
					}
				}
			}else if(arr[i]==0&&m==1&&arr1[i]>2100) {
				for(int j = 0;j<n;j++) {
					if(arr[j]==1) {
						System.out.println("haoye");
						return;
					}
				}
			}else if(arr[i]==2&&n>=2) {
				System.out.println("haoye");
				return;
			}
		}
		System.out.println("QAQ");	
	}
}

D.欢迎来到杭师大

题意:

这道题之间按题目输出即可。

E.Ayanoto 变形记

题目:

只要是步数不为0,都是可以跳到原点的。最开始考虑n和m的关系,其实都是可以到的。

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int T = scanner.nextInt();
		boolean flag = false;
		while(T-->0) {
			int n = scanner.nextInt();
			int x = scanner.nextInt();
			if(x==0) {
				System.out.println("no");
				continue;
			}else {
				System.out.println("yes");
			}
		}
	}
}

F.7 的意志

思路:

最开始想的是打乱了顺序的,后面发现其实是顺序固定了的,用指针扫描即可,但是优化得还不够,最后会超时。

代码:

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

标签:arr,Winter,int,SMU,System,Scanner,nextInt,Div.2,scanner
From: https://www.cnblogs.com/Tcoo/p/17063239.html

相关文章

  • SMU冬训营第三周周一
    A.Lucky?题意:给出一个六位数,如果它的前三位之和等于它的后三位之和,就输出"YES",否则输出"NO"。思路:测试样例里面有的六位数不是真正的六位数,有的是‘0’开头的,所以选择......
  • 2023WinterHoliday刷题总结第一弹
    \(2023WinterHoliday\)刷题总结第一弹\(CTF\)\(Web\)1.\(json格式:\)$json['x']=="wllm"\(JSON\)(JavaScriptObjectNotation,JS对象简谱)是一种轻量级的数据交换格式,采......
  • Codeforces Round #844 (Div.1 + Div.2) CF 1782 A~F 题解
    点我看题A.ParallelProjection我们其实是要在这个矩形的边界上找一个点(x,y),使得(a,b)到(x,y)的曼哈顿距离和(f,g)到(x,y)的曼哈顿距离之和最小,求出最小值之后加h就是......
  • Codeforces Round #844 (Div.1 + Div.2) CF 1782 A~F 题解
    点我看题A.ParallelProjection我们其实是要在这个矩形的边界上找一个点(x,y),使得(a,b)到(x,y)的曼哈顿距离和(f,g)到(x,y)的曼哈顿距离之和最小,求出最小值之后加h就是......
  • Codeforces Round #844 (Div.1 + Div.2) CF 1782 A~F 题解
    点我看题A.ParallelProjection我们其实是要在这个矩形的边界上找一个点(x,y),使得(a,b)到(x,y)的曼哈顿距离和(f,g)到(x,y)的曼哈顿距离之和最小,求出最小值之后加h就是......
  • SMU冬训营第二周蓝桥杯模拟赛
    A.解码题目:小明有一串很长的英文字母,可能包含大写和小写。在这串字母中,有很多连续的是重复的。小明想了一个办法将这串字母表达得更短:将连续的几个相同字母写成字母+......
  • SMU Winter 2023 Round #3 (Div.2)
    B.三元组题目:给定一个长度为n的数列a,对于一个有序整数三元组(i,j,k),若其满足1≤i≤j≤k≤n并且ai+aj=ak,则我们称这个三元组是「传智的」。现在请你计算,有......
  • SMU Winter 2023 Round #4
    A.Chuanpai题目:Chuanpai(川牌)isakindoftraditionalplayingcardsinSichuan.Eachcardismarkedwithtwointegersxandywhere1≤x≤y≤6.Somesa......
  • Namomo Winter Camp 2023 Day 2
    A-MixJuice排个序再求和就好#include<bits/stdc++.h>usingnamespacestd;intread(){...}int32_tmain(){intn=read(),k=read();vector<int>......
  • hws_winter2022-re
    一.Babyre程序入口处调用了一个check函数,但这个是假的检验跟进去发现做了一些简单操作,尝试了几次但逆不出来,就到别的文件里看了看,结果发现还有一段解密 读取了enc文......