CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16
(请不要删掉此地址)
前言/背景
CSDN竞赛是我同学推荐给我参加的,那天我看到他拿了个CSDN的一等奖获奖证书到实验室来,于是得知CSDN编程竞赛。
这是我第一次参加,没想到这次题目这么简单的,于是咔咔咔很快就AK了🤣
大赛简介
竞赛考试时间:9月18日 8:30-11:00(作答时间2小时)
主办方:CSDN
活动时间:9月8日-21日(竞赛时间截止9.18)
竞赛考试时间:9月18日 8:30-11:00(作答时间2小时)
获奖名单公布:9月23日,在本页面公布获奖名单链接
获奖用户信息收集:9月27日
奖品发放:9月30日后7个工作日内
参赛经历
我以前也参加过很多别的比赛,比如数学建模、蓝桥杯、湖南省程序设计竞赛等,目前已经获得校级及以上奖项十余项了,省级国家级的也有五六项,算得上是一名老竞赛者了。
目前正在准备考研,所以也很久没有参加比赛了。
解题代码
第一题
X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。
小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)
public static int solution(int n, ArrayList<String> vector){
int result = 0;
for (String s : vector) {
boolean conditions = s.equals("ak") || s.equals("m4a1") || s.equals("skr");
if (conditions) result++;
}
return result;
}
第二题
鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个 程序统计每年消耗数量最多的鬼画符吗?
public static String solution(int n, ArrayList<String> vector){
HashMap<String, Integer> hashMap = new HashMap<>();
for (String s : vector) {
int count;
if (hashMap.containsKey(s)) {
count = hashMap.get(s) + 1;
} else {
count = 1;
}
hashMap.put(s, count);
}
final int[] count = {0};
final String[] res = {""};
hashMap.forEach( (s,integer) -> {
if (integer > count[0]) {
count[0] = integer;
res[0] = s;
}
} );
return res[0];
}
第三题
已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用
的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)
public static String solution(String str){
int at = str.indexOf("at", 1);
str = str.substring(0, at) + "@" + str.substring(at + 2);
str = str.replace("dot", ".");
if (str.charAt(str.length() - 1) == '.' )
str = str.substring(0, str.length() - 1) + "dot";
if (str.charAt(0) == '.')
str = "dot" + str.substring(1);
return str;
}
第四题
给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3
public static int solution(int n, ArrayList<Integer> arr){
int result = 1;
int temp = 1;
for (int i = 1 ; i < arr.size() ;i++) {
temp = arr.get(i) > arr.get(i - 1) ? temp + 1 : 1;
result = Math.max(result , temp);
}
return result;
}
经验心得
像ACM这块的话,建议多刷题,刷的多了就有经验了,遇到不会的就去找视频学一下,还有数据结构这些,系统的学习了之后再去多刷题,也可以巩固所学的知识。
本次竞赛的bug
系统好像有一点问题,我刚进比赛界面的时候,就一直白板,上面有几个小字显示登陆中(忘记截屏了),然后我刷新进去了之后,它就显示我已经是第四次进去比赛界面了😢