洛谷题单--线性表

P3156 【深基15.例1】询问学号

链接 : 【深基15.例1】询问学号 - 洛谷

直接输入,然后输出a[i]即可;

代码 : 

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int main(){int  n, q ; cin >> n >> q;vector<int> a(n+1);for(int i=1;i<=n;i++) cin >> a[i];while(q--){int x ;cin >> x;cout << a[x] << endl;}	return 0;
}

P3613 【深基15.例2】寄包柜

链接 : 【深基15.例2】寄包柜 - 洛谷

这题直接套用stl中的map解决就行了 : 

#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int main(){int n , q ; cin >> n >> q;int op,i,j,k;map<int,map<int,int>> a; // 下标 while(q--){cin >> op;if(op == 1){cin >> i >> j >> k;a[i][j] = k;}else{cin >> i >> j;cout << a[i][j] << endl;}}return 0;
}

或者用数组模拟 : 

#include<cstdio>
#include<map>
using namespace std;
int n,q,p,k;
map<long long,int>b;
long long i,j;
int main()
{scanf("%d%d",&n,&q);while(q--){scanf("%d%d%d",&p,&i,&j);if(p==1){scanf("%d",&k);b[i*1000000+j]=k;}else printf("%d\n",b[i*1000000+j]);}return 0;
}

P1449 后缀表达式

栈的模板题,直接用stack来模拟栈,或者用数组来模拟stack也行;

// 后缀表达式;
// 可以用栈stack模拟
// 也可以用数组模拟 #include<cstring>
#include<iostream>
#include<stack>
#include<algorithm>
using namespace std;
stack<int> st;
char ch = '0';
int s = 0;
int x , y ;
int main(){while(ch != '@'){ch = getchar();if(ch=='+'){x = st.top() ; st.pop();y = st.top() ; st.pop();st.push(x+y) ; }else if(ch == '-'){x = st.top() ; st.pop();y = st.top() ; st.pop();st.push(y - x);}else if(ch == '*'){x = st.top() ; st.pop();y = st.top() ; st.pop();st.push(x * y);}else if(ch == '/'){x = st.top() ; st.pop();y = st.top() ; st.pop();st.push(y / x);}else if(ch == '.') {st.push(s);s = 0;}else{s = s* 10 + (int)(ch-'0');}}cout << st.top() << endl;return 0;
}

P1996 约瑟夫问题

直接暴力模拟就行

// 暴力模拟 
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
int main(){int n , m ; cin >> n >> m;int cnt = 0 , k = 0 , s = 0;vector<int> a(n+1,0);while(cnt != n){k++;if(k>n) k = 1;// 标号 if(a[k]==0){s++;//人数 if(s==m){cnt ++;s = 0;a[k] = 1;cout << k << " ";}	}}	return 0;
}

用队列来操作 : 

用cnt来统计当前报数的人数,如果cnt == m,那么输出队头,且队头出队;

否则将队头放入最后面,以此来实现模拟;

// 用队列模拟 : 
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int main(){int n , m ;  cin >> n >> m ;queue<int> q;for(int i=1;i<=n;i++) q.push(i);int cnt = 1 ; // 表示当前数的人数 while(!q.empty()){if(cnt == m){cout << q.front() << " ";q.pop();cnt = 1;}else{q.push(q.front());q.pop();cnt ++;}}cout << endl;
}

P1160 队列安排

这题是一道静态双链表的好题 : 用结构体数组去模拟双链表 , 结构体中定义l,r分别表示t[i]的左节点 和 右节点 , 用 tag 表示 是否被删除;

具体可以参考luogu第一篇题解,要注意的是,要设置t[0].l=0.t[0].r=0,然后add(1,0,1),这样就可以避免循环而出现死循环的问题;

代码 : 

#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;struct Node{int l,r;int tag;//标记是否要用到 
}t[N]={0};void add(int i,int k,int p){if(p==1) { // i放到k右 t[i].r = t[k].r;t[i].l = k;t[k].r = i;t[t[i].r].l = i;} else { // i放到k左边 t[i].l = t[k].l;t[k].l = i;t[i].r = k;t[t[i].l].r = i;}
}int main(){int n ; cin >> n;t[0].l = 1 ; t[0].r = 0;add(1,0,1);for(int i=2;i<=n;i++){int k,p;cin >> k >> p;// k 表示 k 号同学 // p 表示左右add(i,k,p);	}int m ; cin >> m;int mx = m;while(m--){int x ; cin >> x;t[x].tag = 1; }for(int i=t[0].r;i;i=t[i].r){if(t[i].tag==0){cout << i << " ";}}return 0;
}

P1540 [NOIP2010 提高组] 机器翻译

链接 : [NOIP2010 提高组] 机器翻译 - 洛谷

这个题最先想到的就是用vector来模拟队列,代码如下 : 

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int main(){int  m, n ; cin >> m >> n;vector<int> a;int ans = 0;while(n--){int x ; cin >> x;if(find(a.begin(),a.end(),x) == a.end()){ // 找不到 a.push_back(x);ans ++;}if(a.size() > m)a.erase(a.begin());}cout << ans << endl;return 0;
}

那用队列(queue)怎么写呢?代码如下 :(这里有个小trick : 用一个tag数组记录x是否出现过) 


#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
int tag[1010] = {0};
int main(){int  m, n ; cin >> m >> n;queue<int> a;int ans = 0;while(n--){int x ; cin >> x;if(!tag[x]){ // 找不到 a.push(x);ans ++;tag[x] = true;}if(a.size() > m){int y = a.front();if(x != y) tag[y] = 0;a.pop();}}cout << ans << endl;return 0;
}

P1739 表达式括号匹配

链接 : 表达式括号匹配 - 洛谷

这题应该是栈来模拟,但是用不到,只用设置一个cnt变量,遇到(减一,遇到)加一,如果cnt>0,直接返回false,为true当且仅当最后cnt==0,请看代码 : 

#include<bits/stdc++.h>
using namespace std;
int main(){string s ;cin >> s;int t = 0 ;for(char& c : s){if(c=='(') t--;else if(c==')') t++;if(t>0 ){cout << "NO" << endl;return 0;}}if(t==0) cout << "YES" << endl;else cout << "NO" << endl;
}

 P4387 【深基15.习9】验证栈序列

链接 : 【深基15.习9】验证栈序列 - 洛谷

用栈模拟

代码如下 : 

#include<iostream>
#include<stack>
using namespace std;
stack<int>q;//栈q 
int p,n;//p组数据,n为序列长度 
int main()
{cin>>p;while(p--){cin>>n;int a[n+1],b[n+1],sum=1;//入栈队列a,待检验队列b,计数器sum for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) cin>>b[i]; for(int i=1;i<=n;i++){q.push(a[i]);//入栈 while((q.top())==b[sum]) {q.pop(),sum++;//sum++到b下一个元素 if(q.empty())break;//注意这里,第一次RE就因为当栈空时还用了出栈操作,所以要手动结束循环 }}if(q.empty()) cout<<"Yes"<<endl;//如果栈为空说明出栈序列b正确 else cout<<"No"<<endl;while(!q.empty())q.pop();//清空栈 }return 0; 
}

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

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

相关文章

请手写一个发布-订阅的模式

发布-订阅模式也是经典的设计模式之一&#xff0c;它在前端很多地方都有应用&#xff0c;比如javascript事件池&#xff0c;Vue的$on、$off&#xff0c;nodejs的events模块和socket通信等等都有应用&#xff0c;也是前端面试比较火热的考点之一&#xff0c;接下来给大家详细介绍…

cefsharp119.4.30(cef119.4.3,Chromium119.0.6045.159)版本升级体验支持H264及其他多个H264版本

Cefsharp119.4.30,cef119.4.3,Chromium119.0.6045.159 此更新包括一个高优先级安全更新 This update includes a high priority security update. 说明:此版本119.4.3支持H264视频播放(需要联系我),其他版本。.NETFramework 4.6.2 NuGet Gallery | CefSharp.WinForms 119.…

运动规划Motion-Planning随笔

online verification技术 实时安全校验技术&#xff1a;留一手 首先计算能否通过刹车这种方式得到一条安全轨迹&#xff0c;&#xff08;让速不让道&#xff09;&#xff0c;当刹车有可能碰撞到行人或其他车辆时&#xff0c;则判断变道是否会产生碰撞。如果能变道&#xff0…

深度学习之七(深度信念网络和受限玻尔兹曼机器)

概念 深度信念网络(Deep Belief Networks,DBN)和受限玻尔兹曼机器(Restricted Boltzmann Machines,RBMs)都是无监督学习的模型,通常用于特征学习、降维和生成数据。 受限玻尔兹曼机器(RBM): 结构: RBM 是一个两层神经网络,包括一个可见层和一个隐藏层。这两层之间…

qt按照不同编码格式读取文字(UTF-16LE,UTF-8,UTF-8BOM,UTF-16BE)

enum class EncodingFormat : int {ANSI 0,//GBKUTF16LE,UTF16BE,UTF8,UTF8BOM, }; EncodingFormat VideoPlayer::FileCharacterEncoding(const QString &fileName) {//假定默认编码utf8EncodingFormat code EncodingFormat::UTF8;QFile file(fileName);if (file.open(QI…

「 系统设计 」 为什么要做架构分层?

「 系统设计 」 为什么要做架构分层&#xff1f; 参考&鸣谢 3.设计模式之分层思维&#xff1a;为什么要做代码分层架构&#xff1f; 从零开始学架构&#xff08;八&#xff09;分层架构和设计模式 架构模式之分层架构总结 文章目录 「 系统设计 」 为什么要做架构分层&…

解决 IDEA下VUE项目 @符号无法识别的问题

根目录新建jsconfig.json {"compilerOptions": {"baseUrl": "./","paths": {"/*": ["src/*"]}},"exclude": ["node_modules","dist"] }

IT支持团队的绩效指标和最佳实践

一名员工在远程时因笔记本问题寻求IT支持&#xff0c;尽管他们多次尝试排除故障&#xff0c;但由于缺乏专业知识&#xff0c;最终还是无法访问工作所需的应用程序。这时&#xff0c;他们需要一名专业的 IT 技术人员来指导他们&#xff0c;但他们只能等待有人注意到并回应他们的…

海报设计必备:揭秘5款炙手可热的设计工具

1.即时设计&#xff1a;能实现在线协作的海报设计软件 即时设计作为 2020 年上线的国产设计工具&#xff0c;目前已经有了超百万的注册用户&#xff0c;获得了广大设计师的一致好评。与其他传统海报设计软件相比&#xff0c;即时设计具有这几个优点&#xff1a;一是所有功能都…

Chrome 访问不了项目?10080端口 ERR_UNSAFE_PORT:问题原因 / 解决方案

文章目录 被禁用端口列表解决方法方法一、更换端口 / 使用代理 / 使用域名方法二、对浏览器下手WindowsMac 最近有客户反馈&#xff0c;在chrome浏览器中访问不了项目&#xff0c;其他浏览器都是正常的。 &#xff1f;奇了怪了&#xff0c;难道客户对chrome做了什么操作&#x…

Docker | Docker入门安装

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;Docker系列 ✨特色专栏&#xff1a; My…

探索WebStorm 2023 Mac/win:最强大的JavaScript开发工具

在当今的软件开发领域&#xff0c;JavaScript已经成为了一种不可或缺的编程语言。而在众多的JavaScript开发工具中&#xff0c;WebStorm一直以其强大的功能和友好的用户界面脱颖而出。现在&#xff0c;我们迎来了全新的WebStorm 2023版本&#xff0c;它将带给开发者们更加出色的…

有机纺织品OCS认证

【有机纺织品OCS认证】 有机产品是指按照这种方式生产和加工的产品。产品符合国际或者国家有机产品要求标准&#xff0c;并通过国家认证机构认证的一切农副产品及其加工品&#xff0c;包括粮食、蔬菜、水果、奶制品、禽畜产品、天然纤维等。 有机纺织品认证是指在使用经过国际或…

华中科技大学李松课题组,利用机器学习预测多孔材料水吸附等温线

多孔材料的水吸附等温线是一个非常重要的参数&#xff0c;但这一参数的获得并不容易。这是因为多孔材料种类过多、结构多元&#xff0c;通过实验和计算的方式获得水吸附等温线数据成本过高&#xff0c;耗时过长。 华中科技大学的李松课题组&#xff0c;建立了一个两步机器学习模…

LeetCode [简单] 283. 移动零

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 快慢指针&…

可以在uni-app使用的类vconsole.js插件

兴致勃勃在uni-app项目引入调试工具vconsole.js结果真机调试页面空白 怎么办?! 别着急 paradox老师有方法 替代插件下载地址&#xff1a;直接下载插件并引入HbuilderXuni_modules插件 - 类Vconsole APP端调试工具 - HF调试器 - DCloud 插件市场 下载完成在main.js中引入&…

鸿蒙开发环境搭建-deveco-studio 开发工具安装问题()

从华为官网下载工具deveco-studio, 下载地址 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 这是下载后的工具 1、一步步安装步骤 报错了&#xff0c;一般安装都会报这个错误 看似问题不小&#xff0c;其实&#xff0c; 继续下步&#xff0c;就正常了&#xff0c…

栈回溯--在栈里挑出返回地址

GNU Arm Embedded Toolchain project files : GNU Arm Embedded Toolchain arm-none-eabi-addr2line -e F103_Moduel.axf -a -f 08000350 08001d94 0800260c 汇编中&#xff1a; ;HardFault_Handler ; PROC ; EXPORT HardFault_Handler …

神命令tree的魅力你get到了吗?

背景 日常工作中&#xff0c;有时候为了明确表达自己的意思&#xff0c;往往需要输出对应的目录层级结构&#xff0c;手动一个个输入往往显得不那么高级&#xff0c;效率相对较低&#xff0c;这时候拥有可以一键输出目录结构并且可以快速转化为文本的工具就比较方便&#xff0…

工业I/O模块的功能和应用介绍

在工业领域中&#xff0c;不同的设备常常适配不同的通信协议&#xff0c;不同的协议之间无法直接互通&#xff0c;导致现场实施过程中困难重重。工业io模块可以将各种现场信号转化为数字信号&#xff0c;然后传输给控制器进行处理&#xff0c;实现不同设备之间的互通&#xff0…