首页 > 其他分享 >【牛客训练记录】中国地质大学(武汉)2024年新生赛(同步赛)

【牛客训练记录】中国地质大学(武汉)2024年新生赛(同步赛)

时间:2024-11-02 21:41:41浏览次数:4  
标签:return int -- long 2024 牛客 中国地质大学 solve using

训练情况

赛后反思

B题大模拟急到红温了,WA了四发,未考虑到部分细节情况

A题

直接输出 \(x-1\) 即可。

#define int long long

using namespace std;

void solve(){
	int x; cin>>x;
	cout<<x-1;	
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

B题

我们使用队列容器来记录某一天的预约队列,按照题目要求在每一天开始的时候优先把预约的处理掉,然后再按照时间顺序处理每个用户的请求,书的部分我们容易发现它是个栈,我们使用 stack 维护即可,处理好题目中的细节情况即可。

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 3e4 + 3;

int n,m;

vector<int> r[N];
map<int,bool> rvis;
map<int,int> book;
stack<int> s;

void solve(){
	cin>>n>>m;
	for(int i = 1;i<=n;i++) s.push(i);
	int ll = 1,rr = 1;
	while(m--){
		int day,id; string opt;
		cin>>day>>opt>>id;
		rr = day;
		for(int dd = ll;dd<=rr;dd++){
			for(int i = 0;i<r[dd].size();i++){
				rvis[r[dd][i]] = 0;
				if(!s.size()) continue;
				book[r[dd][i]] = s.top();
				s.pop();
			}
		}
		ll = day+1;
		if(opt == "RESERVE"){
			int d; cin>>d;
			if(rvis[id]||book[id]){
				cout<<0<<endl;
				continue;
			}
			rvis[id] = 1;
			r[day+d].push_back(id);
			cout<<1<<endl;
		} else if(opt == "BORROW"){
			if(book[id]||s.size() == 0||rvis[id]){
				cout<<0<<endl;
				continue;
			}
			book[id] = s.top();
			cout<<s.top()<<endl;
			s.pop();
		}
		else if(opt == "RETURN"){
			if(!book[id]){
				cout<<0<<endl;
				continue;
			}
			s.push(book[id]);
			cout<<book[id]<<endl;
			book[id] = 0;
		}
		else if(opt == "QUERY"){
			cout<<book[id]<<endl;
		}
	}
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

C题

我们想要判断答案最后能否为 \(0\),我们易知重复的与操作答案会越来越小,所以我们只需要把数列中所有元素按位与即可,判断最后按位与的答案是否为 0 即可。

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	int n; cin>>n;
	vector<int> a(n + 1);
	for(int i = 1;i<=n;i++) cin>>a[i];
	int res = a[1];
	for(int i = 2;i<=n;i++) res &= a[i];
	if(res == 0) cout<<"Yes"<<endl;
	else cout<<"No"<<endl;	
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

E题

这题我们观察到数据范围较小,我们可以使用深度优先搜索(DFS)枚举出所有的技能释放方案,再直接模拟即可,最后答案取大值。

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 100;

int n,a;
int d[N],c[N],last[N];
int ans = 0;

void pd(){
	// c[1] = 4,c[2] = 1,c[3] = 2,c[4] = 4,c[5] = 3;
	int res = 0;
	int nq = 0;
	int flag = 0;
	for(int i = 1;i<=n;i++){
		if(c[i] == 1){
			if(flag == i) res+=2*d[i];
			else res+=d[i];
		}
		else if(c[i] == 2) nq+=a;
		else if(c[i] == 3){
			if(flag == i) res+=2*nq;
			else res+=nq;
		}
		else if(c[i] == 4) flag = i+1;
		// cout<<res<<endl;
	}
	ans = max(ans,res);
}

void dfs(int x){
	if(x > n){
		// for(int i = 1;i<=n;i++) cout<<c[i]<<" ";
		// cout<<endl;
		pd();
		return;
	}
	for(int i = 1;i<=4;i++){
		if(x-last[i]<=2) continue;
		c[x] = i;
		int tmp = last[i];
		last[i] = x;
		dfs(x + 1);
		c[x] = 0;
		last[i] = tmp;
	}
}

void solve(){
	cin>>n>>a;
	for(int i = 1;i<=n;i++) cin>>d[i];
	for(int i = 1;i<=4;i++) last[i] = -10;
	// pd();
	dfs(1);	
	cout<<ans<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

G题

我们观察题目可知,需要求区间 \([l,r]\) 偶数的个数,数据范围允许遍历,我们直接遍历判断即可。

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	int l,r; cin>>l>>r;	
	int ans = 0;
	for(int i = l;i<=r;i++){
		if(i%2==0) ans++;
	}
	cout<<ans<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

H题

首先题数相同,我们只需要记录字符串的长度的出现次数即可,设同一通过题数的队伍数为 \(n\),显然所有罚时的排列组合为 \(n!\),最后我们乘法原理即可算出最终答案。

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int mod = 1e9 + 7;

int cnt[507];

int jc(int x){
	int ans = 1;
	for(int i = 1;i<=x;i++) ans*=i,ans%=mod;
	return ans%mod;
}

void solve(){
	int n; cin>>n;
	for(int i = 1;i<=n;i++){
		string s; cin>>s;
		cnt[s.size()]++;
	}	
	int ans = 1;
	for(int i = 1;i<=26;i++){
		if(!cnt[i]||cnt[i]==1) continue;
		ans *= jc(cnt[i]);
		ans %= mod;
	}
	cout<<ans<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

L题

我们发现每次操作都会删掉前面两个元素,所以我们要最后留下的数最大,我们必须在删掉之前把它移到最后面去,长度为 \(n\) 需要删 \(\lfloor \frac{n}{2} \rfloor\) 次,每次相邻元素交换可以将某个元素往右移动一位,所以我们只需要求区间 \([\lfloor \frac{n}{2} \rfloor,n]\) 之间最大的元素即可。

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	int n; cin>>n;
	vector<int> a(n + 1);
	for(int i =1 ;i<=n;i++) cin>>a[i];
	int ma = 0;
	int lim = n/2;
	for(int i = n-lim;i<=n;i++) ma = max(ma,a[i]);
	cout<<ma<<endl;	
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

标签:return,int,--,long,2024,牛客,中国地质大学,solve,using
From: https://www.cnblogs.com/longxingx/p/18522520

相关文章

  • 2024-2025-1 20241311 《计算机基础与程序设计》第六周学习总结
    学期(2024-2025-1)学号(20241311)《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第六周作业)这个作业的目标<写上具体......
  • 2024CCPC哈尔滨 L 题解
    思路首先可以发现这个期望其实是假的,我们只需要把所有方案的答案加起来,最后除以\((\frac{n(n-1)}{2})^2\)即可,现在考虑如何统计所有方案的答案。我们先考虑一条路径的方案数:假设存在一条从\(x\)到\(y\)的公共路径,其中\(x\)是\(y\)的祖先,那么小红和小蓝分别选择的路径,......
  • 学期:2024-2025-1 学号:20241303 《计算机基础与程序设计》第六周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第六周作业)这个作业的目标<写上具体方面>自学教材《计算机科学概论(第七版)》第7章,并完成云班课测试,《C语言程......
  • 第五届大数据经济与信息化管理国际学术会议(BDEIM 2024) 2024 5th International Confe
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus大会时间:2024年12月13日-15日大会地点:厦门三、大会介绍由河南大学主办,河南大学郑州校区学术发......
  • 2024/11/2日工作总结
    学习mybatis添加和动态修改点击查看代码<insertid="add"useGeneratedKeys="true"keyProperty="id">insertintotb_brand(brand_name,company_name,ordered,description,status)values(#{brandName},#{companyName},#{o......
  • 第四届检测技术与智能系统国际学术会议(DTIS 2024) The 4th International Conference
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus大会时间:2024年12月13-15日大会地点:中国-长沙三、大会介绍第四届检测技术与智能系统国际学术......
  • 2024-2025-1 20231406《计算机基础与程序设计》第五周助教总结
    2024-2025-120231406《计算机基础与程序设计》第五周助教总结课程答疑由于这两周进行了C语言第一次实验,同学们的问题主要集中在实验上C语言开发环境的搭建集中体现于在ESC上新建目录,编译程序,运行代码等步骤。主要原因是大家对一些指令不太理解,经常出现输入错误的情况。希望......
  • 2024/11/1日工作总结
    学习mybatis查看详情、动态多条件/单条件查询点击查看代码<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><......
  • 2024-2025-1 20241316《计算机基础与程序设计》第六周学习总结
    2024-2025-120241316《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第六周作业这个作业的目标计算机科学概论第7章《C语言程序设计》第5章作业正......
  • 2024秋软工实践 旺仔水饺队 原型设计和UML设计
    作业所属课程https://edu.cnblogs.com/campus/fzu/SE2024作业要求https://edu.cnblogs.com/campus/fzu/SE2024/homework/13297作业的目标实现项目的原型设计与概要设计团队名称旺仔水饺102201140黎曼102201138黄俊瑶102201127罗永辉102201130郑哲浩......