第六届 传智杯初赛B组

文章目录

    • 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");
//			}
		
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单片机AT89C51直流电机控制电路PWM设计

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;直流电机 获取论文报告源码源程序原理图 此文将介绍一种直流电机&#xff0c;详细阐述了用单片机输出口所给占空比的不同实现电机的调速的设计方法&#xff1b;着重讨论L298用于电机驱动时特有的优势。直流电机调速具有…

npm WARN npm npm does not support Node.js v13.9.0

Microsoft Windows [版本 10.0.19045.2965] (c) Microsoft Corporation。保留所有权利。C:\Users\Administrator>node -v v13.9.0C:\Users\Administrator>npm -v npm WARN npm npm does not support Node.js v13.9.0 npm WARN npm You should probably upgrade to a newe…

2023nacos源码解读第4集——整体了解nacos源码模块

文章目录 1、类Linux tree的windows treee工具2、源码目录结构3、模块依赖关系 1、类Linux tree的windows treee工具 windows 自带的tree 不够用&#xff0c;使用node npm安装一个类Linux 的treee npm install -g cnpm --registryhttps://registry.npm.taobao.org npm config…

GWAS:plink进行meta分析

之前教程提到过Metal是可以做Meta分析&#xff0c;除了Metal&#xff0c;PLINK也可以进行Meta分析。 命令如下所示&#xff1a; plink --meta-analysis gwas1.plink gwas2.plink gwas3.plink logscale qt --meta-analysis-snp-field SNP --meta-analysis-chr-field CHR --me…

.net 8 发布了,试下微软最近强推的MAUI

先看下实现的效果&#xff1a; 下面发下XAML文件&#xff1a; <?xml version"1.0" encoding"utf-8" ?> <ContentPage xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x"http://schemas.microsoft.com/winfx/2009/…

MutationObserver 监视 DOM 树改变的api

1、介绍 MutationObserver是一个构造函数&#xff0c;可以用来监听某个节点的变化&#xff0c;当节点发生变化时&#xff0c;可以执行一些回调函数。 它不会立即执行&#xff0c;需要调用MutationObserver的observe方法&#xff0c;传入你想要监听的节点&#xff0c;以及一些配…

5.一维数组——输入一行字符,统计其中各个大写字母出现的次数。

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、举一反三一、题目描述 二、题目分析 三、解题 程序运行代码 前言 本系列为一维数组编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 输入一行字符&#xff0c;统计其中各个大写字母出现的…

平衡树 - splay

相比于之前的普通平衡树进行左旋右旋来比&#xff0c;splay的适用性更高&#xff0c;使用更广泛。 核心函数rotate、splay函数&#xff0c;其它的根据需要进行修改。 int n, m; struct Node {int s[2], p, v, cnt; // 左右儿子、父节点、值、出现数量int size, flag; // 子树大…

leetcode面试经典150题——32 串联所有单词的子串(中等+困难)

题目&#xff1a; 串联所有单词的子串(1中等) 描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&…

人力资源管理后台 === 员工新增修改

目录 1.员工管理-导出excel 2.员工管理-excel组件封装 3.员工管理-下载导入模板 4.员工管理-员工导入-上传excel 5.员工管理-删除员工 6.员工详情和路由 7.员工详情-表单数据校验 8.员工详情-封装部门级联组件 9.员工详情-级联组件-双向绑定 10.员工详情-新增员工 11…

async函数和await关键字

async写在一个函数a前面&#xff0c;该函数变为异步函数&#xff0c;可在里面使用await关键字&#xff0c;await后面一般跟一个promise对象&#xff08;axios函数返回一个promise对象&#xff0c;里面有异步任务&#xff09;&#xff0c;await会原地等待该异步任务结果&#xf…

Horizon地平线财富一直坚持“创新、开放、协作、共享”的运营理念

在“寒风凛冽”的熊市&#xff0c;投资人需要一颗不断探索、勇于尝试的心。 勇气意味着即使你知道这条路很难&#xff0c;你仍然选择坚持。而信念则是相信&#xff0c;即使现在很多人不理解、甚至嘲笑&#xff0c;未来总会有一天他们会明白。 Horizon一直坚持着“创新、开放、…

[计算机网络]应用层概述

0.写在前面: 该层为教学模型的最后一层,某种意义上来说是最接近各位开发者的一层,正因如此,这层中的很多定义和概念大家都有属于自己的理解, 完全按照书本反而才是异类,因此在这里我会去结合我做前端开发的一些经验,来处理和讲解一些概念,另外本层中的部分协议也不会过多阐述了…

【Amazon】通过代理连接的方式导入 AWS EKS集群至KubeSphere主容器平台

文章目录 一、设置主集群方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 二、在主集群中设置代理服务地址方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 三、登录控制台验证四、准备成员集群方式一&#xff1a;使用 Web 控制台…

RC-MVSNet:无监督的多视角立体视觉与神经渲染--论文笔记(2022年)

RC-MVSNet&#xff1a;无监督的多视角立体视觉与神经渲染--论文笔记&#xff08;2022年&#xff09; 摘要1 引言2 相关工作2.1 基于监督的MVS2.2 无监督和自监督MVS2.3 多视图神经渲染 3 实现方法3.1 无监督的MVS网络 Chang, D. et al. (2022). RC-MVSNet: Unsupervised Multi-…

Oracle(2-6) Backup and Recovery Overview

文章目录 一、基础知识1、Categories of Failures 故障类别2、Causes of Statement Failures 语句失败的原因故障情况Resolutions 决议 3、User Process Failures 用户进程失败故障情况Resolutions 决议 4、Possible User Errors 用户错误类型故障情况Resolutions 决议 5、Inst…

SpringCloud原理-OpenFeign篇(四、请求原理)

文章目录 前言正文一、书接上回&#xff0c;从代理对象入手二、ReflectiveFeign.FeignInvocationHandler#invoke()三、SynchronousMethodHandler#invoke(...) 的实现原理3.1 invoke(...)源码3.2 executeAndDecode(...) 执行请求并解码 四、如何更换client 的实现 附录附1&#…

【Linux】记录错误信息日志的实现

文章目录 前言一、 目录实现&#xff08;log.hpp&#xff09;二、目录的具体使用1.comm.hpp&#xff08;管道初始化&#xff09;2.sever.cpp&#xff08;为读端且令其创建命名管道&#xff09;3.client.cpp(为写端) 前言 我们这个设计的日志可以自定以输出的方向&#xff0c;可…

领域驱动设计总结——如何构造领域模型

领域驱动设计总结——如何构造领域模型 本文为领域驱动设计系列总结的第三篇&#xff0c;主要对领域驱动设计概念做个介绍&#xff0c;本系列领域驱动设计总结主要是在Eric Evans 所编写的《领域驱动设计》 一书的基础上进行归纳和总结。本文主要介绍在领域驱动设计中如何构造…

OpenWrt Lan口上网设置

LAN口上网设置 连接上openwrt&#xff0c;我用的 倍控N5105&#xff0c;eth0&#xff0c;看到Openwrt的IP是10.0.0.1 在 网络 -> 网口配置 -> 设置好 WAN 口和 LAN 口 初次使用经常重置 openwrt 所以我设置的是 静态IP模式 - 网络 -> 防火墙 -> 常规设置 ->…