当前位置: 首页 > news >正文

P1038 [NOIP 2003 提高组] 神经网络

题目描述

在兰兰的模型中,神经网络就是一张有向图,图中的节点称为神经元,而且两个神经元之间至多有一条边相连,下图是一个神经元的例子:

神经元(编号为 i)

图中,X1​∼X3​ 是信息输入渠道,Y1​∼Y2​ 是信息输出渠道,Ci​ 表示神经元目前的状态,Ui​ 是阈值,可视为神经元的一个内在参数。

神经元按一定的顺序排列,构成整个神经网络。在兰兰的模型之中,神经网络中的神经元分为几层;称为输入层、输出层,和若干个中间层。每层神经元只向下一层的神经元输出信息,只从上一层神经元接受信息。下图是一个简单的三层神经网络的例子。

兰兰规定,Ci​ 服从公式:C_i=(\sum_{(j,i)\in E}W_{ij}C_j-U_i)​ (其中 n 是网络中所有神经元的数目)

公式中的 Wji​(可能为负值)表示连接 j 号神经元和 i 号神经元的边的权值。当 Ci​ 大于 0 时,该神经元处于兴奋状态,否则就处于平静状态。当神经元处于兴奋状态时,下一秒它会向其他神经元传送信号,信号的强度为 Ci​。

如此.在输入层神经元被激发之后,整个网络系统就在信息传输的推动下进行运作。现在,给定一个神经网络,及当前输入层神经元的状态(Ci​),要求你的程序运算出最后网络输出层的状态。

输入格式

输入文件第一行是两个整数 n(1≤n≤100)和 p。接下来 n 行,每行 2 个整数,第 i+1 行是神经元 i 最初状态和其阈值(Ui​),非输入层的神经元开始时状态必然为 0。再下面 p 行,每行有两个整数 i,j 及一个整数 Wij​,表示连接神经元 i,j 的边权值为 Wij​。

输出格式

输出文件包含若干行,每行有 2 个整数,分别对应一个神经元的编号,及其最后的状态,2 个整数间以空格分隔。仅输出最后状态大于 0 的输出层神经元状态,并且按照编号由小到大顺序输出。

若输出层的神经元最后状态均小于等于 0,则输出 NULL

输入输出样例

输入 #1

5 6
1 0
1 0
0 1
0 1
0 1
1 3 1
1 4 1
1 5 1
2 3 1
2 4 1
2 5 1

输出 #1

3 1
4 1
5 1

可以想到通过入度和出度确定输入输出层,随后对剩下的神经元进行分层排序,最后按照层序更新神经元状态,代码如下:

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;struct Edge {int node;// 前驱/后继神经元cint weight;// 边权
};int main() {int n, p;cin >> n >> p;vector<int> c(n + 1);// 神经元i的初始状态vector<int> u(n + 1);// 神经元i的阈值vector<vector<Edge>> prev(n + 1);// 神经元i的前驱神经元vector<vector<Edge>> next(n + 1);// 神经元i的后继神经元for (int i = 1; i <= n; ++i) {int init, threshold;cin >> init >> threshold;c[i] = init;u[i] = threshold;}for (int i = 0; i < p; ++i) {int from, to, weight;cin >> from >> to >> weight;prev[to].push_back({from, weight});next[from].push_back({to, weight});}vector<int> layer(n + 1, 0);// 神经元i的层数bool changed = true;while (changed) {// 不断更新层数changed = false;for (int i = 1;i<=n;i++) {if (prev[i].empty()) {if (layer[i]!=0) {layer[i] = 0;changed = true;}continue;}int max_prev = 0;for (auto edge : prev[i]) {if (layer[edge.node]>max_prev) {max_prev = layer[edge.node];}}int new_layer = max_prev + 1;if (new_layer != layer[i]) {layer[i] = new_layer;changed = true;}}}vector<pair<int, int>> nodes;// 神经元i的层数和编号for (int i = 1;i<=n;i++) {nodes.push_back({layer[i], i});}sort(nodes.begin(), nodes.end());for (auto node : nodes) {// 从前往后逐层更新神经元状态int i = node.second;if (layer[i] == 0) {continue;}int sum = 0;for (auto edge : prev[i]) {if (c[edge.node]>0) {sum += edge.weight * c[edge.node];}}c[i] = sum - u[i];}vector<int> output_nodes;// 找出输出神经元for (int i = 1;i<=n;i++) {if (next[i].empty()) {output_nodes.push_back(i);}}sort(output_nodes.begin(), output_nodes.end());vector<int> result;for (int node : output_nodes) {// 过滤状态为正的神经元if (c[node] > 0) {result.push_back(node);}}if (result.empty()) {cout << "NULL" << endl;} else {for (auto p : result) {cout << p << " " << c[p] << endl;}}return 0;
}

相关文章:

P1038 [NOIP 2003 提高组] 神经网络

题目描述 在兰兰的模型中&#xff0c;神经网络就是一张有向图&#xff0c;图中的节点称为神经元&#xff0c;而且两个神经元之间至多有一条边相连&#xff0c;下图是一个神经元的例子&#xff1a; 神经元&#xff08;编号为 i&#xff09; 图中&#xff0c;X1​∼X3​ 是信息…...

TypeScript 类型断言的适用场景及代码示例

类型断言的适用场景及代码示例 适用场景 类型断言就像是你很确定某个东西是什么&#xff0c;然后直接告诉 TypeScript 编译器“相信我&#xff0c;它就是这个类型”。以下是几种常见的适用场景&#xff1a; 从 any 类型恢复具体类型&#xff1a;当你使用 any 类型时&#xf…...

Docker 容器

Docker 是一种开源的容器化平台&#xff0c;可以让开发人员将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后部署到任何支持 Docker 的环境中。Docker 的基本概念包括以下几点&#xff1a; 1. **容器(Container)**&#xff1a;容器是一个独立、轻量级的运行环境…...

Spark(3)vi的基本使用

一.打开与创建文件 二.三种模式 三. 光标操作 四.复制粘贴 一.打开与创建文件 它是linux的内置命令&#xff0c;所以还是以命令的方式来运行。 命令的格式是&#xff1a;Vi /路径/文件名。要注意如下两种情况&#xff1a; 1.如果这个文件不存在&#xff0c;此时就是新建文…...

element-ui的组件使用

1. 安装 Element UI&#xff08;在文件夹最上面输入cmd进入dos窗口&#xff0c;然后输入安装指令 npm install element-ui --save&#xff09; 2.在main.js文件全局引入(main.js文件负责 全局注册 )&#xff0c;在该文件注册的所有组件在其他文件都能直接调用&#xff0c;一般…...

Starlink卫星动力学系统仿真建模第九讲-滑模(SMC)控制算法原理简介及卫星控制应用

滑模控制&#xff08;Sliding Mode Control&#xff09;算法详解 一、基本原理 滑模控制&#xff08;Sliding Mode Control, SMC&#xff09;是一种变结构控制方法&#xff0c;通过设计一个滑模面&#xff08;Sliding Surface&#xff09;&#xff0c;迫使系统状态在有限时间内…...

《深度剖析Linux 系统 Shell 核心用法与原理_666》

1. 管道符的用法 查找当前目录下所有txt文件并统计行数 # 使用管道符将ls命令的结果传递给wc命令进行行数统计 ls *.txt | wc -l 在/etc目录下查找包含"network"的文件并统计数量 # 使用find命令查找文件&#xff0c;并通过grep查找包含特定字符串的文件&#xf…...

51单片机学习之旅——定时器

打开软件 1与其它等于其它&#xff0c;0与其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定时器1&#xff0c;低四位定时器0 TMODTMOD|0x01;//0x010000 0…...

超详细介绍map(multimap)的使用

map类的介绍 map的声明如下&#xff0c;Key是map底层关键字的类型&#xff0c;T是map底层value的类型。set默认要求Key支持小于比较&#xff0c;如果不支持或者需要的情况下我们可以自行传入仿函数&#xff0c;map底层存储数据的内存是从空间申请来的。一般情况下&#xff0c;我…...

原生稀疏注意力NSA 替换transformer 注意力进行文本生成训练

DeepSeek-R1这篇文章&#xff0c;聚焦范围更加小&#xff0c;R1的重点在于提出了一个文本生成的训练策略和蒸馏策略&#xff0c;这篇文章则是提出了一个注意力机制NSA&#xff0c;主要解决的是长序列做注意力时带来的效率问题。通篇文章看下来&#xff0c;它的实际意义可能比较…...

读书笔记:《百年孤独》

《百年孤独》加西亚.马尔克斯 著 范晔 译 读出了阅读障碍。 记不得书中的人&#xff0c;记不得书中的事&#xff0c;更不知何为孤独&#xff0c;只记得马孔多&#xff0c;这个陌生的地方&#xff0c;还有那个猪尾巴婴儿。 百年&#xff1a;故事跨越了百年 孤独&#…...

TVS管学习记录

文章目录 前言一、TVS是什么&#xff1f;二、TVS关键参数1.反向截至电压**实际意义** 2.钳位电压**定义与作用****选择依据** **4. 实际应用示例****场景&#xff1a;通信端口的ESD保护** 3.反向截至电压和钳位电压的关联和区别**. 小结** 三、实际应用电路举例总结 前言 TVS管…...

网络安全系统概述 网络安全系统分为几级

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 5级 网络信息系统安全等级保护分为五级&#xff0c;一级防护水平最低&#xff0c;最高等保为五级。分别是用户自主保护级、系统审计保护级、安全标记保护级、结构…...

基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知

写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我站在人潮中央&#xff0c;思考这日日重复的生活。我突然想&#xff0c…...

Apache Flink架构深度解析:任务调度、算子数据同步与TaskSlot资源管理机制

Apache Flink是一个分布式流处理框架&#xff0c;其核心架构设计围绕有界与无界数据流的统一处理能力展开。以下从任务分配、算子数据同步、TaskManager与JobManager的TaskSlot机制三个维度展开详细分析&#xff1a; 一、任务分配机制 Flink的任务分配基于并行度&#xff08;P…...

Linux 常见命令全解析

一、文件操作命令 1. ls ls是列出目录内容的命令。简单输入ls&#xff0c;会展示当前目录下的文件和目录列表。想要获取更详细的信息&#xff0c;比如文件权限、所有者、大小、修改时间等&#xff0c;使用ls -l。若要显示所有文件&#xff0c;包括以点&#xff08;.&#xff…...

k8s集群部署

集群结构 角色IPmaster192.168.35.135node1192.168.35.136node2192.168.35.137 部署 #需在三台主机上操作 //关闭防火墙 [rootmaster ~]# systemctl disable --now firewalld//关闭selinux [rootmaster ~]# sed -i s/enforcing/disabled/ /etc/selinux/config//关闭swap分区…...

springboot005学生心理咨询评估系统(源码+数据库+文档)

源码地址&#xff1a;学生心理咨询评估系统 文章目录 1.项目简介2.部分数据库结构与测试用例3.系统功能结构4.包含的文件列表&#xff08;含论文&#xff09;后台运行截图 1.项目简介 ​ 使用旧方法对学生心理咨询评估信息进行系统化管理已经不再让人们信赖了&#xff0c;把现…...

LeetCode37

LeetCode37 目录 题目描述示例思路分析代码段代码逐行讲解复杂度分析总结的知识点整合总结...

2025年02月24日Github流行趋势

项目名称&#xff1a;mastra 项目地址url&#xff1a;https://github.com/mastra-ai/mastra 项目语言&#xff1a;TypeScript 历史star数&#xff1a;5735 今日star数&#xff1a;1140 项目维护者&#xff1a;adeleke5140, abhiaiyer91, TheIsrael1, adeniyii, Joshuafolorunsh…...

Spring Boot 中的日志管理

一、日志框架选择 1. 主流框架对比 框架特点Spring Boot 默认支持Logback- 性能优异&#xff0c;Spring Boot 默认集成- 支持自动热更新配置文件✅ (默认)Log4j2- 异步日志性能更强- 支持插件扩展- 防范漏洞能力更好❌ (需手动配置)JUL (JDK自带)- 无需额外依赖- 功能简单&am…...

后端之JPA(EntityGraph+JsonView)

不同表之间的级联操作或者说关联查询是很多业务场景都会用到的。 对于这种需求最朴素的方法自然是手动写关联表&#xff0c;然后对被关联的表也是手动插入数据。但是手写容易最后写成一堆shit代码&#xff0c;而且修改起来也是非常麻烦的。 学会使用现成的工具还是非常有利的…...

点击修改按钮图片显示有问题

问题可能出在表单数据的初始化上。在 ave-form.vue 中&#xff0c;我们需要处理一下从后端返回的图片数据&#xff0c;因为它们可能是 JSON 字符串格式。 vue:src/views/tools/fake-strategy/components/ave-form.vue// ... existing code ...Watch(value)watchValue(v: any) …...

Linux第一个小程序-进度条 (linux第七课)

目录 知识补充: 随机数的使用,先用srand(time(NULL))种时间种子 函数指针 模拟进度条代码 知识补充: \r只是回车 \r\n是回车加换行,其中\n带有强制换行的功能 如果只使用\r ,还需要刷新缓冲区(fflush(stdout)) %2d是左对齐 %-2d是右对齐 %.1lf是小数点后保留一位 随机数的使…...

iOS指纹归因详解

iOS 指纹归因&#xff08;Fingerprint Attribution&#xff09;详解 1. 指纹归因的概念 指纹归因&#xff08;Fingerprint Attribution&#xff09;是一种无 ID 归因&#xff08;ID-less Attribution&#xff09;技术&#xff0c;主要用于广告跟踪、用户识别或流量分析。它基…...

【Erdas实验教程】009:非监督分类及分类后评价

文章目录 一、分类过程二、分类评价ERDAS 的 ISODATA 算法是基于最小光谱距离来进行的非监督分类,聚类过程始于任意聚类平均值或一个已有分类模板的平均值;聚类每重复一次,聚类的平均值就更新一次,新聚类的均值再用于下次聚类循环。这个过程不断重复,直到最大的循环次数已…...

DeepSeek+Kimi生成高质量PPT

DeepSeek与Kimi生成PPT全流程解析 一、工具分工原理 DeepSeek核心作用&#xff1a;生成结构化PPT大纲&#xff08;擅长逻辑构建与内容优化&#xff09;Kimi核心作用&#xff1a;将文本转换为视觉化PPT&#xff08;提供模板库与排版引擎&#xff09; 二、操作步骤详解 1. 通…...

conda 基本命令

1、查询当前所有的环境 conda env list 2、创建虚拟环境 conda create -n 环境名 [pythonpython版本号] 其中[pythonpython版本号]可以不写 conda create -n test python3.12 我们输入conda env list看到我们的环境创建成功了&#xff0c;但是发现他是创建在我们默认的C盘的…...

网站搭建wp

前置准备工作 需要下载Git&#xff0c;note.js&#xff0c;在官网上可以搜索并安装 搭建过程 这里借助hexo工具 1. 本地博客搭建 首先创建本地文件夹&#xff0c;并在该文件夹里面创建一个叫做hexo的文件夹在该文件夹中选择Git Bash 进入hexo官网将五条指令用bash运行运行…...

什么是图传技术?

1.什么是图传技术&#xff1f; 图传技术&#xff08;图像传输技术&#xff09;是指将摄像头或其他图像采集设备捕获的实时画面&#xff0c;通过无线通信方式传输到接收端&#xff08;如遥控器、显示屏、云端服务器等&#xff09;的技术。它广泛应用于无人机、安防监控、直播设…...

Python数据结构高级:图的表示与遍历

Python数据结构高级&#xff1a;图的表示与遍历 一、图的基本概念 1.1 图的定义与分类 图&#xff08;Graph&#xff09;是由顶点&#xff08;Vertex&#xff09;集合和边&#xff08;Edge&#xff09;集合组成的数据结构&#xff0c;形式化表示为 G (V, E) 主要分类&…...

登录-10.Filter-登录校验过滤器

一.登录校验过滤器的实现思路 我们要实现登录校验过滤器&#xff0c;就要首先明白登录校验过滤器的实现思路。登录校验过滤器是用来实现登录校验的。那么首先思考第一个问题&#xff0c;所有的请求都需要校验吗&#xff1f; 答案是否定的&#xff0c;因为login请求就不需要过滤…...

《Keras 3 : 使用迁移学习进行关键点检测》:此文为AI自动翻译

《Keras 3 :使用迁移学习进行关键点检测》 作者:Sayak Paul,由 Muhammad Anas Raza 转换为 Keras 3 创建日期:2021/05/02 最后修改时间:2023/07/19 描述:使用数据增强和迁移学习训练关键点检测器。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 关键点检测包…...

【Deepseek】AnythingLLM + Ollama

1. 下载安装 anythingllm 下载地址&#xff1a;https://anythingllm.com/desktop 2. 启动anything 点击 Get started 3.创建工作空间 4.选择Ollama大语言模型 聊天设置 当前只有一个1.5b的模型 下载完成7b模型后 选择后记得点击更新到工作空间&#xff01;&…...

VMware17下Ubuntu22.04设置本地共享文件夹

VMware17下使用Ubuntu22.04设置共享文件夹 在日常的开发与学习中&#xff0c;我们常常需要在主机&#xff08;通常是Windows系统&#xff09;和虚拟机&#xff08;如Ubuntu 22.04&#xff09;之间进行文件交换。为了简化这一过程&#xff0c;VMware提供了共享文件夹的功能&…...

【GreenHills】GHS合并库文件

1、 文档目标 解决Green Hills对于多个库文件合并问题 2、 问题场景 客户具有多个工程库文件。但是&#xff0c;客户想要在项目最终交付的时候&#xff0c;通过将多个库文件打包成一个库文件&#xff0c;进行交付。 3、软硬件环境 1&#xff09;、软件版本&#xff1a;MULTI…...

mysql-统计表占内存大小

在 MySQL 中&#xff0c;统计表占用的内存大小&#xff08;或者更准确地说&#xff0c;是表占用的磁盘空间大小&#xff09;并非一个简单的任务&#xff0c;因为MySQL的数据存储涉及多种文件&#xff0c;包括数据文件、索引文件等。不过&#xff0c;有几种方法可以帮助你估算一…...

基于SpringBoot和Leaflet的邻省GDP可视化实战

目录 前言 一、技术实现路径 1、空间数据检索 2、数据展示检索流程 二、SpringBoot后台实现 1、模型层实现 2、控制层实现 三、WebGIS前端实现 1、控制面展示 2、成果展示 四、总结 前言 在数字化浪潮席卷全球的今天&#xff0c;数据已成为驱动社会经济发展、指导政策…...

DeepSeek-R1本地部署保姆级教程

一、DeepSeek-R1本地部署配置要求 &#xff08;一&#xff09;轻量级模型 ▌DeepSeek-R1-1.5B 内存容量&#xff1a;≥8GB 显卡需求&#xff1a;支持CPU推理&#xff08;无需独立GPU&#xff09; 适用场景&#xff1a;本地环境验证测试/Ollama集成调试 &#xff08;二&a…...

DeepSeek + Mermaid编辑器——常规绘图

下面这张图出自&#xff1a;由清华大学出品的 《DeepSeek&#xff1a;从入门到精通》。 作为纯文本生成模型&#xff0c;DeepSeek虽不具备多媒体内容生成接口&#xff0c;但其开放式架构允许通过API接口与图像合成引擎、数据可视化工具等第三方系统进行协同工作&#xff0c;最终…...

推送项目 之 解决冲突

文章目录 为什么会发生冲突&#xff1f;如何解决这些冲突&#xff1f;1. **查看冲突文件**2. **解决二进制文件冲突**3. **解决文本文件冲突**4. **标记冲突已解决**5. **完成合并**6. **推送更改** 注意事项总结 问题&#xff1a;我们在git pusll拉取远程仓库的代码到本地对比…...

蓝桥杯——lcd显示

一&#xff1a;复制文件 从官方参考文件中复制相关文件&#xff0c;Src中的lcd.c&#xff0c;Inc中的lcd.h&#xff0c;fonts.h复制到自己创建的文件中 二&#xff1a;lcd初始化 在lcd.h中找到四个初始化函数&#xff0c;将其写到main文件中 三&#xff1a;写lcd显示函数 在…...

1_安装JDK和Hadoop

一、解压jdk和hadoop安装包 下载 通过百度网盘分享的文件&#xff1a;jdk-8u172-linux-x64.tar.gz 链接&#xff1a;https://pan.baidu.com/s/1VjhdpfyqdC7ivEBIjTn8tA 提取码&#xff1a;iz25 二、配置环境变量 vi /root/.bashrc添加 #set java environment export JAVA_H…...

angular简易计算器

说明&#xff1a; 用angular实现计算器效果&#xff0c;ui风格为暗黑 效果图&#xff1a; step1: C:\Users\Administrator\WebstormProjects\untitled4\src\app\calnum\calnum.component.ts import { Component } from angular/core;Component({selector: app-calnum,import…...

python 程序

gif调整尺寸.py import sys from PIL import Image,ImageSequence import os ##print(sys.argv[0]) ##print(sys.argv[1]) def gifresize(file_name): gf Image.open(file_name) ## lifetime gf.info[duration] imglist [] imgnew [] for i in ImageSequence.…...

vue3响应式数据原理

Vue 3 的响应式系统与 Vue 2 有显著不同&#xff0c;Vue 3 使用了 Proxy 替代了 Vue 2 中的 Object.defineProperty&#xff0c;这使得 Vue 3 的响应式系统更加灵活和强大 Vue 3 响应式原理的核心 Proxy&#xff1a; Vue 3 使用 Proxy 来拦截对象的操作&#xff08;如读取、赋值…...

【Godot4.3】自定义圆角容器

概述 Godot控件想要完全实现现代UI风格&#xff0c;需要进行大量的自定义组件设计。本篇就依托于笔者自己对现代UI设计中的圆角面板元素模仿来制作圆角容器组件。 圆角容器 圆角元素在现代的扁平UI设计中非常常见&#xff0c;在Godot中可以通过改进PanelContainer来或者自定…...

远程部署 Qt 应用程序套件错误原因

构建套件报红色警告错误&#xff1a; 图一&#xff1a; 改图二&#xff1a;...

vue3学习4-pinia+组件通信

集中式状态管理&#xff0c;vue2用vuex&#xff0c;vue3用pinia&#xff0c;相当于react中的redux 引入pinia pinia的具体存储都放到src/store目录下&#xff0c;每个store.js具体存储实现如下&#xff1a; 修改pinia中的数据 3种方式&#xff1a; 1、可以直接修改从pinia中读…...

GEE中的Map对象

在Google Earth Engine (GEE) 中&#xff0c;Map 是一个非常重要的对象&#xff0c;它用于显示地理数据和控制地图的交互。Map 对象提供了一系列函数&#xff0c;允许你操作和控制地图显示。以下是一些常用的 Map 函数及其使用方法&#xff1a; 1. Map.addLayer() 功能&#x…...