【PTA-训练day28】L2-044 大众情人 + L2-043 龙龙送外卖 + L2-042 老板的作息表

news/2024/12/30 2:35:06/

目录

L2-044 大众情人 - 多源最短路 floyd

L2-043 龙龙送外卖 - 树 + dfs + 贪心

L2-042 老板的作息表 - 排序 + 字符串


L2-044 大众情人 - 多源最短路 floyd

PTA | 程序设计类实验辅助教学平台

思路:

求某两点间最短路,用floyd算法【蓝桥杯集训16】多源汇求最短路——Floyd算法(2 / 2)_Roye_ack的博客-CSDN博客

用dij数组存每个人【异性到它的最短路的这个集合】中的最大值

分性别分别求出dij数组中的最小值

遍历所有人,找出男女中的"大众情人"

#include <bits/stdc++.h>
#define pb push_back 
#define INF 0x3f3f3f3f
using namespace std;const int N=510;
int g[N][N];
int sex[N],dij[N]; //dij存的是异性对自己的最短路长度
int n;void floyd() //求i和j两点间最短路
{for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
}int main()
{cin>>n;memset(g,0x3f,sizeof(g));for(int i=1;i<=n;i++){char c;cin>>c;if(c=='F') sex[i]=0;else sex[i]=1;int k;cin>>k;while(k--){int fd,d;char cc;cin>>fd>>cc>>d;g[i][fd]=d;}}floyd();//先把每个人的异性maxdij求出来for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(sex[i]!=sex[j]) dij[i]=max(dij[i],g[j][i]); //注意存的是g[j][i]int df1=INF,dm2=INF; //df1——女性maxd中的最小值  dm2——男性maxd中的最小值for(int i=1;i<=n;i++) if(sex[i]==0) df1=min(df1,dij[i]);else dm2=min(dm2,dij[i]);vector<int> f,m;for(int i=1;i<=n;i++)if(sex[i]==0&&dij[i]==df1) f.pb(i);for(int i=1;i<=n;i++)if(sex[i]==1&&dij[i]==dm2) m.pb(i);for(int i=0;i<f.size();i++){if(i!=0) cout<<" ";cout<<f[i];}cout<<endl;for(int i=0;i<m.size();i++){if(i!=0) cout<<" ";cout<<m[i];}
}

 

L2-043 龙龙送外卖 - 树 + dfs + 贪心

PTA | 程序设计类实验辅助教学平台

思路:

  • 因为送完不用返回外卖站,则能发现总路程可以减少一段回城的路径
  • 也就是【res=总路径数×2-回程距离】,想要res最小,则回程距离要最大
  • 所以回程距离=要送买外卖点树的最大深度
  • 首先用dfs预处理出每个分支的深度,第i个节点的深度记录在dist[i]中
  • 遍历m个询问,对于每次加进来的新结点x所更新的图
  • 从这个点向上找,更新sum记录的总路径数(即结点数),找过的点打上标记
  • 每一次询问更新回程距离,即最大深度
  • 答案就是res = sum*2-maxd
#include <bits/stdc++.h>
using namespace std;const int N=1e5+10,M=N<<1;
int h[N],ne[M],e[M],idx;
int st[N],p[N],dist[N],ver[N]; //p存节点的父节点 dist存i的深度 ver存m个询问的节点
int n,m;void add(int a,int b)
{e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}void dfs(int u,int fa)
{for(int i=h[u];~i;i=ne[i]){int j=e[i];if(j==fa) continue;dist[j]=dist[u]+1;dfs(j,u);}
}int main()
{memset(h,-1,sizeof(h));cin>>n>>m;int root;for(int i=1;i<=n;i++){int x;cin>>x;if(x==-1) root=i;else{add(i,x);add(x,i);p[i]=x;}}for(int i=1;i<=m;i++) cin>>ver[i];st[root]=1;dfs(root,-1); //预处理所有节点的深度int sum=0,maxx=0;for(int i=1;i<=m;i++){int x=ver[i];while(!st[x]){sum++;st[x]=1;x=p[x];}maxx=max(maxx,dist[ver[i]]);cout<<sum*2-maxx<<endl;}    
}

L2-042 老板的作息表 - 排序 + 字符串

PTA | 程序设计类实验辅助教学平台

思路:

先把时间表排序,容易发现规律,模拟即可

00:00:00 - 01:00:05
01:00:05 - 04:30:00
05:30:00 - 06:30:00
06:30:00 - 07:10:58
07:10:59 - 08:00:00
08:00:00 - 09:00:00
13:00:00 - 18:00:00
18:00:00 - 19:00:00
#include <bits/stdc++.h>
using namespace std;int main()
{int n;cin>>n;getchar();string s[n];for(int i=0;i<n;i++){string x;getline(cin,x);s[i]=x;}sort(s,s+n);string pre;for(int i=0;i<n;i++){string t=s[i];if(i==0){if(t.substr(0,8)!="00:00:00")cout<<"00:00:00 - "<<t.substr(0,8)<<endl;}else {if(t.substr(0,8)!=pre) cout<<pre<<" - "<<t.substr(0,8)<<endl;}pre=t.substr(11);}if(s[n-1].substr(11)!="23:59:59")cout<<s[n-1].substr(11)<<" - "<<"23:59:59";
}

 


http://www.ppmy.cn/news/45180.html

相关文章

前端中font的使用

知识点&#xff1a; 运行截图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"> <meta name&…

小程序组件的生命周期

组件生命周期 组件的生命周期&#xff0c;指的是组件自身的一些函数&#xff0c;这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。 其中&#xff0c;最重要的生命周期是 created attached detached &#xff0c;包含一个组件实例生命流程的最主要时间点。 …

Java就业前景如何?

Java还有出路吗&#xff1f; 2023年的就业市场依然经历着面临挑战&#xff0c;很多有经验有技术的人被淘汰下来&#xff0c;而马上又有一千多万的新鲜血液涌入就业市场。经济大环境对于各行各业的影响是非常大的&#xff0c;也为IT行业的内卷推波助澜。在2023年想学习Java入行就…

智慧养老平台建设方案word

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 1、 总体设计 1.1 建设原则 养老机构智能化管理工程是一项涉及多学科知识的复杂的系统工程&#xff0c;养老机构智能化管理围绕机构发展战略&#xff0c;立足机构需求&…

Reactor设计模式

一、Reactor设计模式 1、什么是Reactor设计模式&#xff1f; Reactor模式是高性能I/O设计中&#xff0c;常用的设计模式。其中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上&#xff0c;同时主线程阻塞在多路复用器上&#xff0c;一旦有I/O事件到来或是准备就绪…

stegano(图片隐写、摩斯密码)

附件是PDF&#xff0c;我们在选择内容时发现光标溢出了文本 说明这里还存在一些我们看不到的内容 直接CtrlA全选&#xff0c;CtrlC复制后新建一个纯文本文件 将复制的东西粘贴过去 粘贴后发现果然多出来了一些东西&#xff0c;提取出来 BABA BBB BA BBA ABA AB B AAB ABAA A…

大力出奇迹——GPT系列论文学习(GPT,GPT2,GPT3,InstructGPT)

目录 说在前面1.GPT1.1 引言1.2 训练范式1.2.1 无监督预训练1.2.2 有监督微调1.3 实验 2. GPT22.1 引言2.2 模型结构2.3 训练范式2.4 实验 3.GPT33.1引言3.2 模型结构3.3 训练范式3.4 实验3.4.1数据集3.5 局限性 4. InstructGPT4.1 引言4.2 方法4.2.1 数据收集4.2.2 各部分模型…

联想凌拓 ThinkSystem DE 系列全闪存阵列

ThinkSystem DE 系列全闪存阵列 超高的性能&#xff0c;极具竞争力的价格 通过消除过量配置最大限度地提高效率&#xff0c;同时通过降低空间、电源和冷却要求来降低成本。 利用高级数据保护&#xff0c;在本地或从远距离上防止数据丢失和停机事件。 在模块化 2U 构建模块中…