【数据结构】第六周
目录
银行排队——队列
公共钥匙盒——队列
等值子串
KMP模式匹配
大整数相乘
最长公共子串
银行排队——队列【问题描述】 我们大多都有在银行排队的经历,唉,那坑爹的排队啊!现在就让我们来算算我们这些客户平均需要等多久吧。 【输入形式】 有多组测试数据,每组数据开始有两个正整数m(<20)和total(<200),后面有total对整数,对应客户先后到来的时间以及办理业务所需的时间。 【输出形式】 平均等待的时间,保留两位小数。 【样例输入】 2 6 1 3 4 1 5 3 9 2 13 4 13 3 【样例输出】 0.00 【提示】 题目中选择办理的窗口有三个状态,实际上从序号自小到大查找可以最早办理业务的窗口就已经满足上述三个状态了。若客户的到来时间相同,现实中并不知道该用户需要多久处理完任务,所以遵循先来的先服务原则。 【要求】 请用顺序队列或链式队列来完成,否则不得分。 | 20.0 |
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef struct people{int start;int time;
}people;typedef struct Q{int front,rear;people peo[100];
}Q;typedef struct work{int num;int start;int over;
}work;void ini(Q &q,int total)
{q.front=q.rear=0;for(int i=0;i<total;i++){int x,y;cin>>x>>y;q.peo[i].start=x;q.peo[i].time=y;q.rear++;}}people delet(Q &q)
{q.front++;return q.peo[q.front-1];
}
bool cmp(work a,work b)
{if(a.over!=b.over)return a.over<b.over;elsereturn a.num<b.num;
}
int main()
{int m,total; //2 6 1 3 4 1 5 3 9 2 13 4 13 3while(cin>>m>>total) //m=2 total=6{Q q;int sum=0;ini(q,total);work w[m];for(int i=0;i<m;i++)//窗口初始化 0 0 0;1 0 0; 2 0 0 {w[i].num=i;w[i].start=0;w[i].over=0;}for(int i=0;i<total;i++)//开始处理事件 {sort(w,w+m,cmp);people cur=delet(q);//判断cur的开始与窗口 //队首事件的处理,出队表示处理它if(cur.start>=w[0].over) //新事件的开始事件晚于最小窗口的结束时间 {w[0].start=cur.start;w[0].over=cur.start+cur.time;} else{sum+=w[0].over-cur.start;//15-12w[0].start=w[0].over;//15w[0].over=w[0].over+cur.time;//15+3} //更新前或者后排序}float ave=(1.0*sum)/total;//变floatprintf("%.2f\n",ave); }
}
公共钥匙盒——队列【问题描述】 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙。一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙。 每次取钥匙的时候,老师们都会找到自己所需要的钥匙将其取走,而不会移动其他钥匙。每次还钥匙的时候,还钥匙的老师会找到最左边的空的挂钩,将钥匙挂在这个挂钩上。如果有多位老师还钥匙,则他们按钥匙编号从小到大的顺序还。如果同一时刻既有老师还钥匙又有老师取钥匙,则老师们会先将钥匙全还回去再取出。 今天开始的时候钥匙是按编号从小到大的顺序放在钥匙盒里的。有K位老师要上课,给出每位老师所需要的钥匙、开始上课的时间和上课的时长,假设下课时间就是还钥匙时间,请问最终钥匙盒里面钥匙的顺序是怎样的? 【输入形式】 输入的第一行包含两个整数N, K。 接下来K行,每行三个整数w, s, c,分别表示一位老师要使用的钥匙编号、开始上课的时间和上课的时长。可能有多位老师使用同一把钥匙,但是老师使用钥匙的时间不会重叠。 保证输入数据满足输入格式,你不用检查数据合法性。 【输出形式】 输出一行,包含N个整数,相邻整数间用一个空格分隔,依次表示每个挂钩上挂的钥匙编号。 【样例输入】 5 2 4 3 3 2 2 7 【样例输出】 1 4 3 2 5 【样例说明】 第一位老师从时刻3开始使用4号教室的钥匙,使用3单位时间,所以在时刻6还钥匙。第二位老师从时刻2开始使用钥匙,使用7单位时间,所以在时刻9还钥匙。 每个关键时刻后的钥匙状态如下(X表示空): 时刻2后为1X345; 时刻3后为1X3X5; 时刻6后为143X5; 时刻9后为14325。 【样例输入】 5 7 1 1 14 3 3 12 1 15 12 2 7 20 3 18 12 4 21 19 5 30 9 【样例输出】 1 2 3 5 4 【评分标准】 对于30%的评测用例,1 ≤ N, K ≤ 10, 1 ≤ w ≤ N, 1 ≤ s, c ≤ 30; 对于60%的评测用例,1 ≤ N, K ≤ 50,1 ≤ w ≤ N,1 ≤ s ≤ 300,1 ≤ c ≤ 50; 对于所有评测用例,1 ≤ N, K ≤ 1000,1 ≤ w ≤ N,1 ≤ s ≤ 10000,1 ≤ c ≤ 100 | 2 |
#include<bits/stdc++.h>
using namespace std;
typedef struct br{int w;int s;int c;int r;}br;
bool cmp(br a , br b){return a.w < b.w ;}
int main(){int n,k,i,j,z;cin>>n>>k;int a[1010]; for(i=1;i<=n;i++){a[i]=i;}br br[1010];for(i=0;i<k;i++){cin>>br[i].w>>br[i].s>>br[i].c;br[i].r=br[i].s+br[i].c;}sort(br,br+k,cmp); for(j=1;j<=10100;j++){for(i=0;i<k;i++){if(br[i].r==j){for(z=1;z<=n;z++){if(a[z]==0){a[z]=br[i].w;break;}}}}for(i=0;i<k;i++){if(br[i].s==j){for(z=1;z<=n;z++){if(a[z]==br[i].w){a[z]=0;break; }}}}}for(i=1;i<=n;i++)cout<<a[i]<<" ";return 0;
}
等值子串【问题描述】如果字符串的一个子串(其长度大于1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中一个长度最大的等值子串;如果串S 中不存在等值子串,则输出信息no 【输入形式】输入一个字符串,并以!结束 【输出形式】输出第一个出现的最长字符串,如果没有输出no 【样例输入】aabc123abc123cc! 【样例输出】aa 【样例输入】abceebccadddddaaadd! 【样例输出】ddddd |
//3. 等值子串
#include<bits/stdc++.h>
using namespace std;
int main(){string str;cin >> str;int sum = 0, cnt = 0;int temp = 0, a = 1;for(int i = 1; i < str.length(); i++){if(str[i] == str[i - 1]) a++;else {if(a > cnt) {cnt = a;sum = temp;}temp = i;a = 1;}}if(cnt > 1)for(int i = sum; i < sum + cnt; i++)cout << str[i];else cout << "no";
}
| 20.00 | 下载源文件 得分20.00 最后一次提交时间:2023-03-23 16:46:47 共有测试数据:2 平均占用内存:1.307K 平均CPU时间:0.00742S 平均墙钟时间:0.00766S
详细 |
#include<bits/stdc++.h>
using namespace std;
int KMP( string T , string P, int next[] ,int len1 , int len2 )
{int i = 0 , j = 0;while( i < len1 && j < len2 ){if( j == -1){i++;j=0;}else if( P[j] == T[i] ){i++;j++;}else j = next[ j ];}if( j < len2 )return -1;else return i-j;
}
int main()
{int m=0;int next[405] ;string T ;string P ;while( cin >> T >> P ){ int len1 = T.size();int len2 = P.size();next[ 0 ] = -1;int j = 0, k = -1;while( j < len2 -1 ){if( k == -1){next[ j + 1 ] = 0;j++;k=0;}else if( P[ k ] == P[ j ] ){next[ j + 1 ] = k + 1;j++;k++;}else{k = next[ k ];}}m=KMP( T , P, next ,len1 , len2 );if(m != -1)cout << m+1 << endl;elsecout<< "0" <<endl;}}
大整数相乘【问题描述】输出两个不超过100位的大整数的乘积。 要求用串这一章的“块链串”知识实现两个大整数的相乘。比如每一个结点存储5位,12345678983426801则需要4个结点;先实现大整数乘上一个一位数;再实现两个大数相加。 用这样的链式存储形式便于计算:12--->34567--->89834--->26801 或者:26801--->89834--->34567--->12 【输入形式】 两个大数 【输出形式】 相乘的结果 【样例输入】 1234567891011121314151617181920 2019181716151413121110987654321 【样例输出】 2492816912877266687794240983772975935013386905490061131076320 | 20.00 |
#include <bits/stdc++.h>
using namespace std;
int arr[210];
typedef struct Link
{int Maxsize ;int num[5];struct Link*next;}Link;
Link * Init ( Link *p , char s[] )
{Link *head = p;for(int i = 0 ; s[i] != '\0' ; i++){if(i != 0 && i%5 == 0){p -> next = new Link;p = p -> next;}p -> num [i % 5] = s[i] -'0';p -> Maxsize = i % 5 ;}p -> next = NULL;return head;
}
void multiplication(Link *head1 , Link *head2 )
{Link *p,*q;int N = 0, M = 0 , i , j , Max = 0,m;for( p = head1 ; p != NULL ; p = p -> next )//遍历a{if(p != head1)N+=5;for( i = 0; i <= p -> Maxsize ; i++ ){for( q = head2 ; q != NULL ; q = q -> next ){if( q != head2 )M+=5;for( j = 0 ; j <= q -> Maxsize ; j++){m = M + N + i + j + 1;arr[ m ] += q -> num [ j ] * p -> num[ i ];Max = Max>m? Max :m;}}M=0;}}for( int k = Max ; k > 0 ; k-- )//进位问题{if( arr [ k ] >= 10 ){arr [ k - 1 ] += arr[ k ]/10;arr[ k ] %= 10;}}int k=0;if(arr [ k ] == 0)k++;for(; k <= Max ; k++)cout<<arr [ k ];cout<<endl;
}
int main()
{char a[100] , b[100];cin >> a >> b ;Link*head1,*head2;head1 = new Link;head2 = new Link;head1 = Init ( head1 , a );head2 = Init ( head2 , b );multiplication( head1 , head2 );
}
最长公共子串【问题描述】 给定两个字符串,求出它们两个最长的相同子字符串的长度。 最长公共子串(Longest Common Substring)是一个非常经典的面试题目,在实际的程序中也有很高的实用价值。同学们不应该单单只是写出该问题的基本解决代码而已,关键还是享受把算法一步步的优化,让时间和空间复杂度一步步的减少的惊喜。 【输入形式】 两个字符串 【输出形式】 最长的公共子串,若没有则输出“no” 【样例输入】 acbcbcef abcbced 【样例输出】 bcbce 【温馨提示】 问题的关键不在于提交代码并通过测试数据,而是你是否真正掌握了所有求解的算法。 | 1.00 |
#include <bits/stdc++.h>
using namespace std;
int main()
{ int dp;string a , b ,temp , arr;int x , y ;cin >> a >> b ;int len1 = a.size();int len2 = b.size();x = len1 - 1;while(y != len2 ){dp = 0 ;temp = "";for(int i = x, j = y;i <len1 && j < len2 ; i++,j++){if( a[ i ] == b[ j ] )dp++,temp += a[ i ];else{dp = 0 ; temp = "";}if( temp.size() > arr.size())arr = temp;}if(x) x--;else y++;}if( arr.size()) cout<< arr ;else cout<<"no";return 0;
}
相关文章:

【数据结构】第六周
目录 银行排队——队列 公共钥匙盒——队列 等值子串 KMP模式匹配 大整数相乘 最长公共子串 银行排队——队列 【问题描述】 我们大多都有在银行排队的经历,唉,那坑爹的排队啊!现在就让我们来算算我们这些客户平均需要等多久吧。 每天…...

6.4.6拓扑排序
用DAG(有向无环图)表示一个工程。顶点表示活动,有向边<Vi,Vj>表示活动Vi活动必须先与Vj活动进行。 所谓的拓扑排序:找到做事的先后顺序 以上根据拓扑排序的实现: 加入对有回路的图进行拓扑排序&#…...

Ae:常用内置抠像效果
Ae 中的抠像都是基于效果控件来实现的,最终生成动态遮罩来控制画面像素的透明度。 常用的内置抠像效果有:提取、线性颜色键、颜色差值键、内部/外部键等。 黑色或白色背景的抠像 对于白色或黑色背景的素材,可直接尝试图层混合模式。 或者&…...

[ 支付宝支付笔记]
目录 前言: 支付宝支付: 创建AlipayClient对象(注意,这里的appId、私钥、公钥等信息需要根据实际情况进行替换): 构造AlipayTradePagePayRequest对象,设置订单信息等参数: 调用AlipayClient对象的page…...

2023九坤投资暑期实习笔试复盘
5.22号笔试,5.24确认自己笔试挂。想想这也是自己第一次做量化私募基金的笔试,在此复盘一下。情况:北邮本硕。但开始准备暑期准备的比较晚,4月初才开始一边刷题一边投简历,所以手撕算法不太强,但运气和灵感好…...

深度学习的定义和未来发展趋势
深度学习的定义和未来发展趋势 什么是深度学习数学和编程的基础知识深度学习的应用领域深度学习的常见算法和模型训练深度学习模型深度学习的未来 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者&#…...

如何更改 Linux 文件和目录权限?
在Linux系统中,文件和目录权限是安全性和访问控制的关键组成部分。正确设置文件和目录的权限可以确保只有授权的用户能够读取、写入或执行这些文件和目录。 本文将详细介绍如何在Linux系统中更改文件和目录的权限。 1. 文件和目录权限概述 在Linux系统中ÿ…...

Revit楼板问题:楼板连接处以及楼板开洞,一键开洞
在我们做楼梯时,楼梯与楼板处的连接处理不是那么符合实际,会出现一些问题,如下图,这样的连接会导致楼梯配筋时钢筋外露。 我们来学习如何调节楼板与楼板连接处的高度,选中楼梯,点击“编辑楼梯”在所需要更改…...

【AI领域+餐饮】| 论ChatGPT在餐饮行业的应用展望
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…...

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(5月29日论文合集)
文章目录 一、检测相关(12篇)1.1 Linear Object Detection in Document Images using Multiple Object Tracking1.2 Hybrid Energy Based Model in the Feature Space for Out-of-Distribution Detection1.3 BEV-IO: Enhancing Birds-Eye-View 3D Detection with Instance Occu…...

Altium Designer 相同电路多组复制布线
在进行设计开发的时候,总会遇到相同的电路,或者模块,这些电路可以使用相同的布局和走线。我们可以画好其中一部分,然后直接复制,就可以提高效率。下面记录我自己的实际操作过程,有一些地方遇到了问题&#…...

C++线程池介绍和C++代码实现
1、介绍 1.1 线程池应用场景 在进行创建线程任务时,如果需要频繁的创建线程、销毁线程,这样会极大地降低效率,因为创建线程也是需要时间的,一个完整的线程处理运行时间包括:线程的创建时间、线程运作时间、线程的销毁…...

【day 06】vue的组件
组件 组件就是把一个网页分割成独立的小的模块,然后通过把模块进行组合,构建成一个大型的应用 单文件组件 只有一个组件 html css js 都在这个文件内 非单文件组件 可有多个组件 全局注册 !! 得先注册子组件 再生成 vm实例对象 创建子组件 const …...

第3章 Class and Object
构造函数 Guaranteed initialization with the constructor使用构造函数保证初始化 • If a class has a constructor, the compiler automatically calls that constructor at the point an object is created, before client programmers can get their hands on the o…...

卫星定位北斗芯片AT6558一款高性能BDS/GNSS多模卫星导航接收机SOC单芯片
1 芯片简介 AT6558R是一款高性能BDS/GNSS多模卫星导航接收机SOC单芯片,片上集成射频前端, 数字基带处理器,32位的RISCCPU,电源管理功能。 芯片支持多种卫星导航系统,包括中国的北斗卫星导航系统BDS,美国的GPS,俄罗斯 的…...

提升您的 MQTT 云服务:深入探索 BYOC
引言 您是否希望将物联网基础设施提升到更高的水平?为了应对业务的不断扩展,您需要一个强大且安全的消息平台来支持它。 MQTT 协议凭借其轻量级、发布/订阅模型和可靠性,已经成为构建物联网平台的首选方案。但是,随着业务的增长…...

Zookeeper面试题总结
1、说说 Zookeeper 是什么? 有些软件你想做成集群或者分布式,你可以用 ZooKeeper 帮你来辅助实现。特点:ZooKeeper 的特点:维护、协调、管理、监控 最终一致性:客户端看到的数据最终是一致的。可靠性:服务…...

如何使用HTML、CSS和JavaScript来制作这两种类型的时钟
随着计算机技术的不断发展和普及,人们对于时间的精准度要求也越来越高。时钟作为我们日常生活必不可少的工具之一,也得到了越来越多的关注和研究。而在Web开发中,我们同样可以使用HTML、CSS和JavaScript的组合,制作出各式各样的时…...

Java中操作Xml使用备忘
List item 文章目录 Java中操作Xml使用备忘1. Hutool中XmlUtil的使用简介2. Hutool中XmlUtil快速读取Xml字符串某个节点值 [简单取值时,推荐使用]2-1 Hutool工具包Maven依赖和测试Xml字符串如下2-2 读取Xml中的节点<message>的值 3. Hutool中XmlUtil详细操作示…...

【Java|基础篇】内部类
文章目录 1.什么是内部类?2.实例内部类3.静态内部类4.局部内部类5.匿名内部类6.结语 1.什么是内部类? 内部类就是在一个类中再定义一个类,内部类也是封装的体现.它可以被声明为 public、protected、private 或默认访问控制符。内部类可以访问外部类的所有成员变量和方法&…...

七牛云图床设置
文章目录 七牛云图床设置下面是用picgo配置图床SSL证书申请https网站显示http图片解决方案 原文链接图床设置,免费SSL证书申请,https网站显示http链接的图片 七牛云图床设置 登录七牛云官网并进行个人注册,然后找到对象存储 点击空间管理&a…...

Android 12.0下拉状态栏录屏去掉弹窗直接录屏
1.概述 在12.0的系统rom开发中,在systemui的下拉状态栏中有个录屏的快捷按钮,可以通过点击录屏实现录屏功能,但是在录屏的时候发现需要先弹出 dialog,然后点击开始实现录屏,这有的麻烦,所以需要去掉弹窗直接开始录屏,就需要弹窗的相关代码来实现功能 2.下拉状态栏录屏…...

MySql基础学习(1)
MySql基础学习 一、数据库1.1 什么是数据库1.2 MySql的启动与停止1.3 MySql数据模型 二、SQL2.1 SQL通用语法2.2 SQL分类2.2.1 数据类型2.2.2 DDL使用方法2.2.3 、表操作-修改&删除DDL总结 2.3 DML2.3.1 DML添加数据2.3.2 DML---修改数据2.3.3 DML---删除数据DML总结 2.4 D…...

18- 弹幕系统设计
1、弹幕系统设计 场景分析:客户端针对某一视频创建了弹幕,发送后端进行处理,后端需要对所有正在观看该视频的用户推送该弹幕。 1.1、实现方式 使用短连接进行通信或使用长连接进行通信。 1.1.1、短连接实现方案 所有观看视频的客户端不断…...

字节软测划水四年,内容过于真实......
先简单交代一下吧,潇潇是某不知名211的本硕,18年毕业加入一个小厂,之后跳槽到了字节跳动,一直从事测试开发相关的工作。之前没有实习经历,算是四年半的工作经验吧。 这四年半之间他完成了一次晋升,换了一家…...

Mybatis介绍
1. Mybatis中#和$的区别? #相当于对数据 加上 双引号,$相当于直接显示数据 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为orde…...

Docker理论基础
初识Docker 1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致&…...

MySQL数据库之存储引擎
一、存储引擎的概念 1.1 什么是存储引擎 MySQL中的数据用各种不下同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。存储引擎是MySQL将数据存…...

中介效应分析全流程汇总
一、中介效应说明 中介效应主要研究自变量对因变量影响的过程中,自变量是否通过中介变量再对因变量产生影响,那什么情况表明中介效应存在呢?如果自变量对因变量影响过程中,中介变量在模型中有着桥梁般的作用,那说明中…...

论文阅读:Multimodal Graph Transformer for Multimodal Question Answering
文章目录 论文链接摘要1 contribution3 Multimodal Graph Transformer3.1 Background on Transformers3.2 Framework overview 框架概述3.3 Multimodal graph construction多模态图的构建Text graphSemantic graphDense region graph Graph-involved quasi-attention 总结 论文…...