[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 …

java学习(7):巩固练习

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

java学习(8):巩固练习

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

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

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

keepalive日志_12.日志收集项目-数据流图以及nginx安装

数据流图nginx安装中文文档http://tengine.taobao.org/nginx_docs/cn/docs/基础依赖与安装yum -y install gcc gcc-c autoconf pcre pcre-devel make automakeyum -y install wget vim httpd-toolsyum源在官网拷贝vi /etc/yum.repos.d/nginx.repo[nginx-stable]namenginx stabl…

【算法】禁忌搜索算法(Tabu Search,TS)超详细通俗解析附C++代码实例

01 什么是禁忌搜索算法&#xff1f; 1.1 先从爬山算法说起 爬山算法从当前的节点开始&#xff0c;和周围的邻居节点的值进行比较。 如果当前节点是最大的&#xff0c;那么返回当前节点&#xff0c;作为最大值 (既山峰最高点)&#xff1b;反之就用最高的邻居节点来&#xff0c;替…

14. Java基础之泛型

一. 泛型概念的提出&#xff08;为什么需要泛型&#xff09;&#xff1f; 首先&#xff0c;我们看下下面这段简短的代码: 1 public class GenericTest {2 3 public static void main(String[] args) {4 List list new ArrayList();5 list.add("qqyum…

java学习(15):巩固练习

//任务 1 //编写控制台java程序&#xff0c;使用Scanner 对象相关方法从 //控制台接收用户输入如下数据并使用相关的局部变量接收&#xff0c;在控制台打印输出。 //老师的姓名&#xff1b;老师的性别&#xff1b;老师的工资&#xff1b;老师的年龄&#xff1b;工作时长 import…

java学习(16):巩固练习

/任务 2 编写控制台java程序&#xff0c;将以下数据使用合理类型变量进行接收赋值 3.5&#xff1b;185.59&#xff1b;8500.50 要求在控制台打印这些数据并只显示整数部分。/ import java.util.Scanner; public class test02{ public static void main(String[] args){ Scanner…

mac电脑投屏到小米盒子_苹果手机搜不到小米盒子怎么办?

刚买的小米电视盒子迫不及待想投屏&#xff0c;但是手机是苹果系统&#xff0c;都是连得同一wifi&#xff0c;可是手机就是搜索不到小米家的客厅电视&#xff0c;这种情况该怎么办呢&#xff1f;以下小编给大家详细介绍了苹果手机搜不到小米盒子该怎么办。苹果设备中搜不到小米…

Redis实现之对象(三)

集合对象 集合对象的编码可以是intset或者hashtable&#xff0c;intset编码的集合对象使用整数集合作为底层实现&#xff0c;集合对象包含的所有元素都被保存在整数集合里面。举个栗子&#xff0c;以下代码将创建一个图1-12所示的intset编码集合对象&#xff1a; 127.0.0.1:637…

java学习(17):巩固练习

//#任务 3 //#已知有三个人&#xff0c;张无忌&#xff0c;任盈盈&#xff0c;任我行。当前只知道任盈盈的年龄 //#可以被用户从控制台输入&#xff0c;并且用户可以告知任盈盈的年龄比张无忌的年龄小几岁&#xff0c; //#任我行年龄是张无忌和任盈盈年龄和还要大几岁&#xff…

mysql innodb redolog_MySQL · 引擎特性 · InnoDB redo log漫游(转)

前言InnoDB 有两块非常重要的日志&#xff0c;一个是undo log&#xff0c;另外一个是redo log&#xff0c;前者用来保证事务的原子性以及InnoDB的MVCC&#xff0c;后者用来保证事务的持久性。和大多数关系型数据库一样&#xff0c;InnoDB记录了对数据文件的物理更改&#xff0c…

Jenkins配置:添加用户和管理权限

Jenkins配置&#xff1a;添加用户和管理权限 参考文章&#xff1a;http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html 今天给大家说说使用Jenkins专有用户数据库的配置&#xff0c;和一些常用的权限配置。 配置用户注册 在新安装好的jenkins中&#xff0c;默认是没有设置用户…

java学习(18):巩固练习

/任务 4 白大壮和白二壮是双胞胎兄弟&#xff0c; 白大壮的身高增加1厘米正好是白二壮的身高 &#xff0c;白二壮体重正好是妹妹白无瑕体重&#xff0c;编写程序完成白大壮 和白二壮身高的计算并输出&#xff0c;并计算白无瑕的体重输出是多少/ import java.util.Scanner; publ…

java-appium-527进阶-1 UiAutomator12区别和封装

1.UiAutomator和UiAtumator2的区别&#xff1a; 1.1 UiAutomator1有关于id定位的策略 UiAutomator1 id定位在resourceid匹配失败时&#xff0c;会匹配contentDesc。 安卓会根据id进行3种情况的判断&#xff1a; 1.resourceId 如user_profile_icon2.accessibility id3.Strings.…

java学习(19):巩固练习

/任务 5 有三位老师&#xff0c;王老师&#xff0c;孙老师和小李老师&#xff0c; 王老师工龄最长(15年)&#xff0c;孙老师工龄比王老师小3年&#xff0c; 小李老师工龄最短&#xff0c;是王老师和孙老师工龄和的二分之一 再除以2的余数正好是他的工龄&#xff0c;编写程序从控…

mysql分组获取其他字段_sqlserver group by后获取其他字段(多种方法)

大家都知道用group by的话&#xff0c;select 后面指定的字段必须与group by后面的一致。group by 只有个别字段&#xff0c;如果拿出其他未分组的字段信息呢&#xff1f;在网上搜了下&#xff0c;总结如下&#xff1a;使用了group by 之后&#xff0c;就要求select后面的字段包…

搜索引擎基础概念(1)—— 倒排索引

“ 吾有三剑&#xff0c;唯子所择&#xff1b;皆不能杀人&#xff0c;且先言其状。一曰含光&#xff0c;视之不可见&#xff0c;运之不知有。其所触也&#xff0c;泯然无际&#xff0c;经物而物不觉。二曰承影&#xff0c;将旦昧爽之交&#xff0c;日夕昏明之际&#xff0c;北面…