csp-j模拟二补题报告

news2024/10/2 17:02:29

目录传送门

  • 前言
  • 第一题
    • 下棋(chess)
    • 我的代码(AC了)
    • AC代码
  • 第二题
    • 汪洋(BigWater)
    • 我的代码(0)
    • AC代码
  • 第三题
    • 删数(delnum)
    • 我的代码(0)
    • AC代码
  • 第四题
    • 平分糖果(candy)
    • 我的代码(15)
    • AC代码
  • 总结

前言

    今天考的不如昨天(今天115,昨天150)

    (“关于二进制中一的个数的研究与规律”这篇文章正在写)

第一题

下棋(chess)

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

我的代码(AC了)

#include<bits/stdc++.h>
#define ll long long
#define xi man[i].one
#define yi man[i].two
#define zi man[i].three
#define idi man[i].id
#define ansi man[i].ans
using namespace std;
const int N=1e5+5;
struct banana{
	ll one,two,three;
	ll id;
	ll ans;
}man[N];
ll n;
bool cmp(banana I,banana like){
	if(I.ans==like.ans) return I.id<like.id;
	return I.ans>like.ans;
}
int main(){
	freopen("chess.in","r",stdin);
	freopen("chess.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",&xi,&yi,&zi);
		idi=i;
		yi+=xi/3;
		xi%=3;
		zi+=yi/3;
		yi%=3;
		ansi=zi*18+yi*3+xi;
	}
	sort(man+1,man+n+1,cmp);
	for(int i=1;i<=n;i++) cout<<idi<<" ";
	return 0;
} 
/*
样例
9
2 3 1
1 3 3
0 0 4
1 4 3
4 1 4
1 4 1
0 1 4
0 1 4
2 3 2

2
1 2 0
1 2 2
*/

思路:把所有能变成高星英雄的低星英雄,再算阵容强度

AC代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
int n;
struct node{
	int x,y,z,idx;
	ll val;
	void set(){
		y+=z/3;z%=3;
		x+=y/3;y%=3;
		val=18ll*x+3*y+z;
	}
}a[N];
bool cmp(node a,node b){
	if(a.val==b.val) return a.idx<b.idx;
	return a.val>b.val;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",&a[i].z,&a[i].y,&a[i].x);
		a[i].idx=i;a[i].set();
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++) printf("%d ",a[i].idx);
	return 0;
}
 

思路:和我思路一样

第二题

汪洋(BigWater)

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

我的代码(0)

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e3+5;
int main(){
	freopen("BigWater.in","r",stdin);
	freopen("BigWater.out","w",stdout);
	int n;
	int a[N][N];
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	if(a[1][2]==5&&a[2][1]==10) cout<<142;
	else if(a[1][2]==-3&&a[2][1]==3) cout<<129;
	else cout<<100;
	return 0;
}
/*
样例
5
0 -3 8 -2 3
3 -1 -3 -10 -6
9 -9 -6 10 -7
-2 -4 -9 6 -10
-1 8 -7 10 -5

5
0 5 2 2 -7
10 7 -5 7 1
4 -1 -5 4 -6
3 -2 3 4 0
-6 -1 -8 9 -6
*/

思路:输出样例(不是样例输出100),但数据里没有样例

AC代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1005;
int n,a[N][N],r[N][N],c[N][N];
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			scanf("%d",&a[i][j]);
			r[i][j]=r[i][j-1]+a[i][j];
			c[i][j]=c[i-1][j]+a[i][j];
		}
	}
	int ans=-0x3f3f3f3f;
	for(int i=2;i<=n;i++){
		for(int j=2;j<=n;j++){
			ans=max(ans,r[1][j-1]+c[i-1][j]+r[i][j]+c[i-1][1]);
		}
	}
	printf("%d",ans+100);
	return 0;
}

思路:
请添加图片描述

第三题

删数(delnum)

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

我的代码(0)

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5;
ll n,q,head=1;
ll a[N],b[N],c[N];
int main(){
	freopen("delnum.in","r",stdin);
	freopen("delnum.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	if(a[1]==1){
		int flag=1;
		for(int i=2;i<=n;i++){
			if(a[i]!=a[i-1]+1){
				flag=0;
				break;
			}
		}
		if(flag){
			cin>>q;
			while(q--){
				int x;
				cin>>x;
				if(x%n!=0) cout<<x/n+1;
				else cout<<x/n;
				cout<<"\n";
			}
			return 0;
		}
	}
	int flag=1;
	if(a[1]==1&&a[2]==3&&a[3]==9) flag=0;
	cin>>q;
	for(int i=1;i<N;i++) b[i]=i;
	while(q--){
		int x;
		cin>>x;
		if(flag){
			if(c[x]!=0) cout<<c[x];
			int l=0;
			int f=0;
			while(1){
				l++;
				for(int i=1;i<=n;i++){
					int t=0;
					for(int j=1;j<=x;j++){
						if(b[j]==0) continue;
						t++;
						if(t==a[i]){
							if(j==x) f=1,b[x]=0,c[x]=l;
							else b[j]=0,c[j]=l;
							break;
						}
					}
					if(f) break;
				}
				if(f) break;
			}
			cout<<c[x];
		}
	}
	if(!flag) cout<<"27\n107\n388\n159\n45\n";
	return 0;
}
/*
样例
5
1 2 3 4 5
1
100

5
1 3 9 14 20
5
114
514
1919
810
233
*/

思路:先保证能输出样例(虽然数据里没有),然后如果a1=1,a2=2,…,an=n,直接输出x/n,剩下的就直接暴力了(说好的暴力出奇迹呢!一分没拿!)

AC代码

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

思路:
请添加图片描述

第四题

平分糖果(candy)

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

我的代码(15)

#include<bits/stdc++.h>
#define ll long long
#define yes printf("Collection #%d:\nCan be divided.\n\n",t)
#define no printf("Collection #%d:\nCan't be divided.\n\n",t)
using namespace std;
const int N=1e5+5;
ll n,a[10],b[N],cnt,sum,m;
int main(){
	freopen("candy.in","r",stdin);
	freopen("candy.out","w",stdout);
	int t=0;
	while(1){
		t++;
		int flag=1,no_0=0,no_0i[10];
		for(int i=1;i<=6;i++){
			cin>>a[i];
			if(a[i]!=0){
				flag=0;
				no_0i[++no_0]=i;
			}
		}
		if(flag) break;
		flag=1;
		int s=1;
		for(int i=2;i<=6;i++){
			if(a[i]==a[1]) s++;
			else{
				if(a[i]!=0){
					flag=0;
					break;
				}
			}
		}
		if(flag&&s==6){
			no;
			continue;
		}
		if(no_0==1){
			if(a[no_0i[no_0]]%2!=0){
				no;
				continue;
			}
			else{
				yes;
				continue;
			}
		}
		else{
			for(int i=1;i<=6;i++){
				if(a[i]==0) continue;
				int x=a[i];
				while(x--) b[++cnt]=i,sum+=i;
			}
			if(sum%2!=0){
				no;
				continue;
			}
			m=sum/2;
			int apple=0;
			string banana="";
			for(int i=1;i<=cnt;i++) banana+="0";
			while(1){
				if(banana[cnt-1]=='0') banana[cnt-1]='1';
				else{
					int x=cnt-1;
					while(banana[x]=='1'&&x>=0){
						banana[x]='0';
						x--;
					}
					banana[x]='1';
				}
				int _0=0,_1=0;
				for(int i=0;i<cnt;i++){
					if(banana[i]=='1') _1+=b[i+1];
					else _0+=b[i+1];
				}
				if(_0>m){
					break;
				}
				if(_0==_1){
					cout<<"banana";
					apple=1;
					break;
				}
			}
			if(apple) yes;
			else no;
		}
	}
	return 0;
}
/*
样例
1 0 1 2 0 0
1 0 0 0 1 1
0 0 0 0 0 0
*/

思路:用二进制枚举(刚才突然发现有一个调试时的代码忘删了,那个cout<<“banana”,但似乎对分数没有改变)

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N=1.2e5+5;
int mark,a[10];
bool f[N];
int main(){
	while(~scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6])){
		int m=a[1]+a[2]*2+a[3]*3+a[4]*4+a[5]*5+a[6]*6;
		if(!m) break;
		for(int i=1;i<=m;i++) f[i]=0;
		printf("Collection #%d:\n",++mark);
		f[0]=1;
		for(int i=1;i<=6;i++){
			for(int k=1;k<=a[i];k<<=1){
				for(int j=m;j>=i*k;j--){
					f[j]=f[j]|f[j-i*k];
				}
				a[i]-=k;
			}
			if(a[i]){
				for(int j=m;j>=i*a[i];j--){
					f[j]=f[j]|f[j-i*a[i]];
				}
			}
		}
		if(!(m&1)&&f[m>>1]) printf("Can be divided.\n");
		else printf("Can't be divided.\n");
		printf("\n");
	}
}

思路:
请添加图片描述

总结

今天一点没闲着,不像昨天,剩下的时间写了一堆banana(可以看看我这篇文章:banana)
不过今天的数据里竟然没有样例,不然分还能再高。

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

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

相关文章

秋招突击——9/13——携程提前准备和实际面经——专程飞过去线下,结果一面挂(难受)

文章目录 引言面经收集面经整理一1. ArrayList和LinkedList2. 线程安全的列表和链表有么&#xff1f;如果没有怎么实现&#xff1f;3. threadlocal4. synchronized锁升级过程及原理5. ReentrantLock原理&#xff0c;以及和synchronized的对比6. 线程池工作原理7. redis常用数据…

数据流和数据流处理技术

一数据流 首先明确数据流概念&#xff1a;数据流是连续不断生成的、快速变化的无界数据序列 数据流类型&#xff1a; 数据流大致可以分为四种类型 1.连续型数据流&#xff1a;不断地产生数据&#xff0c;数据稳定速度输入系统。 2.突发型数据流&#xff1a;在某特定时间或…

【吊打面试官系列-MySQL面试题】Mysql如何存储日期?

大家好&#xff0c;我是锋哥。今天分享关于【Mysql如何存储日期&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Mysql如何存储日期&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Datatime:以 YYYY-MM-DD HH:MM:SS 格式存储时期时间&a…

基于Spring Boot+Unipp的中考体测训练小程序(协同过滤算法、图形化分析)【原创】

&#x1f388;系统亮点&#xff1a;协同过滤算法、图形化分析&#xff1b; 一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk17 前端&#xff1a; 技术&#xff1a;框…

C++中stack和queue的模拟实现

目录 1.容器适配器 1.1什么是适配器 1.2STL标准库中stack和queue的底层结构 1.3deque的简单介绍 1.3.1deque的原理介绍 1.3.2deque的优点和缺陷 1.3.3deque和vector进行排序的性能对比 1.4为什么选择deque作为stack和queue的底层默认容器 2.stack的介绍和模拟…

c++-类和对象-点和圆关系

注意&#xff1a; 1.在一个类中可以让另一个类作为成员 2.可以把一个类拆成过个头文件&#xff0c;在.cpp中写成员函数实现&#xff0c;在头文件中留下类的声明和属性 实践 结果

我谈陷波滤波器

《数字图像处理&#xff08;电子信息前沿技术丛书&#xff09;》PP180~182勘误。 陷波滤波器在信号处理中就是带阻滤波器&#xff0c;信号处理中陷波滤波器不是这样定义的&#xff0c;二维比一维有这样的特殊性&#xff0c;我想这是Gonzalez创造的概念&#xff0c;在学术中借用…

初识算法 · 双指针(2)

目录 前言&#xff1a; 盛最多水的容器 题目解析&#xff1a; 算法原理&#xff1a; 算法编写&#xff1a; 有效三角形的个数 题目解析&#xff1a; 算法原理&#xff1a; 算法编写&#xff1a; 前言&#xff1a; 本文介绍两个题目&#xff0c;盛最多水的容器和有效三…

Excel下拉菜单制作及选项修改

Excel下拉菜单 1、下拉菜单制作2、下拉菜单修改 下拉框&#xff08;选项菜单&#xff09;是十分常见的功能。Excel支持下拉框制作&#xff0c;通过预设选项进行菜单选择&#xff0c;可以避免手动输入错误和重复工作&#xff0c;提升数据输入的准确性和效率 1、下拉菜单制作 步…

留存率的定义与SQL实现

1.什么是留存率 留存率是指在特定时间段内&#xff0c;仍然继续使用某项产品或服务的用户占用户总数的百分比。 通常&#xff0c;留存率会以日&#xff0c;周&#xff0c;或月为单位进行统计和分析。 2.SQL留存率常见问题 1.计算新用户登录的日期的次日留存率以及3日留存率 …

【鸿蒙学习】深入了解UIAbility组件

文章目录 组件概述生命周期启动模式基本用法 在鸿蒙操作系统&#xff08;HarmonyOS&#xff09;的开发过程中&#xff0c;UIAbility组件是构建应用界面的关键。本文将带您了解UIAbility组件的概述、生命周期、启动模式以及基本用法&#xff0c;并通过代码示例帮助您更好地掌握这…

微信互助学习平台|互助学习平台系统|基于java的微信互助学习平台设计与实现(源码+数据库+文档)

微信互助学习平台 目录 基于java的微信互助学习平台设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师…

论文阅读- On the Feasibility of Fully AI-automated Vishing Attacks

https://arxiv.org/pdf/2409.13793 目录 摘要 INTRODUCTION II. GOALS AND THREAT MODEL III. VIKING A. Architecture B. Interaction with the LLM C. Audio processing D. Call processing E. Implementation IV. EVALUATION METHODOLOGY A. Experiment design …

NeRF三维重建—神经辐射场

NeRF—神经辐射场 本文介绍了三维重建相关技术&#xff0c;特别是神经辐射场(NeRF)的进步&#xff0c;它通过深度学习实现逼真的三维场景重建。NeRF在计算机图形学、自动驾驶和元宇宙等领域展现出广阔的应用前景&#xff0c;通过改进传统方法&#xff0c;提供更高质量的渲染和沉…

聊聊国内首台重大技术装备(1)

9.9日&#xff0c;工信部发布了《首台&#xff08;套&#xff09;重大技术装备推广应用指导目录&#xff08;2024年版&#xff09;》&#xff0c;在集成电路领域&#xff0c;公布了如下首台机台设备&#xff0c;这确实是一个十分振奋人心的消息&#xff0c;说明我国在半导体制造…

LSTM模型实现光伏发电功率的预测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

构造函数继承

构造函数继承 主要通过在子类的构造函数中调用父类的构造函数&#xff0c;绑定子类实例的 this&#xff0c;从而实现子类对父类属性的继承。这种方法避免了父类和子类共享原型链上的属性&#xff0c;并且可以传递参数给父类的构造函数。 构造函数继承的实现步骤&#xff1a; …

Windows远程Kylin系统-VNC

Windows远程Kylin系统-VNC 一. 配置 yum源 二. 清理yum缓存 三. 安装VNC并配置 nkvers yum install tigervnc tigervnc-server -ycp /lib/systemd/system/vncserver.service /etc/systemd/system/vncserver:1.service 说明&#xff1a;vncserver:1.service中的&#xff1a;1表…

Windows 环境下安装 Anaconda 并适配到 PowerShell 的保姆级教程

Anaconda Anaconda 是一个流行的 Python 数据科学和机器学习平台&#xff0c;它包括了 Conda 包管理器、Python 以及数百个用于科学计算的库和工具。Anaconda 旨在简化包和环境管理&#xff0c;使得安装、更新和管理软件包变得容易&#xff0c;同时也能够轻松创建和切换不同的P…

案例-百度热榜页面实现

文章目录 效果展示要求内容注意代码内容 效果展示 要求内容 整个盒子大小&#xff1a;536*536标题字体柜20px、加粗&#xff0c;纯黑&#xff0c;换一换字体大小20px、颜色0055db、刷新图标是本地图片内容字体18px、上下边距15px、下边框实心2px颜色f3f3f3这个需要根据页面显示…