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小的一个.可以每次找出比当前序列大的最小的一个序列.我们可以从后往前扫描,当当前这个数比后一个数小时,我们把它与它后面的 ...
随机推荐
- CF-weekly4 F. Kyoya and Colored Balls
https://codeforces.com/gym/253910/problem/F F. Kyoya and Colored Balls time limit per test 2 seconds ...
- 用Python爬取猫眼上的top100评分电影
代码如下: # 注意encoding = 'utf-8'和ensure_ascii = False,不写的话不能输出汉字 import requests from requests.exception ...
- 获取Kafka每个分区最新Offset的几种方法
目录 脚本方法 Java 程序 参考资料 脚本方法 ./bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhos ...
- 多维度对比5款主流分布式MQ消息队列,妈妈再也不担心我的技术选型了
1.引言 对于即时通讯网来说,所有的技术文章和资料都在围绕即时通讯这个技术方向进行整理和分享,这一次也不例外.对于即时通讯系统(包括IM.消息推送系统等)来说,MQ消息中件间是非常常见的基础软件,但市 ...
- 查看xml源码的方法
查看xml源码的方法 要通过查看源码才能看到xml源码 因为 print_r输出的时候 默认页面打开是html编码的...... 所以解析不了xml
- 七、Spring之深入理解AOP源码
Spring之深入理解AOP源码 在上一篇博文中,我们对AOP有了初步的了解,那么接下来我们就对AOP的实现原理进行深入的分析. 在之前写的那个AOP示例代码当中有这样一个注解:@Enable ...
- mysql-5.7.23-winx64 解压版详细安装教程
1.下载解压版: 2.配置环境变量 (1)新建MYSQL_HOME变量,并配置值为: C:\softwaretool\mysql-5.7.23-winx64 计算机→属性→高级系统设置→高级→环境变量 ...
- .NET Core 2.1 以下的控制台应用程序生成 EXE,且使用命令行参数动态运行控制器应用程序的示例
文章: https://stackoverflow.com/questions/44038847/vs2017-compile-netcoreapp-as-exe 引用 <ItemGroup&g ...
- WPF Xaml中创建集合
首先在xaml中创建集合是一个不可取的方法. 本方法仅作为xaml的学习. 本文略微无聊,主要是编写的东西都是老玩意. 首先是定义一个类,作为你要加载集合的模型. 结构如下 internal clas ...
- img error 图片加载失败的最佳方案
有时候, 当img的src加载失败, 会显示缺省碎片图片, 影响用户体验. 有一个js事件onerror就派上了用场. 它可以在加载失败时, 显示缺省的图片. 它有两种使用方式. 第一种: 使用纯 ...