第五届武汉纺织大学ACM程序设计竞赛 个人题解(待补完)

news2024/11/23 19:36:43

前言:

  上周周日教练要求打的一场重现赛,时长五个小时,题目难度还行,除了部分题目前我还写不出来之外,大部分题都写完或补完了,这边给出比赛链接和我的代码(有些是队友的)和题解。

正文:

链接:第五届武汉纺织大学ACM程序设计竞赛(同步赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)

A  广告位招租中:

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int a[N];
int b[N];

int prime[N];
int cnt;
int n, m;
void solve(int x) {
	for (int i = 1; i * i <= x; i++) {
		if (x % i == 0) {
			b[i]++;
			int u = x / i;
			if (u != i) {
				b[u]++;
			}
		}
	}
}

int ans2, ans1;

int main() {
	cin >> n >> m;
	int y = 0;
	for (int i = 1; i <= n; i++) {
		scanf("%d", &a[i]);
		y = max(y, a[i]);
		solve(a[i]);

	}
	if (m == 1) {
		cout << n << " " << 1 << endl;
		return 0;
	}
	int t = 0;
	for (int i = m; i <= y; i++)
		t = max(t, b[i]);

	if (t)
		for (int i = m; i <= y; i++) {
			if (b[i] == t) {
				ans2 = i;
				bool flag = 0;
				for (int j = i * 2; j <= y; j += i) {
					if (b[j] == t) {
						ans2 = j;
						flag = 1;
						break;
					}
				}
				if (!flag) {
					ans2 = i;
					break;
				}
			}
		}
	cout << t << " " << ans2 << endl;
}

和队友讨论出来的做法,对输入的每一个数,我们算出他的因子(大于m)并对这些因子个数计数,之后重小因子枚举到最后,如果有更大的因子满足最多的数我们就更新答案,如果没有大于m的因子就输出00。

B MEX of MEXes:

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;
int a[N];
int b[N];

int main() {
	int n;
	cin >> n;
	if (n == 1) {
		cout << 1;
		return 0;
	}
	if (n == 2) {
		cout << 4;
		return 0;
	}
	int l, r;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
		b[a[i]] = i;
		if (a[i] == 1)
			l = i;
		if (a[i] == 2)
			r = i;
	}
	if (l > r)
		swap(l, r);
	//cout << l << " " << r << endl;
	for (int i = 3; i <= n; i++) {
		int loca = b[i];
		//cout << i << " " << loca << endl;
		if (loca > l && loca < r) {
			cout << i;
			return 0;
		} else {
			l = min(l, loca);
			r = max(r, loca);
			continue;
		}
	}
    cout<<n+2;

}

  首先如果n=1,那么数组b为{2},那么最后结果为1。如果n>1,那么数组b一定包含1。很自然的,我们想数组b是否包含2,是否包含3,是否包含4......对于是否包含k来说,我们只需要找到数组a的一个非空连续子数组包含1到k-1且不包含k,就说明数组b包含k。那么我们找到包含1到k-1的长度最小的子数组,然后判断里面是否包含k即可。整个过程可以使用双指针实现,维护一个区间,区间初始左右端点为1的位置,再找到2的位置并更新区间左右端点,判断区间内是否包含3,再找3的位置......若此时考虑x的位置,那么区间更新后如果区间包含了x+1,那么就说明数组b中不可能存在x+1,最后答案即为x+1。特殊地,如果考虑了1到n都符合后,那么此时数组b {1,2,3...n+1},最后答案为n+2。

C 战斗时回复:

#include<bits/stdc++.h>
using namespace std;
int main(){
	double T,h,t,n;
	cin>>T>>h>>t>>n;
	if(h/T>=n/t)cout<<"kirito";
	else cout<<"hangeki";
	return 0;
}

水题。

D 小太阳的帕鲁世界1:

#include<bits/stdc++.h>
using namespace std;
string s[2005];
bool book[2005][2005];
int ans[2005][2005];
int n,m;
void dfs(int x,int y,int z){
	if(y>=m||y<0||x>=n||x<0)return;
	ans[x][y]=z;
	if(s[x][y]=='L')dfs(x,y+1,z+1);
    if(s[x][y]=='R')dfs(x,y-1,z+1);   
    if(s[x][y]=='U')dfs(x+1,y,z+1);
    if(s[x][y]=='D')dfs(x-1,y,z+1);
}
int main(){
	cin>>n>>m;
	memset(ans,-1,sizeof(ans));
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	dfs(n-1,m-1,0);
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cout<<ans[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

简单bfs,队友用了bfs也能过,代码见下

#include <bits/stdc++.h>
using namespace std;

const int N = 2010;
char maze[N][N];
int dis[N][N];
bool vis[N][N];
int n, m;

int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
typedef pair<int, int> PII;
map<char, PII> ma;

void bfs() {


	queue<PII> q;
	q.push({n, m});
	vis[n][m] = 1;
	dis[n][m] = 0;
	while (q.size()) {
		auto t = q.front();
		q.pop();
		int x = t.first, y = t.second;

		char instruct = maze[x][y];
		auto tt = ma[instruct];
		int dx = tt.first + x, dy = tt.second + y;
		//	cout << dx << " " << dy << endl;
		dis[dx][dy] = dis[x][y] + 1;
		vis[dx][dy] = 1;
		if (dx >= 1 && dx <= n && dy >= 1 && dy <= m)
			q.push({dx, dy});
	}
	return;

}


int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> maze[i][j];
		}
	}

	ma['U'] = {1, 0};
	ma['D'] = {-1, 0};
	ma['R'] = {0, -1};
	ma['L'] = {0, 1};
	bfs();
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (vis[i][j])
				cout << dis[i][j] << " ";
			else
				cout << "-1 ";
		}
		cout << endl;
	}

}

E 小太阳的帕鲁世界2(待补):

F 又掉分了:

#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
	int x,n;
	cin>>x>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]>x)x+=(a[i]-x)/2;
	}
	cout<<x;
	return 0;
}

贪心,能上分就打,否者不打。

G Birusu的公园(待补):

H 被诅咒的宝藏:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
typedef long long ll;
ll a[N],b[N];ll n,s;
bool check(int x){
	ll cnt=0;
	for(int i=1;i<=n;i++){
		b[i]=a[i]+i*x;
	}
	sort(b+1,b+n+1);
	for(int i=1;i<=x;i++){
		cnt+=b[i];
	}
	if(cnt>s)return 1;
	return 0;
}
int main(){
	ll ans=0;
	cin>>n>>s;
	for(int i=1;i<=n;i++)cin>>a[i];
	ll l=1,r=n,mid;
	while(l<r){
		mid=l+r+1>>1;
		if(check(mid))r=mid-1;
		else l=mid;
	}
	for(int i=1;i<=n;i++){
		b[i]=a[i]+i*l;
	}
	sort(b+1,b+n+1);
	for(int i=1;i<=l;i++){
		ans+=b[i];
	}
	cout<<r<<" "<<ans<<endl;  
    return 0;
}

先用二分找出最多能拿几个物品,这边要注意随着所拿物品数量不同每个物品的代价都会不一样,所以每次判断都要对相应的代价排序,之后在根据数量算出最小重量。

I 决定命运的博弈:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	ll n;
	cin>>n;
	if(n==1)cout<<"Dbqjubmjtn";
	else cout<<"Tpdjbmjtn";
	return 0;
}

我一开始想的是只有n=1时d能赢,刚刚发现题目条件n>=2 ,所以t是必胜的(只要先手拿不完,后手就能一下拿完)。

J 52Hz的minmax区间(easy)(待补):

K 52Hz的minmax区间(hard)(待补):

这两道题都没啥想法。

L Kaiou的笑话:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int el[N],er[N],al[N],ar[N];
int main(){
	int m;cin>>m;
	string s;int l=-1,r=-1;
	int ans=10000000;
	cin>>s;
	for(int i=0;i<m;i++){
		if(s[i]=='t')l=i;
		if(s[i]=='e'){
			el[i]=l;	
		}
	}
	for(int i=m-1;i>=0;i--){
		if(s[i]=='n')r=i;
		if(s[i]=='e'){
			er[i]=r;	
		}
	}
	l=-1,r=-1;
	for(int i=0;i<m;i++){
		if(s[i]=='h')l=i;
		if(s[i]=='a'){
			al[i]=l;	
		}
	}
	for(int i=m-1;i>=0;i--){
		if(s[i]=='n')r=i;
		if(s[i]=='a'){
			ar[i]=r;	
		}
	}
	for(int i=0;i<m;i++){
		if(s[i]=='e'&&el[i]!=-1&&er[i]!=-1){
			ans=min(ans,er[i]-el[i]-2);
		}
		if(s[i]=='a'&&al[i]!=-1&&ar[i]!=-1){
			ans=min(ans,ar[i]-al[i]-2);
		}
	}
	if(ans==10000000)cout<<-1;
	else cout<<ans;
	return 0;
}

记入下中间那个字母左右最近的那个相应字母的位置最后求出最小距离就为答案。

M 大生:

#include<bits/stdc++.h>
using namespace std;
int main(){
    cout<<"我不知道";
        return 0;
}

好像输出什么都可以。

后记:

  这个比赛比了一整个下午,刚比完饭还没吃就被拉去上课了,整个人困得很,不过这场比赛的题确实适合我这种算法比赛的新人,待补的题在之后一定补完(什么时候就不知道了)

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

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

相关文章

工作中有哪些超级好用的C/C++程序库?

视频和讲义发布在这里&#xff1a; B站链接

Spring框架温习

Spring Spring是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 Spring 特点&#xff1a; 轻量级、控制反转、面向切面、容器、框架集合 Spring 核心组件&#xff1a; Spring 常用模块&…

Leecode热题100---二分查找--4:寻找两个正序数组的中位数

题目&#xff1a; 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 解法1、暴力解法&#xff08;归并&#xff09; 思路&#xff1a; 合并 nums1&#xff0c;nums2 为第三个数组 排序第三个数…

亚马逊VC账号产品热销,在美国哪些智能小家电产品最好卖?

亚马逊VC账号产品在美国市场的热销&#xff0c;反映了消费者对于特定智能小家电产品的强烈需求。智能小家电产品因其实用性、便捷性和科技感&#xff0c;近年来在美国市场备受追捧。 以下是一些在亚马逊VC账号上热销的智能小家电产品&#xff1a; 智能扫地机器人 这类产品在美…

【传知代码】自监督高效图像去噪(论文复现)

前言&#xff1a;在数字化时代&#xff0c;图像已成为我们生活、工作和学习的重要组成部分。然而&#xff0c;随着图像获取方式的多样化&#xff0c;图像质量问题也逐渐凸显出来。噪声&#xff0c;作为影响图像质量的关键因素之一&#xff0c;不仅会降低图像的视觉效果&#xf…

STM32读写内部FLASH读取芯片id

文章目录 读写内部Flash接线程序编写测试效果补充 读取芯片id代码编写 读写内部Flash 接线 程序编写 首先使用ThisFlash.c来写入flash的基本操作&#xff0c;写入、读取、擦除&#xff0c;然后使用Store.c配合数组来进行主存与flash的交互 ThisFlash.c #include "stm32…

Spring Cloud Gateway 集成 Nacos、Knife4j

目录 1、gateway网关配置1.1 pom 配置2.2 配置文件1.3 yaml 配置 2、其他服务配置2.1 pom 配置2.2 配置文件2.3 yaml 配置 3、界面访问4、其他 官方文档地址&#xff1a;Spring Cloud Gateway集成Knife4j 官方完整源码&#xff1a;https://gitee.com/xiaoym/swagger-bootstrap-…

Redis篇 哈希表在redis中的命令

哈希命令 一.哈希表的基本认识二. 哈希表在redis中的命令1.hset,hget2.hdel3.hkeys,hvals4.hexists5.hgetall6.hmget7.hlen8.hincrby和hincrbyfloat 一.哈希表的基本认识 在JAVA数据结构中&#xff0c;我们就已经接触到了哈希表&#xff0c; 在当时&#xff0c;我们主要用到的哈…

第16章-超声波跟随功能 基于STM32的三路超声波自动跟随小车 毕业设计 课程设计

第16章-超声波跟随功能 无PID跟随功能 //超声波跟随if(HC_SR04_Read() > 25){motorForward();//前进HAL_Delay(100);}if(HC_SR04_Read() < 20){motorBackward();//后退HAL_Delay(100);}PID跟随功能 在pid.c中定义一组PID参数 tPid pidFollow; //定距离跟随PIDpidFol…

CISP难度将加大?还考不考啊...

最新消息&#xff1a;CISP即将调整知识体系大纲&#xff0c;更新题库&#xff0c;后续考试难度加大。 最近几年&#xff0c;CISP改版地比较频繁&#xff0c;难度也在不断上升&#xff0c;因此各位小伙伴有考CISP想法的尽早考。 随着《网络安全法》、《网络空间安全战略》、《…

牛客NC324 下一个更大的数(三)【中等 双指针 Java/Go/PHP/C++】参考lintcode 52 · 下一个排列

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/475da0d4e37a481bacf9a09b5a059199 思路 第一步&#xff1a;获取数字上每一个数&#xff0c;组成数组arr 第二步&#xff1a;利用“下一个排列” 问题解题方法来继续作答&#xff0c;步骤&#xff1a;利用lintc…

oracle12.1 rac 静默dbca教程(百分之百创建成功)

修改原响应文件 [oracleprimary1 database]$ cd response/ [oracleprimary1 response]$ ls dbca.rsp db_install.rsp netca.rsp [oracleprimary1 response]$ vi dbca.rsp 默认即可 数据库类型内存占比按需选择 运行静默创建实例脚本 [oracleprimary1 response]$ dbca -silen…

虚拟机改IP地址

使用场景&#xff1a;当你从另一台电脑复制一个VMware虚拟机过来&#xff0c;就是遇到一个问题&#xff0c;虚拟的IP地址不一样&#xff08;比如&#xff0c;一个是192.168.1.3&#xff0c;另一个是192.168.2.4&#xff0c;由于‘1’和‘2’不同&#xff0c;不是同一网段&#…

探索自动发邮件的奥秘:从配置到实现

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;邮件自动化的魅力 二、配置环境&#xff1a;选择适合的SMTP服务器 示…

【C++】模拟实现string类

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 目录 一.了解项目功能 二.逐步实现项目功能模块及其逻辑详解 &#x1f38f;构建成员变量 &#x1f38f;实现string类默认成员函数 &#x1f4cc;构造函数 &#x1f4cc;析构函数…

React热更新异常

问题现象 本地一个react项目&#xff0c;当修改任意内容保存时本地编译会失败报错 解决方案 将dependencies中的react-scripts移至devDependencies中

Kafka原生API使用Java代码-生产者-分区策略-默认分区策略轮询分区策略

文章目录 1、代码演示1.1、pom.xml1.2、KafkaProducerPartitioningStrategy.java1.2.1、ProducerConfig.LINGER_MS_CONFIG取 0 值得情况&#xff0c;不轮询1.2.2、ProducerConfig.LINGER_MS_CONFIG取 0 值得情况&#xff0c;轮询1.2.3、ProducerConfig.LINGER_MS_CONFIG取 1000…

英语学习笔记29——Come in, Amy!

Come in, Amy! 进来&#xff0c;艾米&#xff01; shut v. 关严 区别&#xff1a;shut the door 把门关紧 口语&#xff1a;Shut up! 闭嘴&#xff01;    态度强硬&#xff0c;不礼貌 例句&#xff1a;请不要把门关严。    Don’t shut the door, please. bedroom n. …

Android Studio无法改变Button背景颜色解决办法

大家好&#xff0c;我是咕噜铁蛋&#xff01;今天我来和大家探讨一个在Android开发中常见但可能让初学者感到困惑的问题——如何在Android Studio中改变Button的背景颜色。这个问题看似简单&#xff0c;但实际操作中可能会遇到一些意想不到的挑战。接下来&#xff0c;我将从多个…

论文笔记:Vision GNN: An Image is Worth Graph of Nodes

neurips 2022 首次将图神经网络用于视觉任务&#xff0c;同时能取得很好的效果 1 方法 2 架构 在计算机视觉领域&#xff0c;常用的 transformer 通常是 isotropic 的架构&#xff08;如 ViT&#xff09;&#xff0c;而 CNN 更喜欢使用 pyramid 架构&#xff08;如 ResNet&am…