[HAOI2016]食物链

题目描述

如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数。物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3......am-1 bm-1am bm其中ai bi表示能量从物种ai流向物种bi,注意单独的一种孤立生物不算一条食物链

输入输出格式

输入格式:

第一行两个整数n和m,接下来m行每行两个整数ai bi描述m条能量流动关系。(数据保证输入数据符号生物学特点,且不会有重复的能量流动关系出现)1<=N<=100000 0<=m<=200000题目保证答案不会爆 int

输出格式:

一个整数即食物网中的食物链条数


lv神考试也不知道是Day几,反正是T2,然后T1是期望dp

上来看了一眼,然后写了记忆化搜索,毕竟没有什么思维难度

转移也很简单,只要记录以每个点为终点的食物链数量,然后将没有天地的生物的食物链数相加即可

简单到飞起

下面给出代码:

}return f[x];
}
int main(){n=rd();m=rd();for(int i=1;i<=m;i++){int x,y;x=rd();y=rd();add(y,x);book[x]=1;vis[x]++;vis[y]++;}for(int i=1;i<=n;i++) if(!book[i]&&vis[i]) ans+=find(i,0);printf("%d",ans);return 0;
}

然后你以为结束了?

不不不,我发现机房除了我好像都是拓扑排序,所以我打算用一波新操作

我们很明显的可以看出这是个DAG,然后排序,然后再来一个简单的转移

把后面的转给前面的,因为是营养级高的先进队

(其实是为了写博客才写的,但是调了好久QAQ)

下面给出代码:(因为不经常写拓扑,所以比较丑)

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
inline int rd(){int x=0,f=1;char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;for(;isdigit(c);c=getchar()) x=x*10+c-'0';return x*f;
}
inline void write(int x){if(x<0) putchar('-'),x=-x;if(x>9) write(x/10);putchar(x%10+'0');
}
int n,m;
int head[1000006];
int nxt[1000006],to[1000006];
int total=0;
int in[1000006];
void add(int x,int y){total++;to[total]=y;nxt[total]=head[x];head[x]=total;return ;
}
int q[1000006];
int book[1000006];
int tot=0;
void topo(){for(int i=1;i<=n;i++) if(!in[i]&&book[i]) q[++tot]=i;for(int i=1;i<=tot;i++){for(int e=head[q[i]];e;e=nxt[e]){in[to[e]]--;if(!in[to[e]]) q[++tot]=to[e];}}return ;
}
int dp[1000006];
int in2[1000006];
int vis[1000006];
int x[1000006],y[1000006];
int main(){n=rd(),m=rd();for(int i=1;i<=m;i++){x[i]=rd();y[i]=rd();add(x[i],y[i]);in[y[i]]++;in2[y[i]]++;vis[x[i]]++;book[x[i]]++;book[y[i]]++;}topo();int ans=0;memset(head,0,sizeof(head));for(int i=1;i<=m;i++) add(y[i],x[i]);for(int i=1;i<=tot;i++){if(!in2[q[i]]) dp[q[i]]=1;else for(int e=head[q[i]];e;e=nxt[e]) dp[q[i]]+=dp[to[e]];if(!vis[q[i]]) ans+=dp[q[i]];}printf("%d",ans);return 0;
}

 

转载于:https://www.cnblogs.com/WWHHTT/p/9726996.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java学习(6):数据类型

public class Shortdata{ public static void main(String[] args){ byte by 45; short sho 32767; System.out.println(“sho的值是”sho); //获取最大值 System.out.println(Byte.MAX_VALUE); System.out.println(Short.MAX_VALUE); //获取最小值System.out.println(Byte.M…

Xcode添加pch文件

1.打开Xcode工程. 在Supporting Files目录下,选择 File > New > File > iOS > Other > PCH File 然后点击下一步&#xff1b; 2.如果项目名称为Demo, PCH 文件的名字为Test.pch,然后创建&#xff1b;3.选择 PCH 文件创建Test.pch文件4.找到 Project > Build …

共轭方式怎么判断_怎样判断共轭双烯

本章重点共轭二烯烃的结构,共轭二烯烃的性质及制法,共轭 效应及其相对强弱。 本章难点共轭二烯烃的结构和性质,共轭效应及其相对强弱,周 环反应及共振论的概念。 ...第六章 烯烃 共轭二烯烃 1 分类 命名 6.1.1二烯烃的分类 二烯烃包括...6-3 共轭二烯烃 一. 二烯烃的分类、命名…

java学习(7):巩固练习

//任务1 //使用记事本或其他文本编辑器编写一个java控制台程序&#xff0c;定义一个包含main方法的java类&#xff0c;在main方法中使用合适的数据类型定义如下局部变量&#xff0c;标识符要严格遵守java规范。 //学生姓名&#xff1b;学生年龄&#xff1b;学生身高&#xff0c…

js fn无法访问,不报错

GD_List.prototype.test function(){}无法访问&#xff0c;浏览器console不报错。 附带条件&#xff1a; 1.其它某些fn能访问。 2.test是放在某些fn中的。 错误原因&#xff1a;fn命名冲突&#xff08;存放test&#xff09;&#xff0c;js调用了另外一个同名fn&#xff08;没存…

unionall mysql_5分钟了解MySQL5.7union all用法的黑科技

wKiom1f8bNajxqWNAAA4eVx2Dz8965.jpgwKioL1f8bNbCZ-bgAAA4pG6yXEQ597.jpgMySQL5.7union all用法的黑科技union all在MySQL5.6下的表现Part1:MySQL5.6.25[rootHE1 ~]# mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL conn…

java学习(8):巩固练习

//任务2 编写控制台程序将以下给定的整数常量用合适的变量接收并将其10进制值与二进制表示形式分别输出打印在控制台界面 //55&#xff1b;666&#xff1b;1080&#xff1b;2500&#xff1b;78451&#xff1b; public class test02{ public static void main(String[] args){ /…

微信公众号开发经验总结

微信公众号开发经验总结 1. 快捷访问 1.1 测试公众号注册&#xff1a; http://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login 1.2 微信公众号开发指南&#xff1a; https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432 1.3 …

java学习(9):巩固练习

/** 任务 3 根据视频教学编写一个java控制台程序使用正确方式定义 #静态变量或静态常量存储以下描述的数据并在控制台界面打印这些数据&#xff0c; #并书写标准文档&#xff0c;方法&#xff0c;及相关注释&#xff1a; #一年之中季节有几个&#xff1b; #一个星期有几天&…

mysql 分页算法_MySQL高效的分页算法

PERCONA PERFORMANCE CONFERENCE 2009上&#xff0c;来自雅虎的几位工程师带来了一篇”Efficient Pagination Using MySQL“的报告&#xff0c;有很多亮点&#xff0c;本文是在原文基础上的进一步延伸。首先看一下分页的基本原理&#xff1a;mysql> explain SELECT * FROM m…

java学习(10):数据类型

对于java的数据类型&#xff0c;既熟悉又陌生&#xff0c;于是整理了这篇文档。 最近的面试让我开始注意细节&#xff0c;细节真的很重要。 首先&#xff0c;我们知道在JAVA中一共有八种基本数据类型&#xff0c;他们分别是 byte、short、int、long、float、double、char、bool…

wordpress安装_WordPress第三课:使用SOFTACULOUS安装WORDPRESS

在精简的过程中&#xff0c;你会发现你更加明确想要什么&#xff01;目标变得明确&#xff0c;生活也将变得清晰。安装WordPress最简单的方法是使用自动安装程序&#xff0c;这是一个特殊的工具&#xff0c;可以在你的网站上安装程序。大多数虚拟主机都会提供一个自动安装程序作…

java学习(11):Java数据类型转换

&#xff08;自动转换和强制转换&#xff09; 数据类型的转换&#xff0c;分为自动转换和强制转换。自动转换是程序在执行过程中“悄然”进行的转换&#xff0c;不需要用户提前声明&#xff0c;一般是从位数低的类型向位数高的类型转换&#xff1b;强制类型转换则必须在代码中声…

java学习(12):i++和++i的区别

先上代码&#xff1a; public static void main(String args[]) { int A 1; int B 10; int C 100; int D 1000; System.out.println(A);System.out.println(B);System.out.println(C C);System.out.println(C);System.out.println(D D);System.out.println(D); }在来运行…

对于高维数组抽象性质的理解

对于数组的维数理解&#xff0c;应该清楚的认识到&#xff0c;一维数组是“线性的”的&#xff0c;二维数组是“平面”的&#xff0c;而三维数组时“立体”的&#xff0c;其不仅反映了其在计算机中物理储存层面上的描述&#xff0c;同时也表现了其抽象模型的性质&#xff0c;而…

java学习(13):scanner中的方法

//Scanner类中的方法 //优点一: 可以获取键盘输入的字符串 //优点二: 有现成的获取int,float等类型数据&#xff0c;非常强大&#xff0c;也非常方便&#xff1b; public static void ScannerTest(){ Scanner sc new Scanner(System.in); System.out.println(“ScannerTest, P…

php mysql注册登录界面_php实现登录注册界面

php实现登录注册界面首先你要搭建一个自己的数据库我用wamp64创了一个people的数据库具体操作可以参考该搭建链接&#xff1a;这里就讲下我实现的功能代码&#xff1a;创建sql.func.php实现一些基本函数功能/***弹框*/function_alert($_info){echo"";exit;}/*** _loc…

Python全栈开发——面向对象的三大特性(继承 多态 封装)

1.继承 1.两层意思 改变和扩展&#xff08;详细看随笔继承和组合&#xff09; 2.多态&#xff08;体现在运行时的状态&#xff09; 1.不同的类可以调用相同的方法&#xff0c;得到不同的结果 2.实际上是继承的一种体现机制 class H2o:def __init__(self,name,temperature):se…

exp/imp和expdp/impdp在功能上的区别:

exp/imp和expdp/impdp在功能上的区别&#xff1a;   1、把用户usera的对象导入到userb   emp/imp用法&#xff1a;   formuserusera touseruserb;   empdp/impdp用法&#xff1a;   remap_schema‘usera’:‘userb’   例如&#xff1a;   imp system/password f…

Java_枚举

枚举 JDK1.5引入枚举类型, 枚举类型的定义包括枚举的声明和枚举体 enum Season {SPRING, SUMMER, AUTUMN, WINDER } 所有的枚举类型隐性的继承来自java.langEnum, 枚举实质上还是类, 而每个被枚举的成员实质就是一个枚举类型的实例, 它们默认都以public static final修饰, 可以…