【ACM】—蓝桥杯大一暑期集训Day4

news2024/10/6 2:28:18

🚀欢迎来到本文🚀
🍉个人简介:陈童学哦,目前正在学习C/C++、Java、算法等方向,一个正在慢慢前行的普通人。
🏀系列专栏:陈童学的日记
💡其他专栏:C++STL,感兴趣小伙伴可以了解一下哦
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​
⛱️万物随心起,心动则万物动🤺

在这里插入图片描述

Day4集训

  • A - 医院设置
    • 解题思路
    • 示例代码
  • B - Destroyer
    • 解题思路
    • 示例代码
  • C - 单源最短路径(弱化版)
    • 解题思路
    • 示例代码
  • D - 某最短路
    • 解题思路
    • 示例代码
  • E - Sasha and Array Coloring
    • 解题思路
    • 示例代码
  • 总结

A - 医院设置

来源:洛谷P1364 医院设置
算法标签:动态规划,dp、树形数据结构、广度优先搜索,BFS、最短路
在这里插入图片描述
在这里插入图片描述

解题思路

这题是一道最短路问题,先用邻接矩阵建一棵树,然后用Floyd(弗洛伊德)算法求任意两点间的最短路,然后再遍历所有节点看看在哪个节点距离和最小

示例代码

#include<bits/stdc++.h>
using namespace std;
int a[105],g[105][105]; 
int main()
{
	int n,l,r,minn,sum;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			g[i][j]=0x3f3f3f3f;
	}
	for(int i=1;i<=n;i++)
	{
		g[i][i]=0;
		cin>>a[i]>>l>>r;
		if(l>0)
			g[i][l]=g[l][i]=1;
		if(r>0)
			g[i][r]=g[r][i]=1;
	}
	//Floyd求最短路
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			if(i!=k)
			{
				for(int j=1;j<=n;j++)
				{
					if(i!=j&&k!=j&&g[i][k]+g[k][j]<g[i][j])
						g[i][j]=g[i][k]+g[k][j];
				}
			}
		}
	}
	minn=0x7fffffff;
	for(int i=1;i<=n;i++)
	{
		sum=0;
		for(int j=1;j<=n;j++)
			sum+=g[i][j]*a[j];
		if(sum<minn)
			minn=sum;
	}
	cout<<minn;
}

B - Destroyer

来源:Codeforces A. Destroyer
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解题思路

统计每个数出现的次数,只需满足a[i]<=a[i-1]即可

示例代码

#include <bits/stdc++.h>
using namespace std;
void solve() 
{
	int n,num; 
	cin>>n;
	int a[105]={0};
	//memset(a,0,sizeof a);
	for(int i = 1 ; i <=n  ; i++)
	{
		cin>>num;
		a[num]++;
	}
	int judge = 1;
	for(int i=1;i<105;i++)
	{
		if(a[i] > a[i-1])
		{
			judge = 0;
			break;
		}
			
	}
	if(judge)
		cout<<"YES\n";
	else
		cout<<"NO\n";
}            
int main() 
{
    int t;
	cin>>t;
    while(t--)
    {
    	solve();
    }
    return 0;
}

C - 单源最短路径(弱化版)

来源:洛谷P3371 【模板】单源最短路径(弱化版)
算法标签:图论、最短路、O2优化
在这里插入图片描述
在这里插入图片描述

解题思路

这题的数据用邻接矩阵的话好像过不了,我不会做(手动流泪),我看有大佬们有用Floyd优化的、Dijkstra+堆优化、SPFA优化等,我这里参考了一位用链式向前星储存图+Dijkstra的大佬的代码。真难啊家人们。

示例代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1000010;
int head[N],cnt;
ll ans[N];
bool visit[N];
int n,m,s;
struct node
{
	int to;
	int nextt;
	int wei;
}edge[N];
void addedge(int x,int y,int z)
{
	edge[++cnt].to=y;
	edge[cnt].wei=z;
	edge[cnt].nextt=head[x];
	head[x]=cnt;
}
int main()
{
	cin>>m>>n>>s;
	for(int i=1;i<=n;i++)
		ans[i]=2147483647;
	ans[s]=0;
	int a,b,c;
	for(int i=1;i<=n;i++)
	{
		cin>>a>>b>>c;
		addedge(a,b,c);
	}
	int position=s;
	while(visit[position]==0)
	{
		ll minn =2147483647;
		visit[position]=1;
		for(int i=head[position];i!=0;i=edge[i].nextt)
		{
			if(!visit[edge[i].to]&&ans[edge[i].to]>ans[position]+edge[i].wei)
				ans[edge[i].to]=ans[position]+edge[i].wei;
		}
		for(int i=1;i<=m;i++)
		{
			if(ans[i]<minn&&visit[i]==0)
			{
				minn=ans[i];
				position=i;
			}
		}
	}
	for(int i=1;i<=m;i++)
		cout<<ans[i]<<" ";
}

D - 某最短路

来源:洛谷B3647 【模板】Floyd 算法
算法标签:最短路

在这里插入图片描述

解题思路

要求任意两点之间的距离,数据也不是很大,这题用Floyd跑一遍就OK了

示例代码

#include<bits/stdc++.h>
using namespace std;
int n,m;
int u,v,w;
int g[105][105];
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			if(i==j)
				g[i][j]=0;
			else
				g[i][j]=1e9;
		}
			
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v>>w;
		g[u][v]=g[v][u]=w;
	}
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(g[i][j]>g[i][k]+g[k][j])
					g[i][j]=g[i][k]+g[k][j];
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			cout<<g[i][j]<<" ";
		cout<<endl;
	}
}

E - Sasha and Array Coloring

来源:CodeforcesA. Sasha and Array Coloring
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解题思路

这题模拟一下,要得到最大值,采用贪心策略,先对数组进行排序,然后每次用末尾数减去首位数,全部相加即可求解

示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t;	
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		int a[105],sum=0;
		for(int i=0;i<n;i++)
			cin>>a[i];
		sort(a,a+n);
		int i=0,j=n-1;
		while(i<j)
		{
			sum+=a[j]-a[i];
			i++;
			j--;
		}
		cout<<sum<<endl;
	}
}

总结

Day4的题主要考察最短路径、图论问题,这类题较难。
算法:贪心、Floyd、Dijkstra、SPFA、DFS、BFS、dp
感悟:图论最短路的题比较难,有时难得我头炸裂(哭脸)
总结:对于求最短路的各类算法还不是太熟练,还需多加练习加以掌握

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

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

相关文章

基于STM32的homeassistant(采用FreeRTOS操作系统)【第一、二章优化拓展:Wifi、服务器连接验证以及UASRT串口区分】

第一、二章优化拓展开发环境&#xff1a; 主控STM32F103C8T6WIFI模块ESP01S开发语言C开发编译器 KEIL 组网方式WIFI服务器协议MQTT 硬件连接 STM32ESP01S3.3V3.3V GND GND GPIO2 (USRAT2-TX) RXGPIO3 (USART3-RX)TX 本章要点&#xff1a; 对ESP01S的AT指令的反馈指令进…

集合面试题--HashMap

目录 HashMap实现原理 HashMap的jdk1.7和jdk1.8有什么区别 总结 HashMap的put方法的具体流程 常见属性 添加数据的流程图 ​编辑 具体实现源码 总结 HashMap的扩容机制 总结 hashMap的寻址算法 总结 hashmap在1.7情况下的多线程死循环问题 HashMap实现原理 HashMap的…

MyBatis的多表操作

1 MyBatis的多表操作 1.1 多表模型介绍 我们之前学习的都是基于单表操作的&#xff0c;而实际开发中&#xff0c;随着业务难度的加深&#xff0c;肯定需要多表操作的。 多表模型分类 一对一&#xff1a;在任意一方建立外键&#xff0c;关联对方的主键。 一对多&#xff1a;在…

IDEA 工具- Java - Tomcat 9.x - 无法使用外部 tomcat 服务器的断点测试功能

问题&#xff1a;使用外部 Tomcat 运行项目&#xff0c;却无法使用断点功能测试 Java 项目 解决方法&#xff1a; 在 IDEA 工具的tomcat Edit configurations&#xff0c;进行修改 具体配置位置&#xff1a; Environment Variables 配置选项添加内容&#xff1a; NameValueJ…

Unity游戏源码分享-线条圆圈游戏Line and Circle Game Template

Unity游戏源码分享-线条圆圈游戏Line and Circle Game Template 圆圈穿过线条就通关 工程地址&#xff1a; https://download.csdn.net/download/Highning0007/88061484

java学习路程之篇十、知识点、数组介绍、二维数组介绍、静态初始化、访问元素、遍历元素、动态初始化、内存图、数组常见问题

文章目录 01、数组介绍02、数组静态初始化03、数组元素访问04、数组遍历操作05、数组动态初始化06、数组内存图07、数组常见问题08、二维数组介绍09、二维数组静态初始化10、二维数组遍历11、二维数组动态初始化12、二维数组内存图 01、数组介绍 02、数组静态初始化 03、数组元…

封装 视频以及监控组件

1.引入插件。 文件Git 地址&#xff1a; https://gitee.com/wang-xiaowang123/liveplayer.html 文件中 <script src"/assets/js/liveplayer-lib.min.js" exclude></script> // liveplayer-lib.min.js 文件在Git仓库中2.封装组件 LivePlayerDemo.vue …

php做网页版剪刀石头布的功能

实例讲述了php实现的网页版剪刀石头布攻略在玩游网上的设计。分享给大家供大家参考&#xff0c;具体如下&#xff1a; <?php /* * Created on 2016-11-25 * */ if (isset($_POST[sub])) { $what $_POST[what]; //需要输入的数组 $my_array array("剪刀","…

算法通关村第一关-链表青铜挑战笔记

文章目录 前言一、Java的链表是怎么构造的&#xff1f;单链表的构造简介&#xff1a; 构造链表&#xff1a; 链表增加元素&#xff0c;首部&#xff0c;中间和尾部分别会有什么问题&#xff0c;需要怎么处理&#xff1f;链表的新增在头部添加元素&#xff1a;在中间添加元素&am…

IP库新增多种颜色转换空间IP

颜色空间转换是图像及视频中常用的解决方案&#xff0c;涉及hsv-rgb、rgb-ycrcb等一些常见的颜色空间互相转换&#xff0c;今天带来几种常见的颜色空间转换IP&#xff0c;主要如下&#xff1a; IP库简介 一直想做一个可以供大家学习、使用的开源IP库&#xff0c;类似OpenCores&…

美化图表——LiveCharts中的时序图的制作,相对问题的解决

美化图表——LiveCharts中的时序图的制作&#xff0c;相应问题的解决 前言一、效果展示二、基本的一些实现的代码1.X,Y坐标的相关设置2.新增波形对象3.实时更新数据 三、修改的点总结 前言 在项目中&#xff0c;需要用到图表来展示波形的实时变化&#xff0c;故找到了这个Live…

优维低代码实践:统计视图

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

35.Vue自定义指令-总结

目录 1.自定义指令容易踩的坑 1.1 指令名如果是多个单词&#xff0c;要使用kebab-case命名方式&#xff0c;不要用camelCase命名 1.2 指令回调函数中的this问题 1.3 局部指令与全局指令 2.自定义指令总结 2.1 定义语法&#xff1a; (1).局部指令 (2).全局指令 2.2 配置…

3.14 Bootstrap 缩略图

文章目录 Bootstrap 缩略图添加自定义的内容 Bootstrap 缩略图 本章将讲解 Bootstrap 缩略图。大多数站点都需要在网格中布局图像、视频、文本等。Bootstrap 通过缩略图为此提供了一种简便的方式。使用 Bootstrap 创建缩略图的步骤如下&#xff1a; 在图像周围添加带有 class …

ChatGPT | 修改RetrievalQA推荐答案的数量

知识库经常遇到一个问题会在一个文件的多处或者多个文件出现&#xff0c;这时候如果只回答一个结果就欠佳&#xff0c;最理想的做法是模仿推荐功能&#xff0c;把合适的多个答案及其出处汇总给用户。 如图&#xff0c;一个接口文档里面提到多处“http请求URL”&#xff1a; 使…

vue项目如何部署?有遇到布署服务器后刷新404问题吗?

一、如何部署 前后端分离开发模式下,前后端是独立布署的,前端只需要将最后的构建物上传至目标服务器的web容器指定的静态目录下即可 我们知道vue项目在构建后,是生成一系列的静态文件

Minecraft 1.20.x Forge模组开发 01.Idea开发环境配置

我们本次来进行Minecraft 1.20.x 模组开发环境配置教程的介绍。 效果演示 效果演示 效果演示 1.首先我们需要下载Java17和1.20模组开发包: Java17下载官网

csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板

文章目录 ⭐前言⭐利用inscode免费开放资源&#x1f496; 在inscode搭建vue3tsant项目&#x1f496; 调整配置&#x1f496; antd 国际化配置&#x1f496; 用户store&#x1f496; 路由权限&#x1f496; 预览 ⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享…

【字节流】读数据(一次读一个字节数组数据)

字节流读数据&#xff08;一次读一个字节数组数据&#xff09; 1.需求&#xff1a; 把文件fos.txt中的内容读取出来在控制台输出 2.思路&#xff1a; 创建字节输入流对象调用字节输入流对象的读数据方法释放资源 package com.bytestream; import java.io.FileInputStream; …

TCP/IP网络编程 第十五章:套接字和标准I/O

标准I/O函数的优点 标准I/O函数的两个优点 将标准I/O函数用于数据通信并非难事。但仅掌握函数使用方法并没有太大意义&#xff0c;至少应该 了解这些函数具有的优点。下面列出的是标准I/O函数的两大优点: □标准I/O函数具有良好的移植性(Portability) □标准I/O函数可以利用缓…