第五届武汉纺织大学ACM程序设计竞赛 个人题解(待补完)
前言:
上周周日教练要求打的一场重现赛,时长五个小时,题目难度还行,除了部分题目前我还写不出来之外,大部分题都写完或补完了,这边给出比赛链接和我的代码(有些是队友的)和题解。
正文:
链接:第五届武汉纺织大学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] << " ";elsecout << "-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;
}
好像输出什么都可以。
后记:
这个比赛比了一整个下午,刚比完饭还没吃就被拉去上课了,整个人困得很,不过这场比赛的题确实适合我这种算法比赛的新人,待补的题在之后一定补完(什么时候就不知道了)。
相关文章:
第五届武汉纺织大学ACM程序设计竞赛 个人题解(待补完)
前言: 上周周日教练要求打的一场重现赛,时长五个小时,题目难度还行,除了部分题目前我还写不出来之外,大部分题都写完或补完了,这边给出比赛链接和我的代码(有些是队友的)和题解。 正…...
LeetCode---哈希表
242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 代码示例: //时间复杂度: O(n) //空间复杂度: O(1) c…...
Python知识点13---面向对象的编程
提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python是一个完全面向对象开发的语言,它的一切都以对象的…...
Android Dialog软键盘弹出问题完美解决办法
一、问题: Dialog中有输入框时,显示后无法自动弹起软键盘,原因就不赘述了,自行Google。 一、解决办法: 开启独立线程,线程中使用while循环,循环调用弹起软键盘方法,直至showSoftI…...
【C++】C++入门1.0
鼠鼠最近在学C,那么好,俺来做笔记了! 目录 1.C关键字(C98) 2.命名空间 2.1.命名空间定义 2.2.命名空间的使用 3.C的输入&&输出 4.缺省参数 4.1缺省参数概念 4.2.缺省参数的分类 5.函数重载 5.1.函数重载概念 5.2.C支持函数…...
springboot实现文件上传功能,整合云服务
文章目录 这是springboot案例的,文件上传功能的拆分,本篇将带大家彻底了解文件上传功能,先从本地存储再到云存储,全网最详细版本,保证可以学会,可以了解文件上传功能的开发文件上传功能剖析进行书写一个小的文件上传文件上传的文件三要素首先表单提交的方式要是 post方式,第二个…...
接口interfance的基本使用
一.为什么有接口? 接口:就是一种规则。 二.接口的定义和使用 1.接口用关键字interface来定义 public interface 接口名{} 2.接口不能实例化 3.接口和类之间是实现关系,通过implements关键字表示 4.接口的子类(实现类) 注意1: 接口和类的实现关系…...
Gitlub如何删除分支(删除远程分支+本地分支)
目录 背景 删除方法 总结 背景 想要删除自己在本地创建的并已上传到远程分支中的分支。 删除方法 1)删除远程分支 git push origin --delete brannchname 2)删除本地分支 先切换到其他分支 git checkout otherbranch 删除本地分支 git bran…...
使用RSA算法加密字符串:从基础到实现 - Python
在现代数据安全中,加密算法起着至关重要的作用。特别是非对称加密算法,如RSA(Rivest-Shamir-Adleman),广泛应用于保护敏感信息的传输。本文将详细介绍如何使用RSA算法加密和解密字符串,包括生成密钥对、加密…...
MFC实现守护进程,包括开机自启动、进程单例、进程查询、进程等待、重启进程、关闭进程
在Windows平台上实现一个守护进程,由于与系统有关,所有使用MFC来实现是最合适的,被守护的进程则不限语言。废话不多,直接开整。 目录 1. 开机自启动 2. 进程单例 3. 进程查询 4. 进程等待 5. 重启进程 6. 关闭进程 7、最后…...
Spark SQL数据源 - Parquet文件
当使用Spark SQL处理Parquet文件时,你可以使用spark.read.parquet()方法从文件系统中加载Parquet数据到一个DataFrame中。Parquet是一种列式存储格式,非常适合用于大数据集,因为它提供了高效的压缩和编码方案。 以下是一个简单的例子&#x…...
eNsp——两台电脑通过一根网线直连通信
一、拓扑结构 二、电脑配置 ip和子网掩码,配置两台电脑处于同一网段 三、测试 四、应用 传文件等操作,可以在一台电脑上配置FTP服务器...
杂牌记录仪TS视频流恢复方法
大多数的记录仪都采用了MP4/MOV文件方案,极少数的可能在用AVI文件,极极少数的在用TS文件方案。很多人可能不太解TS文件,这是一种古老的视频文件结构,下边这个案例我们来看下TS视频文件的恢复方法。 故障存储:8G存储卡/fat32文件系…...
十_信号7-信号集
int sigemptyset(sigset_t *set); 清空信号集 int sigfillset(sigset_t *set); 填充满 信号集 int sigaddset(sigset_t *set, int signum); 向信号集中添加信号 int sigdelset(sigset_t *set, int signum); 从型号集中删除信号 int sigismember(const sigset_t *set, int s…...
GPT-4o
微软最新发布的CopilotPC采用了OpenAI最新的GPT-4o技术,新增了多项强大功能。以下是主要的新增功能: 更强大的AI处理能力:CopilotPC采用了专门用于AI处理的特殊芯片,使得电脑能够处理更多的人工智能任务,而无需调用云…...
32位与64位程序下函数调用的异同——计科学习中缺失的内容
前言 今天,通过一个有趣的案例,从反编译的角度看一下C语言中函数参数是如何传递的。 创建main.c文件,将下面实验代码拷贝到main.c文件中。 # main.c #include <stdio.h>int test(int a, int b, int c, int d, int e, int f, int g, …...
Python爬虫实战(实战篇)—16获取【百度热搜】数据—写入Ecel(附完整代码)
文章目录 专栏导读背景结果预览1、爬取页面分析2、通过返回数据发现适合利用lxmlxpath3、继续分析【小说榜、电影榜、电视剧榜、汽车榜、游戏榜】4、完整代码总结 专栏导读 🔥🔥本文已收录于《Python基础篇爬虫》 🉑🉑本专栏专门…...
js切割数组的两种方法slice(),splice()
slice() 返回一个索引和另一个索引之间的数据(不改变原数组),slice(start,end)有两个参数(start必需,end选填),都是索引,返回值不包括end 用法和截取字符串一样 splice() 用来添加或者删除数组的数据,只返回被删除的数据,类型为数组(改变原数组) var heroes["李白&q…...
【计算机毕设】基于SpringBoot的医院管理系统设计与实现 - 源码免费(私信领取)
免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 本项目旨在设计并实现一个基于SpringBoot的医院管理系统,以提高医院管理效率,优化医疗服务流程,提升患者就诊体验…...
导线防碰撞警示灯:高压线路安全保障
导线防碰撞警示灯:高压线路安全保障 在广袤的大地上,高压线路如同血脉般纵横交错,然而,在这看似平静的电力输送背后,却隐藏着不容忽视的安全隐患。特别是在那些输电线路跨越道路、施工等区域的路段,线下超…...
EnergyStarX深度解析:开源开发者如何让Windows 11续航提升40%+
EnergyStarX深度解析:开源开发者如何让Windows 11续航提升40% 【免费下载链接】EnergyStarX 🔋 Improve your Windows 11 devices battery life. A WinUI 3 GUI for https://github.com/imbushuo/EnergyStar. 项目地址: https://gitcode.com/gh_mirror…...
TempleOS 技术解析:从神圣代码到单地址空间设计的独特哲学
1. TempleOS的诞生:当代码遇见信仰 第一次听说TempleOS时,我正泡在技术论坛里闲逛。这个操作系统的名字就透着股神秘感——"神殿操作系统"。点开详细介绍后更震惊了:这居然是一个程序员声称按照"上帝指示"开发的系统&…...
突破音乐加密限制:Unlock Music实现跨平台音频自由解决方案
突破音乐加密限制:Unlock Music实现跨平台音频自由解决方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: …...
react为啥不像vue3一样做diff优化(双端diff和最长递增子序列)
React 不是不能做 LIS / 双端 Diff, 而是 React 的架构目标 不追求 DOM 最优,追求调度最优 所以它故意不做 Vue 那套极致 Diff 优化。 一、先给结论(面试直接说) React 不做极致 Diff 优化,是因为它的架构方向是&…...
RDMA设计64:数据吞吐量性能测试分析
本博文主要交流设计思路,在本博客已给出相关博文约190篇,希望对初学者有用。 注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP 设计。 这里将在基于 XCZU47DR FPGA 核心的开发板上对 RoCE v2 高速传输系统进行数据吞吐量、包吞吐量及传…...
MySQL--Day02
约束 约束是作用于表中字段上的规则,用于限制存储在表中的数据 为了保证数据库中数据的正确性、有效性、完整性非空约束 NOT NULL唯一约束 UNIQUE主键约束 PRIMARY KEY默认约束 DEFAULT检查约束 CHECK CREATE TABLE user(id int primary key auto_increm…...
Linux环境下Oracle 19C补丁安装保姆级教程:从下载到验证的完整流程
Linux环境下Oracle 19C补丁安装全流程实战指南 在数据库运维工作中,补丁管理是确保系统安全稳定运行的关键环节。Oracle 19C作为当前长期支持版本,其补丁安装过程虽然标准化程度高,但实际操作中仍存在不少容易踩坑的细节。本文将基于实战经验…...
InfluxDB新手必看:从安装到基本操作的完整指南(Windows版)
InfluxDB Windows实战指南:从零搭建时序数据库系统 时序数据正成为物联网、DevOps和业务监控领域的核心资产。想象一下,您需要每秒处理数千台设备的温度读数,或者分析应用程序每分钟的性能指标——传统关系型数据库在这种高频写入场景下往往…...
深入解析Triton Inference Server的Backend机制与实战配置
1. Triton Inference Server的Backend机制揭秘 第一次接触Triton Inference Server时,我被它的Backend机制搞得一头雾水。直到在真实项目中踩过几次坑后,才真正理解它的精妙之处。简单来说,Backend就像是一个万能适配器,让Triton能…...
窗口总乱跑?PersistentWindows让你的桌面布局稳如泰山
窗口总乱跑?PersistentWindows让你的桌面布局稳如泰山 【免费下载链接】PersistentWindows fork of http://www.ninjacrab.com/persistent-windows/ with windows 10 update 项目地址: https://gitcode.com/gh_mirrors/pe/PersistentWindows 多显示器用户和远…...
