首页 > 其他分享 >零基础ACM学习的第一天

零基础ACM学习的第一天

时间:2025-01-23 11:21:57浏览次数:1  
标签:Scanner 第一天 int ACM 学习 ++ sc new public

import java.util.Scanner;
public class Main {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner sc=new Scanner(System.in);
	int t=sc.nextInt();
	System.out.print("L");
	for(int i=0;i<t;i++) {
		System.out.print("o");
	}
	System.out.print("ng");
	sc.close();
}

}
按题目要求,按部就班的写,(题目仅对o的个数有额外要求)。
import java.util.Scanner;
public class text1 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner sc=new Scanner(System.in);
	int t=sc.nextInt();
	sc.nextLine();
	for(int i=0;i<t;i++) {
		String a=sc.nextLine();
		a=a.toLowerCase();
		if(a.equals("yes")) {
			System.out.println("YES");
		}
		else {System.out.println("NO");}
	}
}

}
按题目要求,按部就班的写(先将输入都花成小写降低复杂性在比较)
import java.util.Scanner;
public class Main {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner sc=new Scanner(System.in);
	int t=sc.nextInt();
	sc.nextLine();
	for(int i=0;i<t;i++) {
		String b=sc.nextLine();
		int a=b.charAt(b.length()-1)-'0';
		if(a%2==0) {
			System.out.println("even");
		}
		else {System.out.println("odd");}
	}sc.close();
}

}
只比较最后一个数是否为偶数
import java.util.Scanner;
public class Main {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner sc=new Scanner(System.in);
	int t=sc.nextInt();
	for(int i=0;i<t;i++) {
		int n=sc.nextInt();
		int m=sc.nextInt();
		int A=0;
		int B=0;
		int C=0;
		int D=0;
		int E=0;
		int F=0;
		int G=0;
		int q=0;
		sc.nextLine();
		String a=sc.nextLine();
		for(int o=0;o<n;o++) {
			switch(a.charAt(o)) {
			case('A'):A++;break;
			case('B'):B++;break;
			case('C'):C++;break;
			case('D'):D++;break;
			case('E'):E++;break;
			case('F'):F++;break;
			case('G'):G++;break;
			}
		}
		if(A<m) {q+=m-A;}
		if(B<m) {q+=m-B;}
		if(C<m) {q+=m-C;}
		if(D<m) {q+=m-D;}
		if(E<m) {q+=m-E;}
		if(F<m) {q+=m-F;}
		if(G<m) {q+=m-G;}
		System.out.println(q);
	}
	sc.close();
}

}
统计各种难度题目出现的次数,和题目要求比较
import java.util.Scanner;
public class Main {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner sc=new Scanner(System.in);
	int n=sc.nextInt();
	int m=sc.nextInt();
	int k=sc.nextInt();
	int y=0;
	for(int o=0;o<m;o++) {
	int x=0;
	for(int i=0;i<n;i++) {
		int t=sc.nextInt();
		if(t==k) {x++;}
	}
	if(x>=(n+1)/2) {y++;}
}
	if(y>=(m+1)/2) {
		System.out.println("YES");
	}
	else {System.out.println("NO");
	}
	sc.close();
}

}
同过一个循环来求一天内是否同意,再来一个循环检测是否合理
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N, Q;
String S;

    N = sc.nextInt();
    S = sc.next();
    Q = sc.nextInt();

    char[] c = new char[26];

    for (int i = 0; i < 26; i++) {
        c[i] = (char) ('a' + i);
    }

    while (Q-- > 0) {
        char from = sc.next().charAt(0);
        char to = sc.next().charAt(0);

        for (int i = 0; i < 26; i++) {
            if (c[i] == from) {
                c[i] = to;
            }
        }
    }

    char[] sArray = S.toCharArray();
    for (int i = 0; i < sArray.length; i++) {
        if (sArray[i] >= 'a' && sArray[i] <= 'z') {
            sArray[i] = c[sArray[i] - 'a'];
        }
    }

    System.out.println(new String(sArray));
}

}
建立数组,先对操作历程进行处理,再处理输入的字符串
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;

public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] firstLine = br.readLine().split(" ");
int a = Integer.parseInt(firstLine[0]);
int step = Integer.parseInt(firstLine[1]);
int[][] array = new int[a][a];
for (int i = 0; i < a; i++) {
String[] row = br.readLine().split(" ");
for (int j = 0; j < a; j++) {
array[i][j] = Integer.parseInt(row[j]);
}
}
int[] colMap = new int[a];
for (int i = 0; i < a; i++) {
colMap[i] = i;
}
for (int s = 0; s < step; s++) {
String[] opLine = br.readLine().split(" ");
int op = Integer.parseInt(opLine[0]);
int x = Integer.parseInt(opLine[1]);
int y = Integer.parseInt(opLine[2]);

        if (op == 1) { 
            int[] temp = array[x - 1];
            array[x - 1] = array[y - 1];
            array[y - 1] = temp;
        } else if (op == 0) { 
            int tempCol = colMap[x - 1];
            colMap[x - 1] = colMap[y - 1];
            colMap[y - 1] = tempCol;
        }
    }
    int[][] result = new int[a][a];
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < a; j++) {
            result[i][j] = array[i][colMap[j]];
        }
    }
    for (int i = 0; i < a; i++) {
        StringBuilder sb = new StringBuilder();
        for (int j = 0; j < a; j++) {
            sb.append(result[i][j]).append(" ");
        }
        bw.write(sb.toString().trim());
        bw.newLine();
    }

    bw.flush();
    br.close();
    bw.close();
}

}
重点处理要得到的矩阵,同时用行映射和列映射,最后通过colMap的映射关系一次性构造最终结果矩阵。

学习总结:
时间复杂度的大小是代码运行速度的反应。如何改变算法,实现更小的时间复杂度简化代码。算法题目的与众不同的点让我刻骨铭心,总是修改自己的代码避免超时。C++还在进行初步的学习,auto的命名方式和以往的接触到的相比具有极大的便捷性。

标签:Scanner,第一天,int,ACM,学习,++,sc,new,public
From: https://www.cnblogs.com/victimcom/p/18687390

相关文章

  • ACM寒假线上集训第一次总结
    第一题这一题就是想到最简单的循环结构总结:看了学长大人的代码后发现自己的代码还是不够简洁第二题这题的想法是干脆直接转化成大写比较总结:试着使用了C++的string类以及新的遍历方式,有点牛逼的第三题这题就常规字符串,看末尾字符代表的数字奇偶总结:刚刚开始把.back()写......
  • 利用进化计算改进深度学习模型初始权重分布:基于多目标优化的实战分析
    深度学习模型的性能往往受到初始权重分布的显著影响。然而,传统随机初始化方法可能无法充分捕捉数据分布的多样性,从而影响训练收敛速度和最终性能。为了解决这一问题,本文探讨了利用进化计算方法优化深度学习模型初始权重分布的可行性,并结合多目标优化策略进行了实战分析。进化计算......
  • 基于深度学习的高效非极大值抑制算法改进:从理论到实践
    非极大值抑制(Non-MaximumSuppression,NMS)是目标检测算法中的关键步骤,用于从多个重叠的候选框中筛选出最佳框。然而,传统的NMS算法在处理高密度目标场景或复杂背景时,可能会导致部分目标漏检或误检。本文探讨了基于深度学习的高效NMS算法改进,从理论分析到实际实现,为进一步优化目标......
  • 2025版大模型AI产品经理学习路线:零基础到精通,超详细解析,收藏这一篇就够了!
    随着人工智能技术的发展,尤其是大模型(LargeModel)的兴起,越来越多的企业开始重视这一领域的投入。作为大模型产品经理,你需要具备一系列跨学科的知识和技能,以便有效地推动产品的开发、优化和市场化。以下是一份详细的大模型产品经理学习路线,旨在帮助你构建所需的知识体系,从零基......
  • 【开源免费】基于Vue和SpringBoot的在线考试学习交流网页平台(附论文)
    本文项目编号T158,文末自助获取源码\color{red}{T158,文末自助获取源码}......
  • JAVA学习日志02
    JAVA学习日志02冯·诺依曼结构输入设备->存储器->输出设备(数据流)存储器传输数据给CPU中的运算器,经过处理后返回存储器存储器传输指令流给控制器,控制器控制存储器,输出设备,输入设备进行相应的行为打开CMD的方式开始+系统+命令提示符Win键+R输入cmd打开在任意文件夹下,按住s......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素、977.有序数组的平方
    LeetCode7042025-01-2218:30:38星期三代码随想录视频内容简记梳理一下三个比较重要的部分首先是对于整个代码的循环条件,这个很重要判断middle位置在我看来初学也是比较重要一步注意:所有的middle位置判断都是if语句实现的,固定的大于和小于。这个不用纠结一不一样更......
  • 人工智能学习(一)之python入门
    一、引言在当今的软件开发领域,面向对象编程(Object-OrientedProgramming,OOP)已经成为一种主流的编程范式。Python作为一门功能强大且简洁易读的编程语言,对面向对象编程提供了非常完善的支持。无论是开发大型项目、构建数据科学应用,还是进行自动化脚本编写,理解和掌握Python......
  • 2025/1/23学习
    #include<bits/stdc++.h>#defineintlonglong#definexfirst#defineysecond#defineendl'\n'#definepqpriority_queueusingnamespacestd;typedefpair<int,int>pii;voidsolve(){ intn; cin>>n; vector<array<int,3>>......
  • Go学习:多个变量或常量定义
    目录1.不同类型变量的声明(定义)2. 不同类型常量的声明(定义)1.不同类型变量的声明(定义)传统方法//不同类型变量的声明(定义)   varaint   varbfloat64    a,b=10,3.14packagemainimport"fmt"funcmain(){ //不同类型变量的声明(定义......