csp-j模拟三补题报告

news2024/11/30 5:44:58

前言

今天题难,排名没进前十
(“关于二进制中一的个数的研究与规律”这篇文章正在写)

第一题

三个(three)

请添加图片描述
请添加图片描述
请添加图片描述

我的代码(AC)

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=5e3+5;
int main(){
	freopen("three.in","r",stdin);
	freopen("three.out","w",stdout);
	ll a=1,b=1,c=1,A=1,B=1,C=1;
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		A+=a+2*b+c;
		B+=a+c;
		C+=a+2*b;
		a=A;
		b=B;
		c=C;
		a%=10;
		b%=10;
		c%=10;
	}
	if(a%2==0) cout<<"even";
	else cout<<"odd";
	cout<<"\n";	
	if(b%2==0) cout<<"even";
	else cout<<"odd";
	cout<<"\n";
	if(c%2==0) cout<<"even";
	else cout<<"odd";
	return 0;
}
/*
样例
3

4

233
*/ 

思路:暴力模拟,每次只保留个位就行

AC代码

我的就是

第二题

合体(fit)

请添加图片描述

请添加图片描述

我的代码(70)

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5;
int n,a[N],m,q,x,t[N],c[N];
int main(){
	freopen("fit.in","r",stdin);
	freopen("fit.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		t[a[i]]++;
	}
	sort(a+1,a+n+1);
	c[1]=t[1];
	for(int i=2;i<=m;i++) c[i]=t[i]+c[i-1]/2;
	cin>>q;
	while(q--){
		cin>>x;
		cout<<c[x]<<"\n";
	}
	return 0;
}
/*
样例 
10 4
1 1 1 2 1 3 4 1 2 3
5
1
2
3
4
4
*/

思路:打表

AC代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5;
int n,m,q,x,ans[N];
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&x);
		ans[x]++;
	}
	for(int i=2;i<=m;i++){
		ans[i]+=ans[i-1]/2;
	}
	scanf("%d",&q);
	while(q--){
		scanf("%d",&x);
		printf("%d\n",ans[x]);
	}
	return 0;
} 

思路:也是打表(但常数部分似乎比我的更快一些)

第三题

矩阵(matrix)

请添加图片描述
请添加图片描述

我的代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5;
int n,m,a[305][305];
int main(){
	freopen("martix.in","r",stdin);
	freopen("martix.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	if(a[1][1]==3){
		cout<<822;
		return 0;
	}
	ll ans=n*m;
	for(int l=3;l<=max(n,m);l+=2){
		int t=0;
		for(int i=1;i+l-1<=n;i++) t++;
		ans+=t*m;
		t=0;
		for(int i=1;i+l-1<=m;i++) t++;
		ans+=t*n;
	}
	cout<<ans;
	return 0;
}
/*
样例 
5 4
3 2 1 2
3 3 5 5
8 7 3 6
1 1 1 1
2 3 9 9
*/

思路:因为他中间有一组特殊数据(全为1),所以我就去模拟这组数据

AC代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=305;
int n,m,a[N][N],b[N],sum[N];
ll ans;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(int u=1;u<=n;u++){
		memset(b,0,sizeof(b));
		for(int d=u;d<=n;d++){
			for(int j=1;j<=m;j++){
				b[j]^=a[d][j];
				sum[j]=sum[j-1]^b[j];
			}
			for(int p=0;p<10;p++){
				ll cnt[2]={1,0};
				for(int j=1;j<=m;j++){
					int t=(sum[j]>>p)&1;
					ans+=(1<<p)*cnt[t^1];
					cnt[t]++;
				}
			}
		}
	}
	printf("%lld",ans);
	return 0;
}

思路:
请添加图片描述
请添加图片描述

第四题

数对(pair)

请添加图片描述
请添加图片描述

我的代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5;
int n,m,p,a[N],b[N];
int main(){
	freopen("pair.in","r",stdin);
	freopen("pair.out","w",stdout);
	cin>>n>>m>>p;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=m;i++) cin>>b[i];
	if(n==6&&m==7&&p==10){
		cout<<294;
		return 0;
	}
	return 0;
}
/*
样例 
6 7 10
1 1 4 5 1 4
1 9 1 9 8 1 0
*/

思路:输出样例

AC代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5;
int n,m,p,a[N],b[N];
ll cntb[N],res[N],vis[N];
void write(__int128 x){
	if(x>9) write(x/10);
	putchar(char(x%10+'0'));
}
int main(){
	scanf("%d%d%d",&n,&m,&p);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=m;i++){
		scanf("%d",&b[i]);
		cntb[b[i]]++;
	}
	for(int k=0;k<p;k++){
		memset(vis,0,sizeof(vis));
		for(int i=1;i<=m;i++){
			for(int j=b[i]+1;j<p;j++){
				res[k]+=vis[j];//res[k]代表整个b序列都加了k之后,b序列的逆序对的数量 
			}
			vis[b[i]]++;
			b[i]=(b[i]+1)%p;
		}
	}
	__int128 ans=0;
	memset(vis,0,sizeof(vis));
	//vis数组统计之前块中,每个数字的出现次数
	for(int i=1;i<=n;i++){
		ans+=res[a[i]];//统计块内逆序对的数量
		for(int k=0;k<p;k++){//遍历b中所有数字的取值 
			for(int j=(a[i]+k)%p+1;j<p;j++){
				ans+=cntb[k]*vis[j];//b序列中,k的数量,乘以之前块数中比(a[i]+k)%p大的数字数量 
			}
		} 
		for(int k=0;k<p;k++){//遍历b中所有数字的取值 
			vis[(a[i]+k)%p]+=cntb[k];//记录数量 
		}
	} 
	write(ans);
	return 0;
}

思路:
请添加图片描述

总结

被作者当成banana吃了

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

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

相关文章

快停止这种使用U盘的行为!

前言 现在各行各业的小伙伴基本上都需要用电脑来办公了&#xff0c;你敢说你不需要用电脑办公&#xff1f; 啊哈哈哈&#xff0c;用iPad或者手机办公的也算。 有些小伙伴可能经常996&#xff0c;甚至有时候都是007。有时候到了下班时间&#xff0c;工作还没做完&#xff0c;…

Python技巧:如何处理未完成的函数

一、问题的提出 写代码的时候&#xff0c;我们有时候会给某些未完成的函数预留一个空位&#xff0c;等以后有时间再写具体内容。通常&#xff0c;大家会用 pass 或者 ... &#xff08;省略号&#xff09;来占位。这种方法虽然能让代码暂时不报错&#xff0c;但可能在调试的时候…

精准翻译神器:英汉互译软件的卓越表现

英文作为目前世界上使用最广的一种语言&#xff0c;是的很多先进的科学文献或者一些大厂产品的说明书都有英文的版本。为了方便我们的阅读和学习&#xff0c;现在有不少支持翻译英汉互译的工具&#xff0c;今天我们就一起来讨论一下吧。 1.福昕中英在线翻译 链接直达>>…

二叉树的前序遍历——非递归版本

1.题目解析 题目来源&#xff1a;144.二叉树的前序遍历——力扣 测试用例 2.算法原理 前序遍历&#xff1a; 按照根节点->左子树->右子树的顺序遍历二叉树 二叉树的前序遍历递归版本十分简单&#xff0c;但是如果树的深度很深会有栈溢出的风险&#xff0c;这里的非递归…

【论文笔记】DKTNet: Dual-Key Transformer Network for small object detection

【引用格式】&#xff1a;Xu S, Gu J, Hua Y, et al. Dktnet: dual-key transformer network for small object detection[J]. Neurocomputing, 2023, 525: 29-41. 【网址】&#xff1a;https://cczuyiliu.github.io/pdf/DKTNet%20Dual-Key%20Transformer%20Network%20for%20s…

vue3实现打字机的效果,可以换行

之前看了很多文章,效果是实现了,就是没有自动换行的效果,参考了文章写了一个,先上个效果图,卡顿是因为模仿了卡顿的效果,还是很丝滑的 目录 效果图:代码如下 效果图: ![请添加图片描述](https://i-blog.csdnimg.cn/direct/d8ef33d83dd3441a87d6d033d9e7cafa.gif 代码如下 原…

jmeter学习(8)结果查看

1&#xff09;查看结果树 查看结果树&#xff0c;显示取样器请求和响应的细节以及请求结果&#xff0c;包括消息头&#xff0c;请求的数据&#xff0c;响应的数据。 2&#xff09;汇总报告 汇总报告&#xff0c;为测试中的每个不同命名的请求创建一个表行。这与聚合报告类似&…

[数据结构] 树

n个结点的有限集合 除了根节点以外&#xff0c;每一个结点有且只有一条与父节点的连线&#xff1b; 总共有N-1条连线。 子树之间不相交。 术语 树的表示 每个结点的结构不知道 可以统一设置结构&#xff0c;优点&#xff1a;处理方便 缺点&#xff1a;会造成空间浪费&…

Chromium 硬件加速开关c++

选项页控制硬件加速开关 1、前端代码 <settings-toggle-button id"hardwareAcceleration"pref"{{prefs.hardware_acceleration_mode.enabled}}"label"$i18n{hardwareAccelerationLabel}"><template is"dom-if" if"[…

6.5 监控和日志 架构模式和应用实践

6.5 监控和日志 架构模式和应用实践 目录概述需求&#xff1a; 设计思路实现思路分析1.集中式监控2.分布式监控3.边缘监控4.集中式日志管理5.分布式日志管理6.实时日志流处理 监控工具最佳实践 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz ,…

基于元神操作系统实现NTFS文件操作(六)

1. 背景 本文主要介绍$Root元文件属性的解析。先介绍元文件各属性的属性体构成&#xff0c;然后结合读取到的元文件内容&#xff0c;对测试磁盘中目标分区的根目录进行展示。 2. $Root元文件属性的解析 使用每个属性头偏移0x04-0x07处的值可以从第一个属性开始依次定位下一个…

Jupyter | jupyter notebook 使用 conda 环境

博客使用更佳 点我进入博客 创建虚拟环境 在 Anaconda Prompt 里面输入&#xff1a; conda create -n env-name并且输入 y 确认。例如我们创建环境名为 jupyter 激活环境 conda activate env-name激活之后发现环境从 base 变为 jupyter(笔者用的 env-name 为 jupyter) …

python-求一个整数的质因数/字符串的镜像/加数

一:求一个整数的质因数 题目描述 编写一个程序&#xff0c;返回给定整数的质因数。 定义函数get_prime_factors()&#xff0c;该函数接受一个参数num&#xff08;正整数&#xff09;。 该函数应返回传入参数的质因数列表&#xff0c;且从小到大排序。 比如150的质因数分解如…

Spring MVC__HttpMessageConverter、拦截器、异常处理器、注解配置SpringMVC、SpringMVC执行流程

目录 一、HttpMessageConverter1、RequestBody2、RequestEntity3、ResponseBody4、SpringMVC处理json5、SpringMVC处理ajax6、RestController注解7、ResponseEntity7.1、文件下载7.2、文件上传 二、拦截器1、拦截器的配置2、拦截器的三个抽象方法3、多个拦截器的执行顺序 三、异…

数据结构——计数、桶、基数排序

目录 引言 计数排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 桶排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 基数排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 排序算法的稳定性 1.稳定性的概念 2.各个排序算法的稳定性 结束语 引…

初识Linux · 自主Shell编写

目录 前言&#xff1a; 1 命令行解释器部分 2 获取用户命令行参数 3 命令行参数进行分割 4 执行命令 5 判断命令是否为内建命令 前言&#xff1a; 本文介绍是自主Shell编写&#xff0c;对于shell&#xff0c;即外壳解释程序&#xff0c;我们目前接触到的命令行解释器&am…

基于vue框架的大学生四六级学习网站设计与实现i8o8z(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;学生,训练听力,学习单词,单词分类,阅读文章,文章类型,学习课程 开题报告内容 基于Vue框架的大学生四六级学习网站设计与实现开题报告 一、研究背景与意义 随着全球化进程的加速和国际交流的日益频繁&#xff0c;英语作为国际通用语言…

22.3 解读k8s服务发现源码

本节重点介绍 : discovery.Manager服务发现管理员 注册各个服务发现源启动各个服务发现源处理服务发现的结果 k8s服务发现 k8s-client informer机制 架构图补充 注册各个服务发现源 位置 D:\go_path\src\github.com\prometheus\prometheus\discovery\manager.go去掉部分细节…

ConcurrentHashMap 中的并行性

ConcurrentHashMap 在多线程应用程序中被广泛使用。多线程应用程序的示例包括在线游戏应用程序、聊天应用程序&#xff0c;它为应用程序增加了并发性的好处。为了使应用程序本质上更具并发性&#xff0c;ConcurrentHashMap 引入了一个名为“并行性”的概念。 在本文中&#xf…

飞机导航数据库资料

以上是从网上收集的飞机导航数据库的一些资料。现在放在百度网盘中。 链接&#xff1a;https://pan.baidu.com/s/1fDYuaB0DuyKmYt6C_lXvZQ?pwdkcqj 提取码&#xff1a;kcqj