2.17C语言学习

P1678 烦恼的高考志愿

写完后发现题解里面用的是优先队列或者二分什么的,其实这个题可以贪心,我们把学校的分数线和学生的成绩分别进行排序,然后从前往后遍历,每次比较当前学校的分数与学生成绩的差距和下一个学校的分数与学生成绩之间的差距,如果前面那个小就把他加进sum,遍历完所有学生即可得出答案,记得有一点就是遍历下一个学生时,学校不往后推,不然结果会错误

#include<bits/stdc++.h>
using namespace std;
int a[100009],b[100009];
long long sum=0;
int main(){int n,m;scanf("%d %d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}for(int j=1;j<=m;j++){scanf("%d",&b[j]);}sort(a+1,a+1+n);sort(b+1,b+1+m);a[n+1]=100000000;int flag=1;for(int i=1;i<=n;i++){if(flag==m+1)break;if(abs(a[i]-b[flag])<abs(a[i+1]-b[flag])){//	printf("%d %d\n",a[i],b[flag]);sum+=abs(a[i]-b[flag]);i--;flag++;}}printf("%lld",sum);	return 0;
}

P1364 医院设置

每个医院都可以看成是一个节点,本题需要创造一个树,接着以每一个节点为起点遍历,用dfs对树进行遍历,记录每次结果的最小值,最后得到答案dfs,注意遍历顺序

#include<bits/stdc++.h>
using namespace std;
struct node{int human;int left;int right;int father;
};
node tree[1000];
int vis[105],n,sum,ans=INT_MAX;
void dfs(int step,int pos){sum+=step*tree[pos].human;int fa=tree[pos].father,left=tree[pos].left,right=tree[pos].right;if(fa&&!vis[fa]){vis[fa]=1;dfs(step+1,fa);}if(left&&!vis[left]){vis[left]=1;dfs(step+1,left);}if(right&&!vis[right]){vis[right]=1;dfs(step+1,right);}
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d %d %d",&tree[i].human,&tree[i].left,&tree[i].right);tree[tree[i].left].father=i;tree[tree[i].right].father=i;}for(int i=1;i<=n;i++){sum=0;memset(vis,0,sizeof(vis));vis[i]=1;dfs(0,i);ans=min(ans,sum);}printf("%d",ans);return 0;
}

P1258 小车问题

昨天提到的小车问题的正解是二分,但是我图简单用的数学方法

首先,每个人都要做一次车,而且两个人要同时到达,这样才能使总时间最短。

那么,我们设起点为A,终点为B,小车先带甲开到C点后甲下车走到B点,同时小车掉头与已经走到D点的乙相向而行,相遇于点E,最后小车带乙向B开去,和甲同时到达。

现在设AC=S

则:

#include<bits/stdc++.h>
using namespace std;
int main()
{double s,s1,s2,v1,v2,t1,t2,p;double a,b;scanf("%lf%lf%lf",&s,&v1,&v2);s1=0;s2=s;do{p=(s1+s2)/2.0;a=p/v2;b=(p-a*v1)/(v1+v2);t1=a+(s-p)/v1;t2=a+b+(s-(a+b)*v1)/v2;if(t1<t2)s2=p;elses1=p;}while(fabs(t1-t2)>1e-8);printf("%.6lf",t1);return 0;
}

一、二叉树
二叉树(Binary Tree)是一种重要的树状数据结构,它由节点构成,每个节点最多有两个子节点:一个左子节点和一个右子节点。这种结构使得二叉树在计算机科学和编程中具有广泛的应用。

1.1 二叉树的基本特性:
根节点:二叉树的顶部节点称为根节点,它是树的起点。
子树:树中的任何节点都可以作为根节点形成子树。
父节点和子节点:节点可以有零、一个或两个子节点。父节点指向子节点。
叶子节点:没有子节点的节点称为叶子节点。
深度:从根节点到某个节点的路径长度称为深度。根节点深度为0。
高度:树中最深节点的深度称为树的高度。
层次:节点的深度加1就是该节点所在的层次。
1.2 二叉树的常见类型:
二叉搜索树(Binary Search Tree,BST):一种有序二叉树,左子树上的节点值小于根节点,右子树上的节点值大于根节点,这个性质使得二叉搜索树用于快速查找、插入和删除操作。
平衡二叉树:一种特殊的二叉搜索树,保持树的左右子树高度差不超过1,以保持查找操作的高效性能。常见的平衡二叉树包括AVL树和红黑树。
二叉堆(Binary Heap):一种特殊的二叉树结构,通常用于实现堆排序和优先队列。有最大堆和最小堆两种类型。
1.3 二叉树的遍历方式:
前序遍历(Preorder Traversal):先访问根节点,然后依次遍历左子树和右子树。
中序遍历(Inorder Traversal):先遍历左子树,然后访问根节点,最后遍历右子树。对于二叉搜索树,中序遍历的结果是有序的。
后序遍历(Postorder Traversal):先遍历左子树,然后遍历右子树,最后访问根节点。
层次遍历(Level Order Traversal):按层次从上到下,从左到右遍历树的节点。

二、图的基本概念
图(Graph)是一种抽象数据结构,用于表示多个对象之间的关系。图是计算机科学中非常重要的数据结构,用于解决许多实际问题。以下是图的基本概念:

节点(Node 或 Vertex):图中的基本元素,通常表示一个实体或对象。节点可以有不同的属性和类型,具体取决于应用。节点可以包含有关实体的信息,如名称、权重等。
边(Edge 或 Arc):图中连接两个节点的线,表示节点之间的关系。边可以是有向的(从一个节点到另一个节点)或无向的(没有方向)。通常,边可能具有权重,用于表示关系的强度或成本。
顶点数(Vertex Count):图中节点的总数。
边数(Edge Count):图中边的总数。
路径(Path):在图中,路径是一系列相邻的节点,它们通过边相连。路径的长度可以通过经过的边数或权重来度量。
有向图(Directed Graph):也称为有向图,图中的边具有方向。在有向图中,从一个节点到另一个节点的边是单向的。
无向图(Undirected Graph):在无向图中,图中的边没有方向,可以双向移动。
环(Cycle):在图中,如果一条路径可以回到起始节点,形成一个闭合的环,那么该路径被称为环。
连通性(Connectivity):一个图或图中的一部分被称为连通的,如果从任何一个节点到另一个节点都存在路径。
度数(Degree):节点的度数是与该节点相连的边的数量。在有向图中,分为入度(In-Degree)和出度(Out-Degree)。
子图(Subgraph):一个图的子集,包括一些节点和连接这些节点的边。
稀疏图和稠密图:稀疏图是具有相对较少边的图,而稠密图具有相对较多的边。
图是一种非常通用的数据结构,它在许多领域中都有广泛的应用,包括网络分析、社交网络、路线规划、数据库系统、编译器设计、图像处理等。不同类型的图和图算法被用于不同的问题,如最短路径问题、网络流问题、最小生成树问题等。了解这些基本概念是理解和使用图的关键。

三、常见图算法
图算法是解决图数据结构中的各种问题的算法。以下是一些常见的图算法,以及它们的简要介绍和C#、Java的代码示例:

3.1 深度优先搜索(DFS):
算法介绍:DFS 用于遍历图,从一个起始节点开始,沿着一条路径尽可能深入,直到无法再继续。然后,回溯到上一个节点,继续深入其他路径,直到所有节点都被访问。
应用:查找连通组件、拓扑排序、解决迷宫问题等。

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

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

相关文章

Linux CentOS stream 9 安装docker

在计算机技术中,虑拟化是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。 目前,大多数服务器的容量的利用率不足15%,这导致服务器数量激增以及增加了复杂性。服务…

(二)【Jmeter】专栏实战项目靶场drupal部署

该专栏后续实战示例&#xff0c;都以该篇部署的项目展开操作。 前置条件 参考“&#xff08;一&#xff09;【Jmeter】JDK及Jmeter的安装部署及简单配置” 安装部署Jmeter&#xff0c;从文章最后下载“Postman、Rancher.ova、VirtualBox-7.0.12-159484-Win.exe、Xshell-7.0.01…

【第三十六节】工程与模块管理

IDEA 项目结构 层级关系&#xff1a; project&#xff08;工程&#xff09;-module&#xff08;模块&#xff09;-package(包)-class&#xff08;类&#xff09; 具体的&#xff1a; 一个project中可以创建多个module 一个module可以创建多个package 一个package中可以创…

[C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改

问题描述 WPF中DataGrid的选中行或选中者单元格&#xff0c;在焦点失去后&#xff0c;颜色会很淡&#xff0c;很不明显&#xff0c;不容易区分。 解决方法 在失去焦点的情况下&#xff0c;如何设置行或单元格与选中的时候颜色一样&#xff1f; <DataGrid.Resources>&…

如何在Spring Boot中启用HTTPS?

在Spring Boot中启用HTTPS是一个增强应用程序安全性的重要步骤。下面我将介绍如何将一个Spring Boot项目配置成支持HTTPS协议。 引入 在现代的网络通信中&#xff0c;安全性成为了一个不能忽视的要求。特别是当我们谈论到数据传输时&#xff0c;保护用户信息的安全性是非常重要…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(2)项目开发周期

我们来学习项目开发的周期。 再次声明&#xff0c;本文来自腾讯AI课的学习笔记&#xff0c;图片和文字&#xff0c;仅用于大家学习&#xff0c;想了解更多知识&#xff0c;请访问腾讯云相关章节。如果争议&#xff0c;请联系作者。 今天&#xff0c;我们来学习AI项目的周期。 主…

黑马鸿蒙教程学习1:Helloworld

今年打算粗略学习下鸿蒙开发&#xff0c;当作兴趣爱好&#xff0c;通过下华为那个鸿蒙开发认证&#xff0c; 发现黑马的课程不错&#xff0c;有视频和完整的代码和课件下载&#xff0c;装个devstudio就行了&#xff0c;建议32G内存。 今年的确是鸿蒙大爆发的一年呀&#xff0c;…

【以解决】Pyinstaller打包报错IndexError: tuple index out of range

问题 这个问题主要是在Python3.7以上的版本中遇到&#xff0c;用pyinstaller打包的时候发现报错 (pyinstallerEnv) D:\virtualEnv\pyinstallerEnv\Scripts>auto-py-to-exe pygame 2.5.2 (SDL 2.28.3, Python 3.10.0) Hello from the pygame community. https://www.pygame…

人工智能学习与实训笔记(四):神经网络之NLP基础—词向量

人工智能专栏文章汇总&#xff1a;人工智能学习专栏文章汇总-CSDN博客 本篇目录 四、自然语言处理 4.1 词向量 (Word Embedding) 4.1.1 词向量的生成过程 4.1.2 word2vec介绍 4.1.3 word2vec&#xff1a;skip-gram算法的实现 4.2 句向量 - 情感分析 4.2.1 LSTM (Long S…

第六节笔记:OpenCompass 大模型评测

视频链接&#xff1a;https://www.bilibili.com/video/BV1Gg4y1U7uc/?spm_id_from333.788&vd_source3bbd0d74033e31cbca9ee35e111ed3d1

普中51单片机学习(六)

点亮第一个LED LED相关知识 LED,即发光二极管&#xff0c;是一种半导体固体发光器件。工作原理为&#xff1a;LED的工作是有方向性的&#xff0c;只有当正级接到LED阳极&#xff0c;负极接到LED的阴极的时候才能工作&#xff0c;如果反接LED是不能正常工作的。其原理图如下 …

【机器学习】机器学习常见算法详解第4篇:KNN算法计算过程(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习&#xff0c;伴随浅显易懂的数学知识&#xff0c;让大家掌握机器学习常见算法原理&#xff0c;应用Scikit-learn实现机器学习算法的应用&#xff0…

机器学习3----决策树

这是前期准备 import numpy as np import pandas as pd import matplotlib.pyplot as plt #ID3算法 #每个特征的信息熵 # target : 账号是否真实&#xff0c;共2种情况 # yes 7个 p0.7 # no 3个 p0.3 info_D-(0.7*np.log2(0.7)0.3*np.log2(0.3)) info_D #日志密度…

Positive SSL 证书介绍

Positive SSL 是一种受欢迎的 SSL 证书&#xff0c;提供了卓越的安全性、性价比和品牌信任。以下是对 Positive SSL 在这些方面的简要介绍&#xff1a; 1. 安全性&#xff1a; Positive SSL 证书采用强大的加密技术&#xff0c;确保网站和用户之间的数据传输是安全的。它使用…

普法GraphicBuffer诞生以及跨进程传递

GraphicBuffer诞生以及跨进程传递重认识 引言 对于Android的Graphics图形堆栈这块&#xff0c;自我感觉看了蛮多的博客啊文档(不管是比较老的还是新一点的)。但是仅仅只是看了而已&#xff0c;都是蜻蜓点水&#xff0c;没有进行记录也没有总结。所以每次哪怕阅读过程中产业了很…

【PCB】Allegro PCB 的模块复用操作

【PCB】Allegro PCB 的模块复用操作

(01)Hive的相关概念——架构、数据存储、读写文件机制

目录 一、架构及组件介绍 1.1 Hive整体架构 1.2 Hive组件 1.3 Hive数据模型&#xff08;Data Model&#xff09; 1.3.1 Databases 1.3.2 Tables 1.3.3 Partitions 1.3.4 Buckets 二、Hive读写文件机制 2.1 SerDe 作用 2.2 Hive读写文件流程 2.2.1 读取文件的过程 …

Java 抽象容器类源码剖析

总体介绍 抽象容器类接口和具体容器类的关系如图所示&#xff0c;顶层包括Collection、List、Set、Queue、Deque和Map6个抽象容器类。 AbstractCollection&#xff1a;实现了Collection接口&#xff0c;被抽象类AbstractList、AbstractSet、AbstractQueue继承&#xff0c;Arra…

文件上传漏洞--Upload-labs--Pass01--前端绕过

一、前端绕过原理 通俗解释&#xff0c;我们将写有恶意代码的php后缀文件上传到网页&#xff0c;网页中的javascript代码会先对文件的后缀名进行检测&#xff0c;若检测到上传文件的后缀名为非法&#xff0c;则会进行alert警告。若想上传php后缀的文件&#xff0c;就要想办法对…

东方博宜 1057. 能被5整除且至少有一位数字是5的所有整数的个数

东方博宜 1057. 能被5整除且至少有一位数字是5的所有整数的个数。 思路&#xff1a; 1 首先输入n 2 用for循环遍历1-n中间的数 3 每一个数进行对5取余的运算&#xff0c;看是否能被5整除 4 在整除的基础上&#xff0c;看这个数的各个数位上是否有5&#xff0c;这一步将数对10取…