2023年第六届传智杯程序设计挑战赛(个人赛)B组 赛后复盘
传智杯赛后复盘
大家好 我是寸铁👊
2023年第六届传智杯程序设计挑战赛(个人赛)B组 赛后复盘
喜欢的小伙伴可以点点关注 💝
1. 字符串拼接
细节:一定要清楚nextLine()和next()的区别
nextLine()是遇到回车会停下来
next是遇到空格会停下来
很明显这里必须得选nextLine()
踩坑实录…
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String str1 = in.nextLine();String str2 = in.nextLine();StringBuffer s1 = new StringBuffer(str1);StringBuffer s2 = new StringBuffer(str2);s1.append(s2);System.out.println(s1);}
}
2. 差值
import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {// 创建Scanner对象用于接收输入Scanner in = new Scanner(System.in);// 输入战士数量int n = in.nextInt();int[] strengths = new int[n];for (int i = 0; i < n; i++) {strengths[i] = in.nextInt();}// 对战士战斗力进行排序 以便比较相邻两位战士的战力之差Arrays.sort(strengths);// 初始化最小差值为一个较大的值int minDif = 0x3f3f3f3f;// 枚举相邻两名战士战斗力之差的最小值 for (int i = 0; i < n - 1; i++) {int currentDif = strengths[i + 1] - strengths[i];//更新战力之差的最小值if (currentDif < minDif) {minDif = currentDif;}}System.out.println(minDif);in.close();}
}
3. . 红色和紫色
很有趣的一题,奇数和偶数的区别
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int m = in.nextInt();//方格数量为偶数则yukari赢 因为yukari总会染成紫色if(n % 2 == 0 || m % 2 == 0){System.out.println("yukari");}else{//方格数量为奇数则akai赢 因为最后akai不能染成紫色 System.out.println("akai");}}
}
4. abb
dp 举出后面相同的字符就+1
import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextInt()) { // 注意 while 处理多个 caseint n = in.nextInt();String str = in.next();int[][] dp = new int[n + 1][26];Arrays.fill(dp[n], 0);for (int i = n - 1; i >= 1; i--) {char ch = str.charAt(i);for (int j = 0; j < 26; j++) {if (ch - 'a' == j) {dp[i][j] = dp[i + 1][j] + 1;} else {dp[i][j] = dp[i + 1][j];}}}long res = 0;for (int i = 1; i <= n; i++) {char c = str.charAt(i - 1);for (int j = 0; j < 26; j++) {if (c - 'a' != j && dp[i][j] >= 2) {res += dp[i][j] * (dp[i][j] - 1) / 2;}}}System.out.println(res);}}
}
5. kotorti和素因子
dfs + 质数筛
import java.util.Scanner;
import java.util.ArrayList;public class Main {static final int maxn = 1005;static final int INF = 0x3f3f3f3f;static int n, m, sum, min_, X;static ArrayList<Integer>[] e = new ArrayList[maxn];static boolean[] vis = new boolean[maxn];static boolean flag;static boolean isPrime(int n) {if (n == 1)return false;for (int i = 2; i <= Math.floor(Math.sqrt(n)); i++) {if (n % i == 0)return false;}return true;}static void prime(int n, int x) {for (int i = 1; i <= Math.floor(Math.sqrt(n)); i++) {if (n % i == 0) {if (isPrime(i))e[x].add(i);if (i * i != n && isPrime(n / i))e[x].add(n / i);}}}static void dfs(int y) {if (y == X) {flag = true;min_ = Math.min(min_, sum);return;}for (int i = 0; i < e[y].size(); i++) {if (!vis[e[y].get(i)]) {sum += e[y].get(i);vis[e[y].get(i)] = true;dfs(y + 1);vis[e[y].get(i)] = false;sum -= e[y].get(i);}}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);n = scanner.nextInt();for (int i = 0; i < maxn; i++) {e[i] = new ArrayList<>();}X = 0;for (int i = 0; i < n; i++) {m = scanner.nextInt();prime(m, X++);}min_ = INF;dfs(0);if (flag)System.out.println(min_);elseSystem.out.println(-1);}
}
6. 红和蓝
赛后补题
import java.util.Scanner;
import java.util.Arrays;public class Main {static final int N = 2 * 100000 + 10;static int[] e = new int[N];static int[] h = new int[N];static int[] ne = new int[N];static int idx;static void add(int a, int b) {e[idx] = b;ne[idx] = h[a];h[a] = idx++;e[idx] = a;ne[idx] = h[b];h[b] = idx++;}static int n;static int cnt;static int[] colour = new int[N];static boolean flag;static void dfs1(int x, int fa) {int son = 0;for (int i = h[x]; i != -1; i = ne[i]) {int ver = e[i];if (ver == fa)continue;son++;dfs1(ver, x);}if (son == 0 || colour[x] == 0) {if (colour[fa] != 0 || fa == 0) {flag = true;return;}colour[x] = colour[fa] = ++cnt;}}static int[] clo = new int[N];static void dfs2(int x, int fa) {for (int i = h[x]; i != -1; i = ne[i]) {int ver = e[i];if (ver == fa)continue;if (colour[ver] == colour[x])clo[ver] = clo[x];elseclo[ver] = clo[x] ^ 1;dfs2(ver, x);}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);n = scanner.nextInt();Arrays.fill(h, -1);for (int i = 1; i < n; i++) {int x = scanner.nextInt();int y = scanner.nextInt();add(x, y);}dfs1(1, 0);if (flag) {System.out.println("-1");return;}dfs2(1, 0);for (int i = 1; i <= n; i++)System.out.print(clo[i] != 0 ? "B" : "R");}
}
总结
ACM模式,大部分题目是从牛客题库、寒假训练营抽出来的,Dfs、DP、图论、质数筛的混合考察比较多,平时多练习多debug
ACM注意罚时的重要性,考虑一些细节不对,提交报错则罚时严重。
拿到题目,先把题目全部扫一遍,不要一股脑只是做题,应该先把题目先过一遍,确定考点后,由易入难。
确保会的都写对,不会的尝试一下,多debug
相关文章:
2023年第六届传智杯程序设计挑战赛(个人赛)B组 赛后复盘
传智杯赛后复盘 大家好 我是寸铁👊 2023年第六届传智杯程序设计挑战赛(个人赛)B组 赛后复盘 喜欢的小伙伴可以点点关注 💝 1. 字符串拼接 细节:一定要清楚nextLine()和next()的区别 nextLine()是遇到回车会停下来 nex…...
C语言——深入理解指针(2)
目录 1. 数组名 2. 指针访问数组 3. 一维数组的传参(本质) 4. 冒泡排序 5. 二级指针 6. 指针数组(指针的数组) 7. 指针数组模拟二维数组 1. 数组名 在之前的代码中我们使用指针访问过数组的内容。 int arr[10] {1,2,3,4…...
【已解决】HBase 2.2.6 集群部署后,从节点未启动 HRegionServer
问题发现 今天搭建了 HBase 2.2.6 集群环境,启动之后发现,从节点的 HRegionServer 未启动。多次对比参数设置仍然未发现异常。而启动之前的 HBase 2.4.11 则完成正常,我就有点怀疑是不是 HBase 2.2.6 集群搭建有什么特殊的地方? …...
JVM——垃圾回收(方法区中的垃圾回收和(堆回收)自动垃圾回收)
目录 1.自动垃圾回收介绍1.C/C的内存管理2.Java的内存管理3.垃圾回收的对比 2.方法区的回收方法区的回收 – 手动触发回收 3.堆回收1.引用计数法2.可达性分析算法 1.自动垃圾回收介绍 1.C/C的内存管理 ⚫ 在C/C这类没有自动垃圾回收机制的语言中,一个对象如果不再…...
Flink 常用物理分区算子(Physical Partitioning)
Flink 物理分区算子(Physical Partitioning) 在Flink中,常见的物理分区策略有:随机分配(Random)、轮询分配(Round-Robin)、重缩放(Rescale)和广播(Broadcast)。 接下来,我们通过源码和Demo分别了解每种物理分区算子的作用和区别。 (1) 随机…...
Leetcode.560 和为 K 的子数组
题目链接 Leetcode.560 和为 K 的子数组 mid 题目描述 给你一个整数数组 n u m s nums nums 和一个整数 k k k ,请你统计并返回 该数组中和为 k k k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1]…...
linklab phase1 更简单的方法
直接反汇编phase1.o,看eax中是0x21,0x21在数据域中,直接把从第21个字节的内容改为0000000000即可。...
8.前端--CSS-文本属性【2023.11.26】
CSS Text(文本)属性可定义文本的外观,比如文本的颜色、对齐文本、修饰文本、文本缩进、行间距等 1.文本颜色 color 属性用于定义文本的颜色。 语法: div { color: red; }属性: 2.文本对齐 text-align 属性用于设置元…...
容器技术——Cgroup
目录 容器技术容器技术概述要区分好共享与隔离的概念容器技术的三大核心容器对比虚拟机 namespaceUnionFs容器操作系统的来源操作系统的来源完整操作系统的镜像docker image是什么?如何构成的 如何为容器安装操作系统UnionFS(联合文件系统)的…...
uniapp+vue3路由跳转传参
在uni-app中使用Vue 3进行路由跳转传参,可以通过以下步骤实现: 1.在router文件夹中创建一个名为index.js的文件,用于配置路由。在这个文件中,我们将导入createRouter和createWebHistory函数,并定义路由规则。同时&…...
流量主如何在广告收益和用户体验中找到平衡
流量主在广告收益和用户体验之间找到平衡是一个关键的挑战,因为过多或不恰当的广告可能会影响到用户的满意度和留存率。以下是一些方法,可以帮助流量主在这两者之间找到平衡: admaoyan猫眼聚合 优质内容为先: 提供高质量、有价值的…...
RPC和HTTP的区别
目录 1、RPC是什么 1.1 概念 1.2 RPC的组成部分 1.3 常见的 RPC 技术和框架 1.4 RPC的工作流程 2、HTTP是什么 2.1 概念 2.2 HTTP的消息格式 2.3 HTTP响应状态码有哪些 3、⭐RPC和HTTP的区别 小结 1、RPC是什么 1.1 概念 RPC(Remote Procedure Call&am…...
Dubbo3使用Zookeeper作为注册中心的方案讨论!详解DubboAdmin与PrettyZoo来监控服务的优劣!
文章目录 一:Dubbo注册中心的基本使用 二:Zookeeper注册中心的使用 1:依赖引入 2:实际开发 三:Zookeeper作为注册中心的使用展示 1:启动注册Zookeeper服务 2:引入注册中心 (一)…...
前端uni微信小程序和后端nodejs使用websoket
需求 前端向后台服务器发请求获取验证码,然后端游输入验证码,向我的后端发请求获取验证信息。后台给游戏端返回信息的时候同时给微信小程序端返回验证结果。意思是不要微信小程序端主动触发,验证是否绑定的请求。 思路 后端生成验证码时存…...
java小游戏之【王者荣耀】
首先创建一个新的Java项目命名为“王者荣耀”,并在src下创建两个包分别命名为“com.sxt"、”com.stx.beast",在相应的包中创建所需的类。 代码 package com.sxt;import javax.swing.*; import java.awt.*;public class Background extends GameObject {p…...
QT网络协议知识体系(一)
//获取主机的名称和ip地址 //获取主机的所有信息...
【数据库】表的连接在执行时的算法解析,嵌套循环连接算法的几种实现,多表连接中表的数量会影响什么
嵌套循环连接 专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新…...
【刷新:重新发现商业与未来】书笔记
收获 同理心:站在他人角度考虑他人感受,他人需要什么,我能提供什么;他人可以是员工,家人等;对于员工来讲核心四件事:1、薪水;2、有结果;3、有成长;4、工作开…...
Lua实现面向对象三大特性
面向对象是基于table实现的 封装 :(冒号) 自动将调用该函数的对象作为第一个参数传入 --Object就是第一参数 function Object:new() self:代表默认传入的第一个参数 _index:当自己的变量中找不到时,会默认找原表中_index指向的内容 Obj…...
竞赛python区块链实现 - proof of work工作量证明共识算法
文章目录 0 前言1 区块链基础1.1 比特币内部结构1.2 实现的区块链数据结构1.3 注意点1.4 区块链的核心-工作量证明算法1.4.1 拜占庭将军问题1.4.2 解决办法1.4.3 代码实现 2 快速实现一个区块链2.1 什么是区块链2.2 一个完整的快包含什么2.3 什么是挖矿2.4 工作量证明算法&…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
