CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16
努力是为了让自己不平庸,但我主要想获取CSDN勋章!!
前言/背景
第一次参加CSDN编程竞赛,没什么经验。4道编程题,比赛前我觉得能答对2道题就好了,重在参与,但是比赛完我觉得还是挺简单的,和刷<算法>技能树的题差不多。主要在于算法方面的考核。基础还是得扎实。答题速度很关键。经验很重要。比赛就是要争分夺秒!!
大赛简介
CSDN APP上,比赛菜单进行参加。比赛含金量一般般。题型主要是刷<算法>技能树。平时的技术基础牢靠。
参赛流程
报名前,就是在CSDN APP上,我的学习中每个菜单都点击,看到比赛,有报名链接,就直接点击进报名,进行参加。
比赛过程:不允许复制粘贴超过20次,不允许切换出20次画面。--桌面右侧有一个迅雷图标,我右键关闭,就违反画面规则了。平时粘贴习惯了,习惯性鼠标选中,右键粘贴。最后想不让粘贴,只能一点点敲单词。
注意事项:比赛就是要争分夺秒!!
参赛经历
我的参赛主要想获取CSDN勋章!比赛前没什么特别的准备就和平时的状态是一样的,没参加过这种网上比赛,本来做前3道题很快就做完了,最后一道的时候卡住了,想好办法,没有想到比较好的办法,导致时间匆匆过去,当时没想那么多,就想把题完美的答好。还有就是编程过程中的导包也需要自己引入。如果被卡住了的话就快速切换下一题等等。注意合理安排时间。
解题思路
首先读题,把题读明白了,想解题方法,想到了就按照自己思路进行实现。可以自测!自测按钮在上方,我答道第三题的时候才看到自测这个按钮,进行了自测,自测的话还得必须自己先把预想结果填上才能点击测试,否则不让点击。
经验心得
一定要争分夺秒,注意时间!
资料分享
推荐CSDN技能树<算法>,进行刷题!
CSDN编程竞赛·第六期 编程题
1、题目名称:严查枪火
X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。 小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)
输入:3
ak sdf hkl
输出:1
import java.util.ArrayList;
import java.util.Scanner;
public class KsTest1 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
int n = Integer.parseInt(str_0);
ArrayList<String> vector = new ArrayList<>();
for (int i = 0; i < n; i++){
String str_1 = scan.nextLine().trim();
vector.add(str_1);
}
scan.close();
int result = solution(n, vector);
System.out.println(result);
}
public static int solution(int n, ArrayList<String> vector){
int result = 0;
// TODO: 请在此编写代码
for(String str:vector){
if("ak".equals(str) || "m4a1".equals(str) || "skr".equals(str)){
result++;
}
}
return result;
}
}
2、题目名称:鬼画符门
鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个 程序统计每年消耗数量最多的鬼画符吗?
输入:4
ww
ee
ee
cc
输出:ee
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class KsTest2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
int n = Integer.parseInt(str_0);
ArrayList<String> vector = new ArrayList<>();
for (int i = 0; i < n; i++){
String str_1 = scan.nextLine().trim();
vector.add(str_1);
}
scan.close();
String result = solution(n, vector);
System.out.println(result);
}
public static String solution(int n, ArrayList<String> vector){
String result = "";
// TODO: 请在此编写代码
Map<String,Integer> map = new HashMap<>();
for(String str:vector){
if(map.containsKey(str)){
Integer count = map.get(str)+1;
map.put(str,count);
}else{
map.put(str,1);
}
}
List<Map.Entry<String,Integer>> list = new ArrayList(map.entrySet());
Collections.sort(list,(o1,o2) -> (o2.getValue() - o1.getValue()));
if(list.size()>0){
result = list.get(0).getKey();
}
return result;
}
}
3、题目名称:收件邮箱
已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用 的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)
输入:dotdotaaatssatdotat
输出:dot.aa@ssat.at
import java.util.Scanner;
public class KsTest3 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
String str = str_0;
scan.close();
String result = solution(str);
System.out.println(result);
}
public static String solution(String str){
String result = "";
// TODO: 请在此编写代码
String firstStr=str.substring(0,1);
String lastStr=str.substring(str.length()-1,str.length());
String string=str.substring(1,str.length()-1);
string = string.replace("dot",".").replaceFirst("at","@");
result = firstStr + string + lastStr;
return result;
}
}
4、题目名称:最长递增的区间长度
给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3
无须数组取值:-1e9<=n<=1e9
输入:6
5 2 3 8 1 9
输出:3
import java.util.ArrayList;
import java.util.Scanner;
public class KsTest4 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
int n = Integer.parseInt(str_0);
String str_1 = scan.nextLine();
String[] line_list_1 = str_1.trim().split(" ");
ArrayList<Integer> arr = new ArrayList<>();
for(int i = 0; i < line_list_1.length; i++){
arr.add(Integer.parseInt(line_list_1[i]));
}
scan.close();
int result = solution(n, arr);
System.out.println(result);
}
public static int solution(int n, ArrayList<Integer> arr){
int result = 0;
// TODO: 请在此编写代码
int num = 0;
String flg="";
if (n>1) {
for(int i=1;i<n;i++){
int j = i-1;
Integer before = arr.get(j);
Integer after = arr.get(i);
if(before < after){
num++;
flg="if";
}else{
num = num +1;
if(num>result){
result = num;
}
num = 0;
flg="else";
}
}
if("if".equals(flg)){
num = num + 1;
if(num>result){
result = num;
}
}
}else {
result = 1;
}
return result;
}
}
比赛就是要争分夺秒!!加油!!!!