• Div3 cf1741


    Cf1741

    A. Compare T-Shirt Sizes

    题意:

    第一行,输入测试样例个数n,接下来n行输入 ,输入a和b代表衣服的尺寸,输出a和b的大小关系,以下是对比原则:
    S代表最小号,M代表中号,L代表大号,S和L前面可以有前置X,S前面的X越多,代表码数越小,相反L前面X越多代表尺寸越大,M前面不可以加X。另外L大于M大于S,当都为L时候,谁前面的X越多谁就越大,相反当结尾都为S,前面的X越多则尺码越小。

    思路
    如果根据题意描述模拟所给条件,会写出很多if…else判断,会让程序写起来特别乱,观察题意可以发现,所有情况下都可以先对比最后一位是什么,如果最后以为不相等,则直接对比最后一位的大小即可得出答案。否则,对于最后以为相同的情况下,可以分为3中情况,都为’S’,‘M’,'L’此时直接对比字符串的长度即可。
    AC代码:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class A1741 {
    	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	public static void main(String[] args) throws NumberFormatException, IOException {
    		int n = Integer.parseInt(br.readLine());
    		for(int i = 1; i <= n; i++) {
    			
    			String s[] = br.readLine().split(" ");
    			String str1 = s[0];
    			String str2 = s[1];
    			char c1 = str1.charAt(str1.length() - 1);
    			char c2 = str2.charAt(str2.length() - 1);
    			if(c1 != c2) {
    				if(c1 < c2) {
    					System.out.println(">");
    				}
    				if(c1 > c2) {
    					System.out.println("<");
    				}
    			}
    			else {
    				if(c1 == 'M') {
    					if(str1.length() == str2.length()) {
    						System.out.println("=");
    					}  //当相同的部分为M时,不需要判断下面的条件也可以,因为M前面不能加X。
    					if(str1.length() > str2.length()) {
    						System.out.println("<");
    					}
    					if(str1.length() < str2.length()) {
    						System.out.println(">");
    					}   
    				}
    				if(c1 == 'S') {
    					if(str1.length() == str2.length()) {
    						System.out.println("=");
    					}
    					if(str1.length() > str2.length()) {
    						System.out.println("<");
    					}
    					if(str1.length() < str2.length()) {
    						System.out.println(">");
    					}
    				}
    				if(c1 == 'L') {
    					if(str1.length() == str2.length()) {
    						System.out.println("=");
    					}
    					if(str1.length() > str2.length()) {
    						System.out.println(">");
    					}
    					if(str1.length() < str2.length()) {
    						System.out.println("<");
    					}
    				}
    				
    			}
    			
    		}
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    B. Funny Permutation(思维)

    题意:给定长度,让输出满足以下条件的序列:

    • 对于每个元素pi,至少有一个相邻的元素的值与pi的值相差1.(+1/-1)
    • 不能存在第i个点在第i个位置。

    第一行输入测试样例数,接下来每一行输入序列长度。
    思路
    对于序列1,2,3,4,5肯定是满足相邻元素相差1,但是不满足第i个元素等于i;
    如果倒着放5,4,3,2,1满足相差1,但是中间元素不满足第i个元素不能放在i位置,因此
    我们将mid到n这些数放在前面,前面的1,2,3,…mid - 1放在后面,即得到序列:
    mid,mid + 1…,1,2,3,…mid - 1肯定可以同时满足所有条件。
    在这里插入图片描述
    AC代码:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class B {
    	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	public static void main(String[] args) throws NumberFormatException, IOException {
    		int n = Integer.parseInt(br.readLine());
    		while((n--) > 0) {
    			int m = Integer.parseInt(br.readLine());
    			if(m == 3) {
    				System.out.println(-1);
    				continue;
    			}
    			int p = (m + 1) / 2;
    			for(int i = p + 1; i <= m; i++) {
    				System.out.print(i +" ");
    			}
    			for(int i = 1; i <= p; i++) {
    				System.out.print(i +" ");
    			}
    			System.out.println();
    		}
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    C. Minimize the Thickness()

    题意:
    思路:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    
    public class C {
    	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	static int []a = new int[2022];
    	static int []sum = new int[2022];
    	public static void main(String[] args) throws Exception {
    		int t = Integer.parseInt(br.readLine());
    		while((t--) > 0) {
    			solve();
    		}
    	}
    	private static void solve() throws Exception {
    		Arrays.fill(a, 0);
    		Arrays.fill(sum, 0);
    		int n = Integer.parseInt(br.readLine());
    		int maxx = n;
    		String nums[] = br.readLine().split(" ");
    		for(int i = 1; i <= n; i++) {
    			a[i] = Integer.parseInt(nums[i - 1]);
    		}
    		for(int i = 1; i <= n; i++) {
    			sum[i] = sum[i - 1] + a[i];
    //			System.out.println(sum[i]);
    		}
    		int x = 0;
    		for(int i = 1; i <= n; i++) { //枚举区间长度
    			int j = i + 1,k = j;
    			x = i;
    			int cnt = 0;
    			while(j <= n) {
    				
    				cnt += a[j];
    				if(cnt > sum[i]) {
    					break;
    				}
    				if(cnt == sum[i] && j != n) {
    					cnt = 0;
    					x = Math.max(x, j - k + 1);
    					k = j + 1;
    				}
    				j++;
    			}
    			
    			if(j > n) {
    				if(cnt == sum[i]) {
    					x = Math.max(x, j - k);
    					maxx = Math.min(maxx, x);
    				}
    			}
    		}
    		System.out.println(maxx);
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
  • 相关阅读:
    博流RISC-V芯片BL616开发环境搭建
    【遥控器开发基础教程3】疯壳·开源编队无人机-ADC(摇杆控制)
    CrossOver 23 正式发布:可在 Mac 上运行部分 DX12 游戏
    大模型部署手记(2)baichuan2+Windows GPU
    内网双击鼠标左键出现字符c
    Flutter笔记:getX库中的GetView中间件
    【Conda】常用命令
    程序员的护城河:技术深度、创新精神与软实力的完美结合
    前端(十六)——Web应用的安全性研究
    PHY驱动开发算法详解
  • 原文地址:https://blog.csdn.net/qq_52986400/article/details/127907896