第六届 传智杯初赛B组

news2025/5/26 4:19:15

文章目录

    • A. 字符串拼接
      • 🍻 AC code
    • B. 最小差值
      • 🍻 AC code
    • C. 红色和紫色
      • 🍻 AC code
    • D. abb
      • 🍻 AC code
    • E. kotori和素因子
      • 🍻 AC code
    • F. 红和蓝
      • 🍻 AC code


🥰 Tips:AI可以把代码从 java 转成其他语言的版本,思路比语言更重要。

A. 字符串拼接

👨‍🏫 题目地址

在这里插入图片描述

🍻 AC code

#include <iostream>
using namespace std;

int main() {
    string a, b;
    getline(cin,a);
    getline(cin,b);
    cout << a + b << endl;
    return 0;
}

B. 最小差值

👨‍🏫 参考地址

🍻 AC code

import java.util.*;
import java.io.*;

public class Main {
	static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		int n = Integer.parseInt(in.readLine());
		int[] a = new int[n];
		String[] ss = in.readLine().split(" ");
		
		for(int i =0; i < n; i++)
			a[i] = Integer.parseInt(ss[i]);
		Arrays.sort(a);//排序
		int min = Integer.MAX_VALUE;
		for(int i =1; i < n; i++)
			min = Math.min(min, a[i]-a[i-1]);//算差值
		out.write(min + "");
		out.flush();
	}
}

C. 红色和紫色

👨‍🏫 题目地址
在这里插入图片描述

🍻 AC code

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		long ans = (long)n*m;
		if(ans % 2 == 0)
			System.out.println("yukari");
		else {
			System.out.println("akai");
		}
	}
}

D. abb

👨‍🏫 题目地址

🐷 思路:统计字符串中 a~z 每个字符出现的次数存在 cnt 数组中,根据题意,从前往后枚举 abb中的 a,没枚举一位就减去当前位上的字符数量,这样 cnt[ ] 的字符数量就是当前位往后的字符出现次数了,根据 cnt[ ] 来计算 abb中的bb的情况,使用组合数公式即可
C n m = n ! ( n − m ) ! × m ! C_n^m = \frac{n!}{(n-m)!\times m!} Cnm=(nm)!×m!n!

🍻 AC code

import java.util.*;
import java.io.*;

public class Main {
	static long mod = (int)1e9+7;
	static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
	static int N = (int)1e5+10;
	static int[] cnt = new int[256];//统计字母出现次数

//	C(x,2) = x! / 2! (引以为戒)
//	C(x,2) = x! / (2! * (x-2)!) = x * x -1 / 2
	private static long cal(int x) {
		long ans = x*(x-1)/2;
		return ans;
	}
	public static void main(String[] args) throws IOException {
		int n = Integer.parseInt(in.readLine());
		String s = in.readLine();
		char[] a = s.toCharArray();
		n = a.length;
		long ans = 0;
		for(int i = 0; i < n; i++)
			cnt[a[i]]++;
		for(int i = 0; i < n-1; i++)
		{
			char c = a[i];
			cnt[c]--;
			for(int j = 'a'; j <= 'z'; j++)
			{
				if(j == c)
					continue;
				if(cnt[j] >= 2) {
					{
						long t = cal(cnt[j]) % mod;
						ans += t;
					}
				}
			}
		}
		out.write(ans+"\n");
		out.flush();
	}
}

E. kotori和素因子

👨‍🏫 题目地址

🐷 思路:先预处理出 0 到 1000 的所有质数,接着找到每个整数的所有质数因子存在因子数组中。根据题意,每个整数需要选出独一无二质因子,由于数据范围比较小 1 ≤ n ≤ 10 1 \le n \le 10 1n10,所以可以直接 dfs 枚举每个整数选取哪个质因子。

🍻 AC code

import java.util.*;

public class Main {
	static int N = 15,n,INF = 0x3f3f3f3f;
	static int[] a = new int[N];//整数数组
	static int[] p = new int[300];//存2~1000的质数
	static int cnt = 0;//2~1000的质数个数
	static ArrayList[] factors = new ArrayList[N];//存每个整数的质因数
//	static boolean[] st = new boolean[N];
	static HashSet<Integer> st = new HashSet<>();//记录已经使用过的质数(st:state 状态)
	static int ans = INF;//答案

	public static void main(String[] args) {
		getPrimes();
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		for(int i =0; i < n; i++)
		{
			factors[i] = new ArrayList<Integer>();
			a[i] = sc.nextInt();
			ArrayList<Integer> t = cal(a[i]);
			factors[i] = t;
		}
		dfs(0,0);
		if(ans != INF)
			System.out.println(ans);
		else {
			System.out.println(-1);
		}
	}

	
//	x 表示当前搜索到的第几个整数
	private static void dfs(int x,int sum) {
		if(x == n)
		{
			ans = Math.min(sum, ans);
			return;
		}
		ArrayList<Integer> ls = factors[x];
		boolean flag = false;
		for(Integer xx : ls)
		{
			if(st.contains(xx))
				continue;
			flag = true;
			st.add(xx);
			dfs(x+1, sum + xx);
			st.remove(xx);
		}
		if(!flag)
			return;
	}

//	返回 x 的所有质因数
	private static ArrayList<Integer> cal(int x) {
		ArrayList<Integer> ans = new ArrayList<Integer>();
		for(int i = 0; i < cnt; i++)
			if(x % p[i] == 0)
				ans.add(p[i]);
		return ans;	
	}

//	预处理质数数组
	private static void getPrimes() {
		p[cnt++] = 2;
		for (int i = 3; i <= 1000; i++)
			if (isP(i))
				p[cnt++] = i;
	}

//	判断x是否为质数
	private static boolean isP(int x) {
		for(int i = 2; i*i <= x; i++)
			if(x % i == 0)
				return false;
		return true;
	}
}

F. 红和蓝

👨‍🏫 题目地址
🐷 思路:如果叶子结点为一种颜色时,它的周围只有其父亲结点,所以父亲结点必须和它同色

🍻 AC code


import java.util.*;
import java.io.*;

public class Main {
	
	static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
	
	static int N = 200010,n,idx;
//	以无向图的邻接表形式存树
	static int[] h = new int[N];
	static int[] e = new int[N];
	static int[] ne = new int[N];
	static int[] cnt = new int[N];//存储每个节点包含多少个叶子节点(要求当前节点同色的节点)
	static int[] sz = new int[N];//存储每个节点所包含的子树的节点数量
	
//	加边函数
	static void add(int a,int b)
	{
		e[idx] = b;
		ne[idx] = h[a];
		h[a] = idx++;
	}
	
//	u表示当前节点,p表示父结点
	static boolean dfs(int u,int p)
	{
		sz[u] = 1;//初始化为1,表示当前节点自身
		for(int i = h[u]; i != -1; i = ne[i])
		{
			int j = e[i];
			if(j == p)continue;//存的是无向边,特判 父 --> 子 --> 父 的情况
			if(!dfs(j, u))
				return false;
			sz[u] += sz[j];//子树节点数量累加到当前节点的sz值上
			if((sz[j] & 1 )== 1)//当子树j的结点数为奇数时,当前节点u必须与节点j同色
				cnt[u]++;
		}
		if(cnt[u] > 1 )//两个叶子节点要求同色,无解
			return false;
		return true;
	}
	static int[] ans = new int[N];//答案数组
//	再跑一次搜索染色,0表示红色R,1表示蓝色B
//	u表示当前节点,p表示父结点, c表示颜色
	static void dfs2(int u,int p,int c)
	{
		ans[u] = c;
		for(int i = h[u]; i != -1; i = ne[i])
		{
			int j = e[i];
			if(j == p)
				continue;
			if((sz[j] & 1) == 1)
				dfs2(j, u, c);
			else {
				dfs2(j, u, 1-c);
			}
		}
	}
	
	public static void main(String[] args) throws Exception {
		Arrays.fill(h, -1);
		n = Integer.parseInt(in.readLine());
		for(int i = 1; i < n; i++)
		{
			String[] ss = in.readLine().split(" ");
			int a = Integer.parseInt(ss[0]);
			int b = Integer.parseInt(ss[1]);
			add(a, b);
			add(b, a);
		}
		if(n % 2 == 1)
		{
			System.out.println(-1);
			System.exit(0);
		}
		if(!dfs(1, -1))
		{
			System.out.println(-1);
			return;
		}

		dfs2(1, -1, 0);
		for(int i = 1; i <= n; i++)
			System.out.print(ans[i] == 0 ? "R" : "B");
//			if(ans[i] != 0)
//				System.out.print("B");
//			else {
//				System.out.print("R");
//			}
		
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1256194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

056-第三代软件开发-软件打包

第三代软件开发-软件打包 文章目录 第三代软件开发-软件打包项目介绍软件打包1 下载 linuxdepoyqt 工具2 安装 linuxdepoyqt3 qmake配置4 打包程序 总结 关键字&#xff1a; Qt、 Qml、 linuxdeployqt、 Ubuntu、 AppImage 项目介绍 欢迎来到我们的 QML & C 项目&…

自建CA实战之 《0x03 代码签名》

自建CA实战之 《0x03 代码签名》 本文针对Windows平台&#xff0c;介绍如何使用自建CA来签发代码签名证书。 之前的文章中&#xff0c;我们介绍了如何自建CA&#xff0c;以及如何使用自建CA来签发Web服务器证书、客户端证书。 本文将介绍如何使用自建CA来签发代码签名证书。…

坚鹏:中国人寿临沂公司当下中国经济形势与寿险业发展机遇培训

中国人寿保险&#xff08;集团&#xff09;公司属国家大型金融保险企业&#xff0c;2016年中国人寿入主广发银行&#xff0c;开启保险、投资、银行三大板块协同发展新格局。2022年&#xff0c;集团公司合并营业收入站稳万亿平台&#xff1b;合并总资产突破6万亿元大关。中国人寿…

基恩士软件的基本操作(五,日志记录与使用)

目录 基恩士是如何保存日志的&#xff1f; 如何使用日志功能 查看DM10的值1秒加1的记录日志 设定id与储存位置 软元件设定&#xff08; 日志ID有10个&#xff08;0~10&#xff09;&#xff0c;每一个ID最多添加512个软元件&#xff09; 设定触发 执行日志的梯形图程序 触…

Windows 7隐藏用户测试

请注意Window 7是在虚拟机上安装的&#xff0c;ip是192.168.0.108。 下边都是在虚拟机Window 7上操作&#xff0c;直到最后远程连接才在自己本机Windows 11上操作。 需要同时按下Windowsr,然后输入cmd&#xff0c;再点击确定。 在命令上里边输入net user可以显示一下用户。 …

单链表原来是这样实现的!

文章目录 前言1. 链表的概念及结构1.1在链表里&#xff0c;每节“车厢”是什么样的呢&#xff1f;1.2为什么还需要指针变量来保存下⼀个节点的位置&#xff1f; 2. 单链表的实现1. 定义结构体(Seqlist)2. 打印函数(SLTPrint)小插曲&#xff0c;创建节点函数CreateNode3. 尾插函…

一种LED驱动专用控制电路

一、基本概述 TM1620是一种LED&#xff08;发光二极管显示器&#xff09;驱动控制专用IC,内部集成有MCU数字接口、数据锁存 器、LED驱动等电路。本产品质量可靠、稳定性好、抗干扰能力强。主要适用于家电设备(智能热 水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、…

清分系统对账

流程1的问题&#xff1a; 1、通道一天的数据会有多少&#xff0c;有二三十万条交易数据吗&#xff1f; 2、如果数据过大都存到一个Map里面去&#xff0c;机器不得挂了 步骤1总结&#xff1a; 1、通过channelNo获取通道T的数据&#xff0c;因为通道是一天一个文件给过来。在转…

xxljob学习笔记01(小滴课堂)

分布式调度xxl-job源码部署和数据库建立&#xff1a; 在idea中打开安装包&#xff1a; 创建数据库&#xff1a; 建表&#xff1a; 在项目里&#xff1a; 在navicat里运行语句即可&#xff1a; 修改数据库地址和用户名&#xff0c;密码&#xff1a; 配置令牌&#xff0c;不然谁…

WiFi的CSMA/CA竞争窗口流程简述

1、若站点最初有数据要发送&#xff08;不是发送不成功再进行重传的那种&#xff09;&#xff0c;且检测到信道空闲&#xff0c;在等待DIFS后&#xff0c;就发送整个数据帧。 2、否则&#xff0c;站点执行退避算法。一旦检测到信道忙&#xff0c;就冻结退避计时器。只要信道空…

卸载idea2017-2023步骤 (卸载干净)

1. 右击打开软件所在位置 2. 找到卸载程序 Uninstall.exe, 双击打开 3. 开始卸载 4. 注册表删除 打开winR, 输入命令regedit Ctrl F查找 "jetbrain" 删除查找出来的文件夹。卸载干净, 即可安装新idea

【Amazon】基于Amazon提供的托管式EKS通过eksctl命令部署Kubernetes集群

文章目录 一、使用CloudFormation创建堡垒机二、安装AWS CLI命令行工具三、安装eksctl命令行工具四、创建集群角色4.1 集群服务角色创建4.2 集群节点组角色创建 五、创建 EKS集群六、登录EKS控制台七、参考链接 一、使用CloudFormation创建堡垒机 导航至CloudFormation&#xf…

【前沿技术了解】web图形Canvas、svg、WebGL、数据可视化引擎的技术选型

目录 Canvas&#xff1a;HTML5新增 Canvas标签&#xff08;画布&#xff09; 渲染上下文canvas.getContext(contextType[, contextAttributes]) 上下文类型&#xff08;contextType&#xff09; 上下文属性 (contextAttributes) 示例 动画 setInterval(function, delay)…

【go入门】表单

4.1 处理表单的输入 先来看一个表单递交的例子&#xff0c;我们有如下的表单内容&#xff0c;命名成文件login.gtpl(放入当前新建项目的目录里面) <html> <head> <title></title> </head> <body> <form action"/login" meth…

软件介绍01- koodo Reader支持所有电脑平台!

1 软件简介 Koodo Reader软件是一款阅读器&#xff0c;可以阅读各种格式的文档。用来代替kindle。界面简洁&#xff0c;好看&#xff0c;阅读功能强大&#xff0c;而且可以多设备同步。 因为开源&#xff0c;所以免费。而且支持所有电脑平台&#xff01; 支持格式&#xff1a…

kafka2.x常用命令:创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费

原创/朱季谦 接触kafka开发已经两年多&#xff0c;也看过关于kafka的一些书&#xff0c;但一直没有怎么对它做总结&#xff0c;借着最近正好在看《Apache Kafka实战》一书&#xff0c;同时自己又搭建了三台kafka服务器&#xff0c;正好可以做一些总结记录。 本文主要是记录如…

解密Kafka主题的分区策略:提升实时数据处理的关键

目录 一、Kafka主题的分区策略概述1.1 什么是Kafka主题的分区策略&#xff1f;1.2 为什么分区策略重要&#xff1f; 二、Kafka默认分区策略2.1 Round-Robin分区策略 三、自定义分区策略3.1 编写自定义分区器3.2 最佳实践&#xff1a;如何选择分区策略 四、分区策略的性能考量4.…

FO-like Transformation

参考文献&#xff1a; [RS91] Rackoff C, Simon D R. Non-interactive zero-knowledge proof of knowledge and chosen ciphertext attack[C]//Annual international cryptology conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 1991: 433-444.[BR93] Bellare M…

粉丝提问:写博文怎样才能变现啊?

文章目录 粉丝提问&#xff1a;写博文怎样才能变现啊&#xff1f;我总结了一下博客变现的几个途径&#xff1a;另外做技术博主的五大好处 后记 粉丝提问&#xff1a;写博文怎样才能变现啊&#xff1f; type: Post status: Published date: 2023/11/26 tags: 推荐 category…

为什么PCB板大多数都是绿色的?

什么时候开始接触到PCB板的呢&#xff1f;也许是是把家里的电视遥控器拆开的时候&#xff0c;也许是你的小霸王学习机游戏手柄给按坏拆开的时候&#xff0c;也许那时候你还不知道这叫PCB电路板。然后就是大学里使用嘉立创免费打板的时候&#xff0c;有一个选项绿色板还是黑色板…