第五届武汉纺织大学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;
}

好像输出什么都可以。

后记:

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

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

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

相关文章

这些项目,我当初但凡参与一个,现在也不至于还是个程序员

10年前&#xff0c;我刚开始干开发不久&#xff0c;我觉得这真是一个有前景的职业&#xff0c;我觉得我的未来会无限广阔&#xff0c;我觉得再过几年&#xff0c;我一定工资不菲。于是我开始像很多大佬说的那样&#xff0c;开始制定职业规划&#xff0c;并且坚决执行。但过去这…

Midjourney设计服装5步实操分享!(实操干货系列)

2k字讲清楚如何在有限素材的基础上&#xff0c;用MJ随机生成设计服装&#xff0c;附本人实操步骤图~ 灵感来源&#xff1a;既然Midjourney&#xff08;MJ&#xff09;能够参考图片进行绘图&#xff0c;那么&#xff0c;提供一些素材&#xff0c;借由MJ的随机成图来寻找一些服装…

香橙派Kunpeng Pro评测

有幸受邀评测香橙派与华为鲲鹏在2024年5月12刚刚联合发布的新品香橙派Kunpeng Pro。 本文将从软硬件、AI算法测试等角度简单分享一下博主拿到板子以来感受与所做的评测。 一、硬件 香橙派Kunpeng Pro实物图 处理器方面&#xff0c;香橙派Kunpeng Pro采用了4核64位armv8架构处…

生产者延迟消息和重试机制

messageDelayLevel1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 延迟消息级别public PutMessageResult putMessage(final MessageExtBrokerInner msg) {//事务消息处理if (tranType MessageSysFlag.TRANSACTION_NOT_TYPE|| tranType MessageSysFlag.TRANSACT…

Android manifest清单文件意外权限来源和合并规则

问题背景 当自写APP发现无缘无故多申请了多个权限,其中一个就是:android.permission.WAKE_LOCK. 一想就知道如果并非自己在APP main中引入的,那就是依赖的库清单文件导入进来的. 定位问题 定位手段 1.manifest-merger-buildVariant-report.txt 根据其内容可知, WAKE_LOCK 权…

揭秘!编写高质量代码的关键:码农必知的黄金法则!

文章目录 一、保持代码的简洁与清晰二、遵循良好的命名规范三、注重代码的可读性四、利用抽象与封装五、遵循SOLID原则六、关注代码性能七、确保代码安全性《码农修行&#xff1a;编写优雅代码的32条法则》编辑推荐内容简介目录前言/序言 在编程的世界里&#xff0c;每一位码农…

源达投顾的客户服务质量怎么样?

在金融服务行业中&#xff0c;客户服务质量是衡量一个公司成功与否的关键因素之一。源达投顾作为一家专业的投资顾问机构&#xff0c;其客户服务质量一直备受关注。那么&#xff0c;源达投顾的客户服务质量怎么样&#xff1f; 一、客户满意度调查方法 为了全面、客观地了解源…

通讯录恢复怎么办?保护珍贵联系信息的2个必备技能!

手机通讯录扮演着重要的角色&#xff0c;它不仅仅是一个简单的联系方式列表&#xff0c;更是我们与亲朋好友、同事、业务伙伴等之间关系的见证。万一不慎丢失或误删通讯录&#xff0c;学会通讯录恢复的技能变得非常重要。本文将为你介绍几种保护珍贵联系信息的必备技能&#xf…

长文总结 | Python基础知识点,建议收藏

测试基础-Python篇 基础① 变量名命名规则 - 遵循PEP8原则 普通变量&#xff1a;max_value 全局变量&#xff1a;MAX_VALUE 内部变量&#xff1a;_local_var 和关键字重名&#xff1a;class_ 函数名&#xff1a;bar_function 类名&#xff1a;FooClass 布尔类型的变量名…

yolox-何为混合精度计算AMP?

何为AMP&#xff1f; 全称&#xff1a;Automatic mixed precision自动混合精度。 功能&#xff1a;在神经网络推理过程中&#xff0c;实现针对不同层采用不同的数据精度进行计算&#xff0c;从而实现节省显存和加速训练的目的。 此处提到的不同数据精度包括&#xff1a;32位浮…

适合学生党的蓝牙耳机有哪些?盘点四大性价比蓝牙耳机品牌

对于追求高品质音乐体验而又预算有限的学生党来说&#xff0c;一款性价比高的蓝牙耳机无疑是最佳选择&#xff0c;在众多品牌和型号中&#xff0c;如何挑选到既适合自己需求又价格亲民的蓝牙耳机&#xff0c;确实是一个值得思考的问题&#xff0c;作为一个蓝牙耳机大户&#xf…

AI 绘图要如何入门?有哪些好用的软件推荐?(附工具+教程+变现模式)

1.Ai绘画如何入门 不需要把Ai绘画想的很复杂 抛去复杂的应用 使用现成简单的工具 只需要学会提示词 描述你想要的画面即可 提示词 不需要太复杂&#xff0c;也不能太简单&#xff0c;太简单依赖于ai的基本样式&#xff0c;关键是要抓住你想要的核心描述 AI不太擅长理解人类的…

如何批量结构化分汇多工作表sheet?

目录 一、如遇合并表格&#xff0c;注意结构化二、确认主键&#xff0c;合并所有文件数据三、sheet2同理四、案例总结 如果遇到这样情形&#xff0c;多文件夹多文件&#xff0c;多工作表的分汇场景&#xff1b;可以参考以下方法解决。 一、如遇合并表格&#xff0c;注意结构…

脑机接口:是现代医学的外挂,更是瘫痪病人的豪赌

5 月 17 日&#xff0c;马斯克公开表示&#xff0c;继今年年初首次成功将大脑芯片植入患者大脑后&#xff0c;Neuralink 正在寻找第二位受试者接受这项手术。 5 月 20 日&#xff0c;美国食品药品监督管理局 (FDA) 批准了马斯克的 Neuralink 公司为第二位患者植入脑芯片&#…

若依新增页面,在左侧显示菜单栏的页面,可点击

选择指定的某个目录下 菜单名称&#xff0c;路由地址&#xff0c;组件路径这几个是必填的&#xff0c;其他的暂时就不用管了。 菜单名称&#xff1a;就是显示到左侧目录中的名称。 路由地址&#xff1a;自定义&#xff0c;一般写页面名称就可以。 组件路径&#xff1a;根据前端…

PDF打印技巧:如何跳过不需要的页面?如何关闭打印权限?

作为打工人&#xff0c;经常需要打印各种文档&#xff0c;比如PDF文件。今天分享一下PDF文件的两个打印技巧&#xff0c;如果你还不知道&#xff0c;就一起来看看吧&#xff01; 技巧1&#xff1a;打印PDF如何跳过不需要的页面 有时候&#xff0c;一个PDF文件有很多页&#xf…

基于GIS地理信息技术的智慧巡检平台建设方案(Word原件)

传统的巡检采取人工记录的方式&#xff0c;该工作模式在生产中存在很大弊端&#xff0c;可能造成巡检不到位、操作失误、观察不仔细、历史问题难以追溯等现象&#xff0c;使得巡检数据不准确&#xff0c;设备故障隐患得不到及时发现和处理。因此建立一套完善的巡检管理系统是企…

DiffIR论文阅读笔记

ICCV2023的一篇用diffusion模型做Image Restoration的论文&#xff0c;一作是清华的教授&#xff0c;还在NIPS2023上一作发表了Hierarchical Integration Diffusion Model for Realistic Image Deblurring&#xff0c;作者里甚至有Luc Van Gool大佬。模型分三个部分&#xff0c…

ChatGPT实现法语口语练习APP

使用ChatGPT实现一个法语口语练习APP可以提供一个强大的工具&#xff0c;帮助学习者提高他们的口语能力。以下是一个详细的实现流程&#xff0c;包括需求分析、技术选型、开发、测试和部署。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…

VUE3 学习笔记(7):如何简单的理解VUE 组件,并手把手实现一个嵌套组件

基本概念 VUE 最大的特点就是组件化&#xff0c;理解组件化可视为积木模块&#xff0c;其特点就是增加了复用性。把一个个.vue文件就是组件&#xff08;又作SFC&#xff09;&#xff0c;组件的组合就是一个功能页。 组成部分说明 <!--内容控制&#xff08;必要&#xff09;…