NOIP 2003 神经网络
洛谷 P1038 神经网络
https://www.luogu.org/problemnew/show/P1038
JDOJ 1278: [NOIP2003]神经网络 T1
https://neooj.com:8082/oldoj/problem.php?id=1278
题目请自点链接,太麻烦了。
思路解析:
一开始看这道题不是很难,想了想就去做,后来发现这题的坑点细节比较多,需要一一讲解处理。
正解-拓扑排序。
为什么要用拓扑排序呢?
不知道大家怎么想,在做这道题之前,在我印象中用拓扑排序的题大概都长这样:
A打败了B,B打败了D...等类似模型。
所以我并没有深入地理解拓扑排序。
所谓的拓扑排序,其实就是有向图拓展的一种序列。
我们这道题给出了一个求和公式(说到求和公式,这需要数学知识,我一开始也看不懂,后来查了百科看了题解才勉强整明白...)
说明每一个顶点的C值需要从上一个节点处递推。
再结合这道题有向图的本体。
自然而然地想出求拓扑序。
拓扑排序的模板请大家自行参照水题学习,这道题需要有一点点变化(绝对不多!!
AC 代码如下:
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
queue<int> q;
int n,p,cnt;
int chudu[],v[],c[];
int tot,to[],val[],nxt[],head[],from[];
struct answer
{
int id,val;
}ans[];
void add(int x,int y,int z)
{
to[++tot]=y;
val[tot]=z;
nxt[tot]=head[x];
from[tot]=x;
head[x]=tot;
}
bool cmp(answer a,answer b)
{
return a.id<b.id;
}
int main()
{
scanf("%d%d",&n,&p);
for(int i=;i<=n;i++)
{
int u;
chudu[i]=;
scanf("%d%d",&c[i],&u);
if(c[i])
{
q.push(i);
v[i]=;
}
else
c[i]-=u;
}
for(int i=;i<=p;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
chudu[x]=;
}
while(!q.empty())
{
int x=q.front();
q.pop();
for(int i=head[x];i;i=nxt[i])
{
if(c[from[i]]<=)
continue;
int y=to[i];
c[y]+=(val[i]*c[x]);
if(v[y]==)
{
q.push(y);
v[y]=;
}
}
}
for(int i=;i<=n;i++)
if(c[i]> && chudu[i]==)
{
ans[++cnt].id=i;
ans[cnt].val=c[i];
}
if(cnt==)
{
printf("NULL");
return ;
}
sort(ans+,ans+cnt+,cmp);
for(int i=;i<=cnt;i++)
printf("%d %d\n",ans[i].id,ans[i].val);
return ;
}
我jio得大家应该能看懂。
NOIP 2003 神经网络的更多相关文章
- NOIP 2003解题报告
第一题(神经网络): 题目大意,给出一些点,每个点都有2个值,c和u,给出一些有向边,权值为w.入度为0的点的c已知,其它点的c未知,每个入度不为0的点node的c等于sum(c[k]*w[k][no ...
- noip 2003 传染病控制(历史遗留问题2333)
/*codevs 1091 搜索 几个月之前写的70分 今天又写了一遍 并且找到了错误 */ #include<cstdio> #include<vector> #define ...
- [COGS 0107][NOIP 2003] 传染病控制
107. [NOIP2003] 传染病控制 ★★★ 输入文件:epidemic.in 输出文件:epidemic.out 简单对比时间限制:1 s 内存限制:128 MB [问题背景] ...
- 【NOIP 2003】 加分二叉树
[题目链接] 点击打开链接 [算法] 树形DP即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 50 in ...
- NOIP 2003 乒乓球
洛谷 P1042 乒乓球 https://www.luogu.org/problemnew/show/P1042 JDOJ 1363: [NOIP2003]乒乓球 T1 https://neooj.c ...
- NOIP 2003 栈
洛谷 P1044 栈 洛谷传送门 JDOJ 1291: [NOIP2003]栈 T3 JDOJ传送门 题目描述 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两 ...
- 【算法•日更•第十期】树型动态规划&区间动态规划:加分二叉树题解
废话不多说,直接上题: 1580:加分二叉树 时间限制: 1000 ms 内存限制: 524288 KB提交数: 121 通过数: 91 [题目描述] 原题来自:NOIP 20 ...
- 【入门OJ】2003: [Noip模拟题]寻找羔羊
这里可以复制样例: 样例输入: agnusbgnus 样例输出: 6 这里是链接:[入门OJ]2003: [Noip模拟题]寻找羔羊 这里是题解: 题目是求子串个数,且要求简单去重. 对于一个例子(a ...
- 【2003、2004 NOIp 入门组错题报告】
2003: T4: 题目大意: 讲这么多话,其实就是求比当前序列大的序列中第m小的一个.可以每次找出比当前序列大的最小的一个序列.我们可以从后往前扫描,当当前这个数比后一个数小时,我们把它与它后面的 ...
随机推荐
- github README.md创建不了
在项目主页上,点击‘Add a README’按钮,如下图: 进入编辑界面,编辑好内容后,提交按钮的状态为灰化不可点击,如下图: 不知道为什么会出现这种情况,但是我无意中点击了Ctrl+Enter竟然 ...
- VS2017 无法解析的外部符号 __vscwprintf
我是将VS2012 升级到VS2017,然后对以前的项目重新编译, 就出现了下面错误 错误 LNK2019 无法解析的外部符号 __imp__vsnprintf,该符号在函数 *******中被引用 ...
- PMP图表(必背)
- 项目倒入maven 遇到的问题只有 main 了
归根结底是倒入错了: (1)首先 view->Toolbar; (2) 点击 File==>project structure 然后:在 project settings中点击 modu ...
- pycharm python @符号不能识别 NameError: name 'app' is not defined
pycharm python @符号不能识别 NameError: name 'app' is not defined 解决办法: 缺少:app = Flask(__name__) # 导入Flask ...
- docker入门与部署微服务--学习笔记
最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...
- Go命令行—compile
常用作编译命令行指定的单个go源码包.会生成一个以文件.o为后缀的目标文件,其文件名与包内第一个源文件的文件名相同. 目标文件可以与其他对象组合成一个包档案或直接传递给链接器(go tool link ...
- 机器学习(八)--------支持向量机 (Support Vector Machines)
与逻辑回归和神经网络相比,支持向量机或者简称 SVM,更为强大. 人们有时将支持向量机看作是大间距分类器. 这是我的支持向量机模型代价函数 这样将得到一个更好的决策边界 理解支持向量机模型的做法,即努 ...
- Spring源码系列 — Bean生命周期
前言 上篇文章中介绍了Spring容器的扩展点,这个是在Bean的创建过程之前执行的逻辑.承接扩展点之后,就是Spring容器的另一个核心:Bean的生命周期过程.这个生命周期过程大致经历了一下的几个 ...
- springboot只能一个main方法解决办法
pom.xml修改properties,增加这行 <start-class>com.eshore.main.SpringBootStarter</start-class> 或者 ...