EVERYTHING HAPPENS FOR THE BEST|

wnsyou

园龄:2年4个月粉丝:19关注:16

2023-03-14 12:30阅读: 31评论: 0推荐: 0

P1038 神经网络 题解

神经网络

题意

n 个节点和 p 条边。

每个节点可以长成这样:

每个节点都有一个内在参数 ui,还有一个状态 ci

节点按照一定顺序排列,可分为三种类型:输入层,中间层和输出层,每个节点只可从上一层接受信息,向下一层传递信息。

对于每个点的状态,有以下公式:

ci=((j,i)Ewj,i×cj)ui

其中 wj,i 为一条从节点 j 转移到节点 i 的边上的边权。

ci>0 时,该节点可以向它连向的节点发送信号,否则就不行。


给定了每个节点的初始状态和内在参数,p 条有向边从 xi 连向 yi,边权为 wxi,yi

不是输入层的节点初始状态一定为 0

请求出所有 ci>0 的输出层节点的编号还有最终状态(就是 ci),如果没有则输出 NULL

数据范围

  • 1n100
  • 两个节点直接最多只有一条边

思路

很明显,这里不会有环和重边,拓扑序也可以轻松发现。

那么这题就是拓扑排序的天下了,在求拓扑序的同时去求一下 ci 即可。

细节

1 公式

只有 ci>0 时才可以向其他点发送信号,同理也只有当 cj>0 时才可以从这个点接收信号

也就是说,公式可以变成这样:

ci=((j,i)E,cj>0wj,i×cj)ui

2 逻辑

题意中有一个逻辑坑点:

不是输入层的节点初始状态一定为 0

并没有说输入层的节点初始状态一定不为 0,所以要稍加小心(只是代码逻辑问题,对答案并不能产生影响,因为输入层节点初始状态若为 0,那么也是不可以向下一层传输信号的)

3 分类

输入层的节点不参与公式计算,即不会减去内在参数。

复杂度

  • 时间:O(n+m)
  • 空间:O(n+m)

Code

点击查看代码
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
struct node {
int f, u;
} a[110];
struct Node {
int x, y;
};
int n, m, ansf, x, y, z, b[110], c[110];
vector<Node> v[110];
void dfs (int x) {
b[x]--; // 相当于一种标记
if (!a[x].f) { // 不是输入层
c[x] -= a[x].u; // 减去内在参数
}
for (auto i : v[x]) {
b[i.x]--;
if (c[x] > 0) { // 只有当前点的ci>0时才可以发送信号
c[i.x] += c[x] * i.y; // 公式套上
}
if (!b[i.x]) { // 这个点计算完了
dfs(i.x); // 调用一下
}
}
}
int main(){
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i].f >> a[i].u; // 初始状态和内在参数
}
for (int i = 1; i <= m; i++) {
cin >> x >> y >> z;
v[x].push_back({y, z}); // 边
b[y]++;
}
for (int i = 1; i <= n; i++) {
if (a[i].f) { // 输入层
c[i] = a[i].f;
dfs(i);
}
}
for (int i = 1; i <= n; i++) {
if (!v[i].size() && c[i] > 0) { // 输出层且满足要求
cout << i << ' ' << c[i] << '\n'; // 输出一下
ansf = 1; // 标记有答案
}
}
if (!ansf) { // 没有答案,输出NULL
cout << "NULL";
}
return 0;
}

本文作者:wnsyou の blog

本文链接:https://www.cnblogs.com/wnsyou-blog/p/17214119.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wnsyou  阅读(31)  评论(0编辑  收藏  举报
  1. 1 勝利への道 安藤浩和
  2. 2 Minecraft’s End Eric Fullerton
  3. 3 月光曲完整版 贝多芬 云熙音乐
  4. 4 平凡之路 (Live版) 朴树
  5. 5 Minecraft C418
  6. 6 Paradise NiziU
  7. 7 叫我,灰原哀 龙大人不喷火
  8. 8 心机之蛙,一直摸你肚子 ——《名侦探柯南》原创同人曲 炊饭,叶辞樱,温海,寒砧,南柯柯,小茜玛姬,盛姝,阿崔Ac,贝壳初,千湛,兮茶子DaYu,乔慕,黎鹿北,起千温卿,遮阳伞,曲悠
  9. 9 战 歌 此去经年
叫我,灰原哀 - 龙大人不喷火
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 龙大人不喷火

作曲 : 纯哲不咕咕

编曲 : REVIVAL MUSIC

和声编写 : 胡佳弈

音源:灰原哀

这位就是从今天起要跟大家一起念书的灰原哀同学

什么嘛 摆一张臭脸

她好冷淡哦

我想她一定是紧张啦

我是海底逃出的鲨鱼

请多指教

不太礼貌 给你们警告

有我朋友出现的地方都会有人死掉

奇妙的 营造了

名侦探的名号

情报 是我 发出的信号

帮他 抓住这病号

就是 杀戮的殉道 者

你是否听到了

滴滴滴滴 炸弹的声音

听清叮咛 灵光乍现的分析 一半都靠我

当然不是小女孩 数理化信手都拈来

可御可萝不可得的女天才

丢失的挂件 达咩哟

抽丝的毛线 达咩哟

就拜托你帮忙开门 该死的静电 达咩哟

过时的行头 达咩哟

车内的停留 达咩哟

当爹当妈一级怪人 可怜的琴酒 达咩哟

重新开始希望也不会属于我

就像地平线送来朝阳又等待日落

天空走漏风声让我时刻保持沉默

黑色子弹划过 沉入夜色如墨

或许只有更沉的夜才更适合烟火

当我仰望天空在我眼中映下星河

这盛大的绚烂让我不再逃避闪躲

当我看向身侧 并非孤身一个

出谋划策 找寻下落

由我负责其中大多 数

小女孩也该有的酷

只有我能秀得住

就微笑看他 mz 枪发射

少年侦探队的家伙

或许应该对他们说

我的朋友 阿里嘎多

Baby 叫我 灰原哀

女孩心思 会难猜

我从反派反外 正义的板块 幕后的凶手被掩盖

就让我静静地等待着绯色的子弹壳穿过了他的胸膛

到最后那一刻或许我长大了不适合停留在谁的身旁

这些不会改变我

从来学不会软弱

看我 微笑的弧度 表演的无助

吸引更多人反侧

把你拐到梦想国度看焰火

我才是最完美的罪犯没有留下线索

丢失的挂件 达咩哟

抽丝的毛线 达咩哟

就拜托你帮忙开门 该死的静电 达咩哟

过时的行头 达咩哟

车内的停留 达咩哟

当爹当妈一级怪人 可怜的琴酒 达咩哟

重新开始希望也不会属于我

就像地平线送来朝阳又等待日落

天空走漏风声让我时刻保持沉默

黑色子弹划过 沉入夜色如墨

或许只有更沉的夜才更适合烟火

当我仰望天空在我眼中映下星河

这盛大的绚烂让我不再逃避闪躲

当我看向身侧 并非孤身一个

命运的天平我早就被放入了一边的托盘

另一边是药物枪火还有一把多兰

这首歌就要播完 或许不该有遮拦

最后一句就像生命我选择押在了柯南

嗯哼 我乱说的 干嘛这么认真啊

加载中…

{{tag.name}}

{{tran.text}}{{tran.sub}}
无对应文字
有可能是
{{input}}
尚未录入,我来提交对应文字
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示