【牛客训练记录】2025年浙江中医药大学程序设计竞赛(同步赛)

news/2025/3/10 12:51:10/文章来源:https://www.cnblogs.com/longxingx/p/18762440

训练情况

赛后反思

C题犯蠢了,手玩几下就能猜出来的结论,结果自己想复杂了,以为是二分,D题又复现传智杯二分爆long long了,又没注意到,E题BFS搜索没记忆化MLE了

D题

传智杯二分爆long long重现,怒开__int128发现还是爆,只能边加边特判了,我们对于这题显然能观察到二分单调性,直接二分答案,判断最后利润是否 \(\ge m\)

点击查看代码
#include <bits/stdc++.h>
#define int __int128
#define endl '\n'using namespace std;const int N = 1e6 + 3;int n,m;
int a[N];inline int read(){int s = 0; char c = getchar();while(!isdigit(c)) c = getchar();while(isdigit(c)) s = (s << 1) + (s << 3) + (c ^ 48),c = getchar();return s;
}void print(int x){if(x>9) print(x/10);putchar(x%10+48);
}bool pd(int x){int ans = 0;int now = x;for(int i = 2;i<=n;i++){if(a[i] > a[i-1]){int gx = (now/a[i-1]) * (a[i] - a[i-1]);ans += gx;if(ans >= m) return true;now += gx;}}return ans >= m;
}void solve(){n = read(); m = read();for(int i = 1;i<=n;i++) a[i] = read();int l = 0,r = 1e18+1,m;while(l<r){m = l + r >> 1;if(pd(m)) r = m;else l = m + 1;}if(l == 1e18+1) cout<<"-1"<<endl;else print(l),puts("");
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

E题

BFS模板题,提前维护相同数字的位置,入队操作加入左右两边和相同的数字,记录到达终点的步数即可,这题需要记忆化一下,记录当前位置的最小步数,遇到记录过的就跳过,不然会重复入队 MLE。

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define pii pair<int,int>
#define endl '\n'using namespace std;const int N = 1e6 + 3;int n;
int a[N];
vector<int> v[N];
vector<int> d(N);void bfs(int st){queue<pii> q;q.push({st,0});while(q.size()){int x = q.front().first;int step = q.front().second;q.pop();if(d[x]) continue;d[x] = step;if(x == n){cout<<step<<endl;exit(0);}if(x==1) q.push({x+1,step+1});else q.push({x-1,step+1}),q.push({x+1,step+1});for(auto i:v[a[x]]){if(i == x) continue;q.push({i,step+1});}}
}void solve(){cin>>n;for(int i = 1;i<=n;i++) cin>>a[i],v[a[i]].emplace_back(i);bfs(1);
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

K题

签到题,直接记录连续的天数,累加答案即可

点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'using namespace std;void solve(){int ans = 0;int n; cin>>n;int now = 0;for(int i = 1;i<=n;i++){int x; cin>>x;if(x == 1) now++;else now = 0;ans+=now;}cout<<ans<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

L题

签到题加强版,我们直接维护映射记录对应人的连续天数,累加答案即可,还需要额外开一个变量记录谁当天没签过到,遇到隔天就连续天数全部清零,这题有个坑点,有人会一天内连续签到,注意特判一下即可

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;map<string,int> ans;
map<string,int> now;
map<string,bool> vis;void solve(){int q; cin>>q;while(q--){int opt; cin>>opt;if(opt == 1){string s; cin>>s;if(vis[s]) continue;now[s]++;vis[s]=1;ans[s] += now[s];} else if(opt == 2){string s; cin>>s;cout<<ans[s]<<endl;} else if(opt == 3){for(auto i:now){if(!vis[i.first]) now[i.first] = 0;}vis.clear();}}
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

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

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

相关文章

unity模型无法播放动画的几种问题

1:代码中参数变量名称与动画控制器变量名称不一致导致 (左侧代码变量名称要与右侧动画控制器中的变量名称一致才能播放动画) 2:播放动画的对象子物体名称改动导致 例如:下方图中修改了玩家的子级对象object的名称,导致无法播放动画应该正确修改为使用对象得远子级object名称 时…

task3.c

include<stdio.h> int main() { char ans1, ans2; printf("每次课前认真预习、课后及时复习了没? (输入y或Y表示有,输入n或N表示没有) : "); ans1 = getchar(); getchar(); printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) : &…

Hadoop集群安装

一.环境准备我使用的是virtualBox虚拟机,没有可以去官网下载 虚拟机镜像是ubuntu server22.04,官网地址[注意]我的主机系统就是linux,如果是windows需要自己下载一些终端连接的工具 二.安装 1.虚拟机准备直接finish,开始配置网卡。简单点说,桥接网络我们用来上网的,其次是h…

task1_2.c

include<stdio.h> int main() { printf(" 0 \n"); printf("\n"); printf("I I\n"); printf(" 0 \n"); printf("\n"); printf("I I\n"); return 0; }

No.44 ES6---Babel转码器(安装有点问题,用到再说)

一、Babel转码器Babel是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在老版本的浏览器执行。 这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持。 1.浏览器支持性查看https://caniuse.com/2.Babel 官网https://babeljs.io/3.转码示例原始…

kubesphere中查看argocd登陆密码

获取argocd密码PASSWORDkubectl get secret argocd-initial-admin-secret -nargocd -o jsonpath="{.data.password}"|base64 -d 登陆: admin/PASSWORD

rockchip sdk使用make menuconfig无法删除选项文字(MobaXterm)

问题:在使用make menuconfig编辑内核配置时,按退格键删除不了相关选项,如下图所示:解决办法: 1. 在全局设置部分,把这里的退格键发送^H取消勾选:2. 在开启一个新会话时,进行同样的设置:

线控转向控制系统SbW

线控转向控制系统是一种将驾驶员对方向盘的操作信号转换为电信号,再传递给转向机,从而控制车轮完成相应的转向动作的技术。经纬恒润推出的线控转向控制系统SbW,分为路感模拟器与转向执行器,皆采用全冗余设计及主从控制方案,同时,按照ISO26262与DIN70065进行功能安全与降级…

uniapp使用scroll-view嵌套时不触发滚动事件

参考链接:微信文档:https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html uniapp文档: https://uniapp.dcloud.net.cn/component/scroll-view.html布局代码:<scroll-view scroll-y class="scroll-box" bindscrolltolower="scro…

OpenCL 调用关系

学习 OpenCL,概念很多,理解不深,所以看示例代码时比较糊涂。 于是,把调用关系简单画了个图:希望能加深理解吧。

SAP SMW0 配置EXCEL 上载模板,供其他tcode 下载模板

本文演示如何在自定义的tcoe 中,可以点击下载保存好的默认excel模板: 1. 打开 SMWO: 筛选 直接点新增 点浏览,找你本机的 excel 模板,进行上载 上载完后, 回到上载程序,点击,就能弹出需要下载的excel模板了

OP51常见问题(自动安装座板)

座板放置歪斜 1.夹爪夹住座板后,上升-->翻转180-->横移-->下降放置。需要准确放入铆钉内。 2.因为座板和夹爪都是金属件,所以旋转和横移过程中可能会发生水平方向的偏移,导致放置时对孔失败。 如果放置失败座板浮起,对光检测到了,上方的大压块会下压一次,尝试将…