NOIP2003年提高组复赛上机试题 神经网络

2023-10-29 08:18

本文主要是介绍NOIP2003年提高组复赛上机试题 神经网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NOIP2003年提高组复赛上机试题 神经网络

  • 1.问题分析
  • 2.具体代码
  • 3.总结

题目链接

  • 是否看了题解找思路

1.问题分析

1.碰到一道题干很复杂的题目,要先弄清楚题目到底在干什么,把样例在纸上模拟出来。
2.思考一般情况,分析题目的考察的知识点(例如本题考查的就是拓扑排序,恰巧我不熟练,看了题解才明白了思路)。
3.设计数据结构,需要记录下哪些数据,如何存储、更新数据,如何存储图。

在本题中,核心思路就是将结点先进行拓扑排序,在遍历一遍。
对于一个结点,应该存储其出度,入读(第一次写出入度),子节点的链表。
在拓扑排序中,最好用数组实现队列,y总说过:用数组实现队列可以获取队列中间的元素。不过top_sort()函数很值得学习。
邻接表仅仅用于存储图,只在遍历一点的子节点时使用。(应该明确邻接表能实现的功能,将邻接表模块化思考,不要乱用邻接表!!)

2.具体代码

#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>//本来打算直接用queue,后来发现不行
using namespace std;
const int N =105;
int h[N],e[N*N],W[N*N],ne[N*N],idx,n,p;
int chu[N],yu[N];//chu的意思是初始值,yu的意思是阈值。。。
int din[N],dout[N],q[N];//q是队列
void add(int a,int b,int w)
{e[idx]=b;W[idx]=w;ne[idx]=h[a];h[a]=idx++;
}
void top_sort()
{int hh=0,tt=-1;for(int i=1;i<=n;i++){if(din[i]==0){q[++tt]=i;chu[i]+=yu[i];//输入点先加一次阈值,与之后的减去一次阈值抵消}}while(hh<=tt){int t=q[hh++];for(int i=h[t];i!=-1;i=ne[i]){if(--din[e[i]]==0)//我觉得这个地方的处理很巧妙{q[++tt]=e[i];}}}}
int main()
{cin>>n>>p;memset(h,-1,sizeof h);for(int i=1;i<=n;i++)   cin>>chu[i]>>yu[i];for(int i=1;i<=p;i++){int a,b,w;cin>>a>>b>>w;add(a,b,w);din[b]++;dout[a]++;}top_sort();for(int i=0;q[i]!=0;i++)//按拓扑序遍历所有点{int now=q[i];chu[now]-=yu[now];if(chu[now]>0)for(int j=h[now];j!=-1;j=ne[j]){int k=e[j];chu[k]+=(chu[now]*W[j]);//记得乘以权重!!}}bool had_print=false;for(int i=1;i<=n;i++){if(dout[i]==0&&chu[i]>0){printf("%d %d\n",i,chu[i]);had_print=true;}}if(!had_print){printf("NULL\n");}return 0;
}

3.总结

还是太菜了,刷题量太少,且不说思路一开始没想出来,很多地方代码实现都有问题。
边学新知识边刷题吧。

这篇关于NOIP2003年提高组复赛上机试题 神经网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299401

相关文章

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

键盘快捷键:提高工作效率与电脑操作的利器

键盘快捷键:提高工作效率与电脑操作的利器 在数字化时代,键盘快捷键成为了提高工作效率和优化电脑操作的重要工具。无论是日常办公、图像编辑、编程开发,还是游戏娱乐,掌握键盘快捷键都能带来极大的便利。本文将详细介绍键盘快捷键的概念、重要性、以及在不同应用场景中的具体应用。 什么是键盘快捷键? 键盘快捷键,也称为热键或快捷键,是指通过按下键盘上的一组键来完成特定命令或操作的方式。这些快捷键通常涉及同

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

如何提高 GitHub 的下载速度

如何提高 GitHub 的下载速度 文章目录 如何提高 GitHub 的下载速度1. 注册账号2. 准备好链接3. 创建仓库4. 在码云上下载代码5. 仓库更新了怎么办 一般来说,国内的朋友从 GitHub 上面下载代码,速度最大是 20KB/s,这种龟速,谁能忍受呢? 本文介绍一种方法——利用“码云”,可以大大提高下载速度,亲测有效。 1. 注册账号 去“码云”注册一

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他

图神经网络(2)预备知识

1. 图的基本概念         对于接触过数据结构和算法的读者来说,图并不是一个陌生的概念。一个图由一些顶点也称为节点和连接这些顶点的边组成。给定一个图G=(V,E),  其 中V={V1,V2,…,Vn}  是一个具有 n 个顶点的集合。 1.1邻接矩阵         我们用邻接矩阵A∈Rn×n表示顶点之间的连接关系。 如果顶点 vi和vj之间有连接,就表示(vi,vj)  组成了