信息竞赛2024年第三次csp-j模拟测试赛后总结

news2024/12/28 21:15:04

目录

一.第一题:孤独的数列 (lonely)

二.第二题:五颜六色 (color)

三.第三题:获取字符串 (obtain)


首先自我反思,因为打错了freopen导致爆零,这是重大的失误,以后绝对不能再犯。

一.第一题:孤独的数列 (lonely)

题目描述:

某一天,你走在路上的时候,看到地上有一个 n 个非负整数组成的序列(a1​,a2​,…,an​)。

你很惊讶地发现:你总是能找到一个正整数 k,使得这个数列的任意 k 个连续正整数的按位或的结果都相同!也就是说,对于所有的(i,j)((1≤i,j≤n−k+1)),都有:

​ [​ai​∣ai+1​∣…∣ai+k−1​=aj​∣aj+1​∣…∣aj+k−1​​]

那么,我们定义能找到的最小的 k 就是这个序列的“孤独程度”。你的任务是找到给定的 T 个序列的每个序列的孤独程度。

题目思路:

暴力枚举k的所有可能,一旦这k为按位或运算的结果一直相同,就直接输出。

错因:

忘了按位或运算是什么了(上课不够认真,该罚!)

正确代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+1;
int t,n,a[N],x[N];
int read(){//快读
	int ans=0,j=1;char c=getchar();
	while(c>'9' or c<'0'){
        if(c=='-')j=-1;
        c=getchar();
	}
	while(c>='0' and c<='9'){
		ans=ans*10+c-'0';
		c=getchar();
	}
	return ans*j;
}
inline int ask(){
	for(int i=1;i<n;i++){
		memset(x,0,sizeof x);每一次计算后清零
		bool flag=true;
		for(int j=1;j<=n-i+1;j++){
			for(int k=1;k<=i;k++) x[j]|=a[j+k-1];//计算每k个数的按位或运算的结果
			if(x[j]!=x[j-1] && j!=1){//一旦有一个不同,k就不符合要求
				flag=false;
				break;
			}
		}
		if(flag==true) return i;//如果符合就返回符合的值
	}
	return n;
}
signed main(){
	freopen("lonely.in","r",stdin);
	freopen("lonely.out","w",stdout);
	t=read();
	for(int i=1;i<=t;i++){
		n=read();
		memset(a,0,sizeof a);
		for(int j=1;j<=n;j++) a[j]=read();//输入元素数组
		printf("%d\n",ask());
	}
	return 0;
}

二.第二题:五颜六色 (color)

题目描述:

树是一种具有 n 个点和 n−1 条边的无向连通图。

六一儿童节快到了,老师安排你去给一棵树进行装饰,从而让其变得更好看。老师给了你 k 桶染料,每一种染料的颜色都不同。你需要将这棵树染色之后尽量显得不单调,具体来说:

  • 对于树上任意两个距离不超过 2 的节点 x 和 y,其所染的颜色不相同。

你想要知道:一共有多少种染色方法,可以使得这棵树满足上述条件?不一定每一种颜料都需要使用。由于答案可能会很大,请输出答案对 109+7 取模后的结果。

题目思路:

在以1为根的距离为二之内的点进行赋值,再以赋值后的点重复之前的操作。

错因:

当时没想到这个思路(后来听到同学分享思路之后才知道的)。

正确代码:

#include<bits/stdc++.h>
using namespace std;
long long n,k,ans=1;
const int N=5e5+5;
const int mod=1e9+7;
int dis[N];
vector<int>v[N],w[N];
inline long long read() {//快读
	int x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9') {
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9') {
		x=x*10+c-'0';
		c=getchar();
	}
	return x*f;
}
void dfs(int x,int fa){//求每一个点的染色可能数
	dis[x]=k;
	for(int i=0;i<w[x].size();i++)	if(dis[w[x][i]])	dis[x]--;
	for(int i=0;i<v[x].size();i++){
		if(v[x][i]==fa)	continue;
		dfs(v[x][i],x); 
	}
}          
signed main(){
	freopen("color.in","r",stdin);
	freopen("color.out","w",stdout);
	n=read(),k=read();
	for(int i=1;i<n;i++){
		int x,y;
		x=read(),y=read();
		v[x].push_back(y),v[y].push_back(x);  
	}
	for(int i=1;i<=n;i++){//重新建边
		for(int j=0;j<v[i].size();j++){
			w[i].push_back(v[i][j]);
			for(int l=0;l<v[v[i][j]].size();l++){
				int z=v[v[i][j]][l];
				if(i==z) continue;
				w[i].push_back(z);
			}
		}
	}
	dfs(1,0);
	for(int i=1;i<=n;i++)	ans=ans*dis[i]%mod;
	printf("%d",ans);
	return 0;
}

三.第三题:获取字符串 (obtain)

题目描述:

Sofia 有一个初始长度为 n 的字符串 S,只包含小写英文字母。她可以对这个字符串进行以下类型的操作:

  • 选择一个下标 i (1≤i≤∣S∣),并删除 Si​。∣S∣ 表示字符串的长度。
  • 选择两个整数 l,r,要求 (1≤l≤r≤∣S∣),然后对 Sl​,Sl+1​,…,Sr​ 按照从小到大进行排序。例如,对字符串 sofia 选择 l=2,r=4 的话,变化之后的字符串为 sfioa

Sofia 想知道:对字符串 S 进行若干次上述两种操作之后,是否有可能得到另一个长度为 m 的字符串 T?

样例:

题目思路:

首先看修改之前的字符串与修改之后的字符串的长度是否相同。如有,将修改后的字符串在修改前的里没有的删除,在进行排序,否则直接进行排序。

错因:

排序实现错误(炸了)。

正确代码:

#include<bits/stdc++.h>
using namespace std;
int t,n,m;
string s,ch;
bool check(){
	queue<int> q[207];
	for(int i=0;i<n;i++) q[s[i]].push(i);//入队每个字符对应的下标
	for(int i=0;i<m;i++){
		if(q[ch[i]].size()==0) return false;//如果在修改前的字符串中没有修改后中的字符,输出NO
		else{
			for(char j='a';j<ch[i];j++){
				while(q[j].size()&&q[j].front()<q[ch[i]].front()) q[j].pop();//在有这个字符的前提下并且修改后比他在字典序中靠前的的下标靠前的情况下进行出队
			}
			q[ch[i]].pop();
		}
	}
	return true;
}
signed main(){
	freopen("obtain.in","r",stdin);
	freopen("obtain.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>m;
		cin>>s>>ch;
		if(check()) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}

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

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

相关文章

【前端】VUE 在线运行 模拟器 通过字符串动态渲染页面 可以灵活使用

【前端】VUE2 在线运行 模拟器 通过字符串动态渲染页面 可以灵活使用 <template><div><!-- 这里是动态组件--><component :is"component"></component><!-- 这里是动态组件--><br /><br /><br />可…

【源码+文档+调试讲解】学院网站

摘 要 使用旧方法对冀中工程技师学院网站的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在冀中工程技师学院网站的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次…

序列建模之循环和递归网络 - 长短期记忆和其他门控RNN篇

序言 在序列建模的广阔领域中&#xff0c;循环神经网络&#xff08; RNN \text{RNN} RNN&#xff09;以其独特的能力在处理可变长度序列数据上展现出了巨大的潜力。然而&#xff0c;传统的 RNN \text{RNN} RNN在处理长期依赖问题时&#xff0c;往往面临着梯度消失或爆炸的困境…

xss靶场 pwnfunction WW3

目录 代码 代码分析 payload构造 结果 代码 <div><h4>Meme Code</h4><textarea class"form-control" id"meme-code" rows"4"></textarea><div id"notify"></div> </div><scri…

UIAbility组件间的交互

一、Want 是UIAbility组件间交互载体。 Want启动UIAbility组件的两种方式&#xff1a; 1、显示Want启动 启动某个明确UIAbility组件时使用&#xff1b;需要在Want参数中设置启动的应用包名和UIAbility组件名。 2、隐式Want启动 需要使用某个应用的能力&#xff0c;不关心提供能…

在VBA中调用Adobe Acrobat或Reader的命令行工具,实现PDF自动打印 (‾◡◝)

在VBA&#xff08;Visual Basic for Applications&#xff09;中自动打印PDF文件通常不直接支持&#xff0c;因为VBA本身是针对Microsoft Office应用程序&#xff08;如Excel、Word和PowerPoint等&#xff09;的编程语言&#xff0c;并不直接处理PDF文件。但是&#xff0c;你可…

【JAVA多线程】CompletableFuture原理剖析

前文讲解了completablefuture的使用&#xff0c;本文将剖析其核心原理&#xff0c;前文连接&#xff1a; 【JAVA多线程】Future&#xff0c;专为异步编程而生_java future异步编程-CSDN博客 目录 1.任务组成任务链 2.默认使用ForkjoinPool作为线程池 3.任务是被串行执行的…

人工智能在Facebook的角色:创新与挑战并存

人工智能&#xff08;AI&#xff09;已经成为推动科技进步的重要力量&#xff0c;而在社交媒体领域&#xff0c;Facebook则是将AI技术广泛应用的先锋。Facebook通过AI来改善用户体验、提高内容质量以及优化广告投放&#xff0c;极大地提升了平台的功能与价值。然而&#xff0c;…

近年国际重大网络安全事件深度剖析:安全之路任重道远

引言 在当今数字化时代&#xff0c;网络安全已成为全球关注的焦点。随着信息技术的飞速发展&#xff0c;网络攻击的手段和规模也在不断升级&#xff0c;给个人、企业和国家带来了巨大的威胁。本文将盘点近年来国际上发生的重大网络安全事件&#xff0c;分析其影响和教训&#…

GPT-4o微调功能现已上线

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

图的应用

一、最小生成树 1&#xff09;Prim算法&#xff08;加点&#xff09; 2&#xff09;Kruskal算法&#xff08;加边&#xff09; 二、最短路径 1&#xff09;Dijkstra算法 2&#xff09;Floyd算法 三、拓扑排序 1&#xff09;AOV 拓扑序列不唯一 2)AOE&#xff08;关键路径&#…

实现Bezier样条曲线

1.给出n1 个控制点pk(xk,yk,zk),这里k可取值0-n,多项式函数公式如下 获取的单个点的代码 void zmBezier::getPoint(float u, double p[3]) {int n m_count - 1;double x 0, y 0, z 0;for(int k 0; k < n; k){x m_ctrlPoints[k][0] * BEZ_k_n(n, k, u);y m_ctrlPoin…

Trades和Centertrack在windows上配置

直接说结论好了,小虎在windows配了一个星期失败了,结果是双系统在linux下配置成功。 成功环境 Successful systems info: CUDA 11.4 CUDA driver 470.63.01 python 3.6.13 GCC 7.5.0 pytroch 1.9.0 compilation tools, release 11.4, V11.4.48成功记录

关于AR在医疗领域创新应用

AR技术在医疗领域创新应用&#xff0c;旨在展示AR技术如何为医疗行业带来革命性的变化&#xff0c;我们可以从以下几个方面入手&#xff1a; 一、引言 随着科技的飞速发展&#xff0c;增强现实&#xff08;AR&#xff09;技术正逐步渗透到医疗领域的各个环节&#xff0c;为患…

云手机在亚马逊店铺运营中能发挥什么作用

亚马逊作为全球领先的电商平台&#xff0c;汇聚了庞大的用户群体和交易规模&#xff0c;如何有效吸引流量成为亚马逊店铺经营者面临的难题。而云手机作为一种前沿的技术工具&#xff0c;为亚马逊店铺引流带来了全新的解决方案。本文将深入探讨云手机在亚马逊店铺引流中的关键作…

JVM类加载机制—JVM类加载过程

一、概述 代码编译后&#xff0c;就会生成JVM&#xff08;Java虚拟机&#xff09;能够识别的二进制字节流文件&#xff08;*.class&#xff09;。而JVM把Class文件中的类描述数据从文件加载到内存&#xff0c;并对数据进行校验、转换解析、初始化&#xff0c;使这些数据最终成…

数据结构--图(笔记)

文章目录 1. 概念2. 分类无向图有向图循环图连通图 3. 应用4. 操作(CRUD)5. 图常见的数据结构邻接表邻接矩阵关联矩阵关联矩阵与邻接矩阵 6. 内容出处 1. 概念 ① 图&#xff1a;在计算机科学中&#xff0c;图&#xff08;英语&#xff1a;graph&#xff09;是一种抽象数据类型…

36. 有效的数独【 力扣(LeetCode) 】

一、题目描述 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图…

2-72 基于matlab的平稳小波变换进行多聚焦图像融合

基于matlab的平稳小波变换进行多聚焦图像融合&#xff0c;获得一副清晰的图像&#xff0c;带有一副示例图像&#xff0c;实验效果好。SWT级平稳小波变换&#xff0c;是一种多尺度、多方向、时频局部的图像稀疏表示方法&#xff0c;广泛运行图像处理领域&#xff0c;具有平移不变…

msxml*.dll 错误 ‘80072f7d‘ 安全频道支持出错 解决方案

诡异的 msxml6.dll错误 80072f7d安全频道支持出错&#xff0c;用 SSLTools.exe 修复的方法无效&#xff01;&#xff01;&#xff01; ’--------------------------------------------------------------- 有如下简要 ASP 代码&#xff0c;用于获取网页链接返回内容&#xf…