zzu2024三月招新(A-F,I-L)

目录

1.A

 2.B

3.C

4.D

5.E

6.F

7.I

8.J

9.K

10.L


先吐槽一波,比赛的dev超级难用,没有编辑错误提示,不能复制样例,太草了,开局还开错题了,第一个小时没出题,还好后面写了几个签到,最后出了7题.

1.A

这题n比较小,只有1e3,可以n方暴力过,稍大一点就很难了.具体来说就是枚举每个位置作为左端点,然后取两个值作为最大值ma,和最小值cma,往右边遍历加一个值,容易想到有三种情况:

如果大于ma,则更新为现在的最大值,原来的最大值变成次大值,如果处于ma和cma之间,则原来的次大值更新为这个数,原来的最大值不变,如果小于cma,则无任何变化

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;vector<int>a(n+5);for(int i=1;i<=n;i++)cin>>a[i];int ci,zu,ans=0;for(int i=1;i<=n;i++){ci=min(a[i],a[i+1]);zu=max(a[i],a[i+1]);ans+=ci;for(int j=i+2;j<=n;j++){if(a[j]>zu){ci=zu;zu=a[j];ans+=ci;}else if(a[j]<zu&&a[j]>ci){ci=a[j];ans+=ci;}else if(a[j]<ci){ans+=ci;}}}cout<<ans;return 0;
}

 2.B

这题是压轴题,容易想到最短路,而求"最大值的最小值"就很二分答案了,所以每试一个x,就检查这个x是否能跑出一个满足a[i]<=x的最短路且不超时,然后根据二分的套路"最小化"答案就行,但不知道为什么二分这个点集的体力数组会wa,如果有人知道,请教教我!这里也贴一个可以ac的代码

#include <bits/stdc++.h>
using namespace std;
#define int long longconst int N = 1e4 + 10;
int a[N];struct edge {int v, w;
};
vector<edge> e[N];
int n, m, st, ed, h;
int d[N];
int vis[N];
bool check(int x) {for (int i = 0; i <= n; i++) {d[i] = 1e18;vis[i] = 0;}priority_queue<pair<int,int>> q;q.push({0, st});d[st] = 0;if (a[st] > x) return false;while (!q.empty()) {auto now = q.top();q.pop();int u = now.second;if (vis[u]) continue;vis[u] = 1;for (auto t: e[u]) {int v = t.v, w = t.w;if (d[v] > d[u] + w && a[v] <= x) {d[v] = d[u] + w;q.push({-d[v], v});}}}return d[ed] <= h;
}
int bfind()
{int l = 0, r = 1e7 + 5;while (l+1 < r) {int mid = l + r >> 1;if (check(mid)) r = mid;else l = mid;}return r;
}
signed main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m >> st >> ed >> h;for (int i = 1; i <= n; i++) {cin >> a[i];}for (int i = 1; i <= m; i++) {int u, v, w; cin >> u >> v >> w;e[u].push_back({v, w});e[v].push_back({u, w});}int ans=bfind();if (ans == 1e7 + 5) cout << -1 << '\n';else cout << ans << '\n';return 0;
}

3.C

这题就纯模拟题了,就是代码要写的比较长,没啥思维难度

#include<bits/stdc++.h>
using namespace std;
#define int long long
string mp[5005];
map<char,pair<int,int>>mmp;
map<pair<int,int>,pair<int,int>>p;
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>mp[i];mp[i]=' '+mp[i];}int stx,sty;cin>>stx>>sty;int l;cin>>l;string s;cin>>s;//怎么解决传送for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(isalpha(mp[i][j])){if(mmp.find( mp[i][j] )!=mmp.end()){p[mmp[mp[i][j]]]={i,j};p[{i,j}]=mmp[mp[i][j]]; }else{mmp[ mp[i][j] ]={i,j};}}}}int x=stx,y=sty;//cout<<x<<" "<<y<<"\n"; for(int i=0;i<s.size();i++){int fx,fy;if(s[i]=='R'){fx=x,fy=y+1;}else if(s[i]=='L'){fx=x,fy=y-1;}else if(s[i]=='D'){fx=x+1,fy=y;}else if(s[i]=='U'){fx=x-1,fy=y;}if(fx<1||fx>n||fy<1||fy>m||mp[fx][fy]=='#'){//cout<<x<<" "<<y<<"\n";continue;}if(p.find({fx,fy})!=p.end())//发现传送阵 {x=p[{fx,fy}].first;y=p[{fx,fy}].second;} else{x=fx;y=fy;}//cout<<x<<" "<<y<<"\n";}cout<<x<<" "<<y;return 0;
}

4.D

这题是bfs最短路板题,就不多说了

#include<bits/stdc++.h>
using namespace std;
//#define int long long
string mp[5005];
bool vis[5005][5005];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int step[5005][5005];
map<char,pair<int,int>>mmp;
map<pair<int,int>,pair<int,int>>p;
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);memset(step,0x3f,sizeof(step));int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>mp[i];mp[i]=' '+mp[i];}//怎么解决传送for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(isalpha(mp[i][j])){if(mmp.find( mp[i][j] )!=mmp.end()){p[mmp[mp[i][j]]]={i,j};p[{i,j}]=mmp[mp[i][j]]; }else{mmp[ mp[i][j] ]={i,j};}}}}//bfsint x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;queue<pair<int,int>>q;step[x1][y1]=0;q.push({x1,y1});//vis[x1][y1]=true;while(!q.empty()){auto t=q.front();q.pop();int x=t.first,y=t.second;if(vis[x][y])continue;vis[x][y]=1;if(x==x2&&y==y2){break;}for(int i=0;i<4;i++){int fx=x+dx[i],fy=y+dy[i];if(fx<1||fx>n||fy<1||fy>m||mp[fx][fy]=='#'||vis[fx][fy])continue;if(p.find({fx,fy})!=p.end()){int tx=fx;fx=p[{fx,fy}].first;fy=p[{tx,fy}].second;}q.push({fx,fy});step[fx][fy]=min(step[x][y]+1,step[fx][fy]);}}if(step[x2][y2]!=0x3f3f3f3f)cout<<step[x2][y2];elsecout<<-1;return 0;
}

5.E

这题脑筋急转弯,cf原,题面说的很玄乎,容易把人带进沟里,但其实就是最后一把谁赢了,谁就是最终的获胜者,是本场最简单的题

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);string s;cin>>s;cout<<s.back();return 0;
}

6.F

这题找规律吧,其实有点dp的思想,因为大方向只能往右走,所以每个点的方案数只能由它的左边和左上边推出,想到这个就很简单,就是个斐波那契数列.建议用dp求,不要用dfs求,dfs要写记忆化才能不超时!

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e6+5;
const int mod=1e9+7;
int dp[maxn];
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;dp[1]=1,dp[2]=1;for(int i=3;i<=n;i++){dp[i]=(dp[i-1]+dp[i-2])%mod;}cout<<dp[n];return 0;
}

7.I

这题纯签到,就遍历一个二维数组,维护一个最大值和一个行标

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,m;cin>>n>>m;int a[n+5][m+5];for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}int ma=-1,idx;for(int i=1;i<=n;i++){int cnt=0;for(int j=1;j<=m;j++){if(a[i][j]==1)cnt++;}if(cnt>ma){ma=cnt;idx=i;}} cout<<idx<<" "<<ma; return 0;
}

8.J

这题要贪心,因为普通去掉一位数只能降一位,而如果第二位是0,去掉第一位数就可以降大于等于两位,这是最优的,需要特判,如果第二位不是0就只能降一位了,删掉第一个出现的最大的那位数就行,最后还有一个去除前导0的操作.

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;string s;cin>>s;int ma=-1,idx=s.size()-1;string st;if(s[1]=='0'&&n>1){s.erase(s.begin());}else{st.push_back(0);for(int i=0;i<s.size();i++){if(s[i]>=s[st.back()]){st.push_back(i);}else{idx=st.back();break;}}s.erase(s.begin()+idx);}if(s.size()==0){cout<<0;}else{int start=s.size();for(int i=0;i<s.size();i++){if(s[i]!='0'){start=i;break;}}if(start==s.size()){cout<<0;}else{cout<<s.substr(start);}}return 0;
}

9.K

这题容易以为是dp,但又不知道咋弄,其实是个数学题,结论就是进行k次操作一直正着走能走到多少层,如果n刚好比其中某个数少一,就是操作数加1,如果不是,答案就是那个第一个比它大的数的操作数比如走四步可以走到7,那6的答案就是5,5的答案就是4,因为5比七小二,那只要第1次操作走负1就少了2,正好凑成5

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
bool check(int x)
{if(x*(x+1)/2>=n){return true;}elsereturn false;
}
int bfind()
{int l=0,r=1e6;while(l+1<r){int mid=l+r>>1;if(check(mid))r=mid;else l=mid;}return r;
}
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--){cin>>n;int ans=bfind();if(ans*(ans+1)/2==n+1)cout<<(ans+1)<<"\n";elsecout<<ans<<"\n";}return 0;
}

10.L

这题签到,就求个前缀和二分就能搞定

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,q;cin>>n>>q;vector<int>v(n+5),pre(n+5,0);for(int i=1;i<=n;i++){cin>>v[i];pre[i]=pre[i-1]+v[i];}	while(q--){int t;cin>>t;auto it=lower_bound(pre.begin()+1,pre.begin()+1+n,t);if(it!=pre.begin()+1+n){cout<<(it-pre.begin())<<"\n";}else{cout<<-1<<"\n";}}return 0;

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

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

相关文章

代码随想录算法训练营第五十五天 583. 两个字符串的删除操作、 72. 编辑距离、 编辑距离总结篇

代码随想录算法训练营第五十五天 | 583. 两个字符串的删除操作、 72. 编辑距离、 编辑距离总结篇 583. 两个字符串的删除操作 题目链接&#xff1a;https://leetcode.cn/problems/delete-operation-for-two-strings/ class Solution {public int minDistance(String word1, …

计算机基础专升本笔记-汇总笔记(五)office最最最基础背诵一

计算机基础专升本笔记-汇总笔记&#xff08;五&#xff09;office最最最基础背诵一 一、Word文档视图 页面视图阅读版式视图Web版式视图大纲视图&#xff08;只能看见文字&#xff0c;不显示图片&#xff09;草稿视图&#xff08;显示标题正文&#xff0c;水平标尺&#xff0…

02-组件化编程与Vu额 Click脚手架

1.Vue组件化编程(只有1个数字是一级标题) 1.1 模块与组件、模块化与组件化(两个数字组成是二级标题) 1.1.1模块(三个数字是三级标题 依次类推) 理解&#xff1a;向外提供特定功能的 js 程序&#xff0c;一般就是一个 js 文件为什么&#xff1a;js 文件很多很复杂作用&#xf…

Python基础知识:运算符详解

前面我们讲完了Python的基础语法、基本的数据类型以及各种数据类型间的转换。现在可以进行Python的基础知识的逐步详解学习了。下面我们开始讲解Python基础知识&#xff1a;运算符。 在Python中&#xff0c;运算符是用于执行各种操作的符号&#xff0c;它们可以对数字、字符串…

insert append nologging 对Dataguard 影响 DG的同步修复

----Force Logging 对dataguard 没有影响&#xff0c;所以日志大小也没有多大影响 若是该库在有备库的状况下&#xff0c;由于主库的 nologging 插入操做不会生成 redo &#xff0c;因此不会在备库上传输和应用&#xff0c;这会致使备库的数据出现问题。 在一个具备主备关系的…

智能时代的魔法助手:大型语言模型如何让生活和工作焕然一新

大型语言模型的奇妙应用&#xff1a;让生活更便捷、工作更高效 引言 你有没有想过&#xff0c;未来的科技会如何改变我们的生活和工作方式&#xff1f;在这个快速发展的时代&#xff0c;人工智能已经逐渐渗透到我们的日常生活中&#xff0c;其中&#xff0c;大型语言模型作为…

10.网络文件系统( NFS)使用

网络文件系统&#xff08; NFS&#xff09; 使用 NFS 优点&#xff1a; 开发过程中不受开发板空间的限制&#xff0c;直接使用网络文件就像使用本地文件一样&#xff1b;调试过程中避免一一将编译后的应用程序和库文件复制到开发板上。 在开发板中使用网络文件系统可以为开发和…

YOLO语义分割标注文件txt还原到图像中

最近做图像分割任务过程中&#xff0c;使用labelme对图像进行标注&#xff0c;得到的数据文件是json&#xff0c;转换为YOLO训练所需的txt格式后&#xff0c;想对标注文件进行检验&#xff0c;即将txt标注文件还原到原图像中&#xff0c;下面是代码&#xff1a; import cv2 im…

GitHubDesktop

GitHub Desktop官网&#xff1a;https://desktop.github.com/ 汉化补丁官网&#xff1a;https://github.com/robotze/GithubDesktopZhTool 备注&#xff1a; Github Desktop汉化&#xff08;最新版&#xff0c;支持Win、Mac、Linux平台&#xff09; Github Desktop 汉化(最新…

我们的一生都是在挤火车。

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 昨天从燕郊坐火车回石家庄&#xff0c;由于赶上元旦假期&#xff0c;所有高铁票都售罄&#xff0c;一张普通火车票&#xff0c;还是一周前就买才买到的。 从燕郊站&#xff0c;到北京站&#xff0c;然后地铁去北京西站…

vulhub中Weblogic WLS Core Components 反序列化命令执行漏洞复现(CVE-2018-2628)

Oracle 2018年4月补丁中&#xff0c;修复了Weblogic Server WLS Core Components中出现的一个反序列化漏洞&#xff08;CVE-2018-2628&#xff09;&#xff0c;该漏洞通过t3协议触发&#xff0c;可导致未授权的用户在远程服务器执行任意命令。 访问http://your-ip:7001/consol…

说说Java三种启动类路径

在Java中&#xff0c;类路径&#xff08;Classpath&#xff09;是用来告诉Java虚拟机&#xff08;JVM&#xff09;在哪里查找类文件的路径。类路径可以分为三种不同的类型&#xff1a;启动类路径&#xff08;Bootstrap Classpath&#xff09;、扩展类路径&#xff08;Extension…

多模太与交叉注意力应用

要解决的问题 对同一特征点1从不同角度去拍&#xff0c;在我们拿到这些不同视觉的特征后&#xff0c;就可以知道如何从第一个位置到第二个位置&#xff0c;再到第三个位置 对于传统算法 下面很多点检测都是错 loftr当今解决办法 整体流程 具体步骤 卷积提取特征&#xff0c;…

数据库系统概论(超详解!!!) 第三节 关系数据库

1.基本概念 1. 域&#xff08;Domain&#xff09; 域是一组具有相同数据类型的值的集合。 2. 笛卡尔积&#xff08;Cartesian Product&#xff09; 给定一组域D1&#xff0c;D2&#xff0c;…&#xff0c;Dn&#xff0c;允许其中某些域是相同的。 D1&#xff0c;D2…

算法学习之动态规划DP——背包问题

一、01背包问题 &#xff08;一&#xff09;题目 有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。 第i件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值…

牛客周赛 Round 36 解题报告 | 珂学家 | 状态DP + 构造 + 9棵树状数组

前言 整体评价 今天相对容易&#xff0c;E的构造题&#xff0c;感谢出题人极其善意的Case 1, 算是放水了。F题是个很典的结论题&#xff0c;由于存在动态点修改&#xff0c;所以引入树状数组做区间和的快速计算。 A. 小红的数位删除 题型: 签到 s input()print (s[:-3])B. …

状态机高阶讲解-02

261 00:11:22,483 --> 00:11:25,260 或依赖于这个&#xff0c;在这里表达 262 00:11:26,780 --> 00:11:30,000 Moore是说什么&#xff0c;在这里表达 263 00:11:30,280 --> 00:11:30,523 264 00:11:30,523 --> 00:11:33,443 在状态里表达&#xff0c;状态的什么 …

【Python】新手入门:全局变量和局部变量的概念、区别以及用法

【Python】新手入门&#xff1a;全局变量和局部变量的概念、区别以及用法 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448;…

ABC 344

ABC 344 ABC用python写代码会比较快 A 题可以积累简洁的写法&#xff1a; S input() a, b, c S.split(|) print(ac)#include<bits/stdc.h> using namespace std; int main(){string s;cin >> s;int x s.find("|"); // The first occurrence of | w…

002 Object类

一. Object类介绍 java.lang.Object类是所有类的父类&#xff0c;每个类都使用 Object 作为超类。所有对象&#xff08;包括数组&#xff09;都实现这个类的方法。在不明确给出超类的情况下&#xff0c;Java会自动把Object作为要定义类的超类。可以使用类型为Object的变量指向任…