当前位置: 首页 > 编程日记 > 正文

[bzoj4562][Haoi2016]食物链_记忆化搜索_动态规划

食物链 bzoj-4562 Haoi-2016

题目大意:给你n个点,m条边的DAG,求所有的满足条件的链,使得每条链的起点是一个入度为0的点,中点是一条出度为0的点。

注释:$1\le n\le 10^5$,$1\le m\le 2*10^5$。

想法:考试T2,全场切

动态规划

状态:dp[i]表示从这个点到出度为0的点的方案数。

转移:dp[i]+=dp[to[i]]

然后用记忆化爆搜即可。

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#define MOD 1000000007 
#define N 100010 
#define M 200010 
using namespace std;
typedef long long ll;
ll dp[N];
int num[N];
char s[N][100];
map<string,int>mp;
// ll stack[M<<1];
// ll val(int a)
// {
// 	ll ans1=1,ans2=1,ans3=1;
// 	int k=strlen(s[a]+1);
// 	for(int i=1;i<=k/3;i++) ans1=ans1*(s[i]-'0')%mod;
// 	for(int i=k/3+1;i<=k/3*2;i++) ans2=ans2*(s[i]-'0')%mod;
// 	for(int i=k/3*2+1;i<=k;i++) ans3=ans3*(s[i]-'0')%mod;
// }
struct Node
{int val,id,now;
}qqq[N];
// int map[1000000];
int head[N],to[M],nxt[M],tot;
inline void add(int x,int y)
{to[++tot]=y;nxt[tot]=head[x];head[x]=tot;
}
int dfs(int pos,int fa)
{if(dp[pos]) return dp[pos];for(int i=head[pos];i;i=nxt[i]){if(to[i]==fa) continue;dp[pos]+=dfs(to[i],pos);dp[pos]%=MOD;}if(dp[pos]==0) dp[pos]=1;return dp[pos]%MOD;
}
inline bool cmp1(Node o,Node oo)
{return o.val<oo.val;
}
inline bool cmp2(Node o,Node oo)
{return o.id<oo.id;
}
ll sum[N];
int main()
{// freopen("chain.in","r",stdin);// freopen("chain.out","w",stdout);ll ans=0,/* top=0, */cnt=0;int m;scanf("%*d%d",&m);// puts("Fuck");for(int i=1;i<=m;i++){string s1,s2;cin >> s1 >> s2 ;if(!mp[s1]) mp[s1]=++cnt;if(!mp[s2]) mp[s2]=++cnt;add(mp[s1],mp[s2]);num[mp[s1]]++;sum[mp[s2]]++;// scanf("%s%s",s[1]+1,s[2]+1);// int x=val(1),y=val(2);// printf("Bitch %d %d\n",x,y);// top+=2;// stack[++top]=x,stack[++top]=y;// qqq[top-1].val=x,qqq[top].val=y;// qqq[top-1].id=top-1,qqq[top].id=top;// add(x,y);}// sort(qqq+1,qqq+top+1,cmp1);// qqq[0].val=qqq[1].val-1;// for(int i=1;i<=top;i++)// {// 	if(qqq[i-1].val!=qqq[i].val) cnt++;// 	qqq[i].now=cnt;// }// for(int i=1;i<=top;i++)// {// 	printf("Woc %d   %d\n",qqq[i].val,qqq[i].now);// }// sort(qqq+1,qqq+top+1,cmp2);// for(int i=1;i<=top;i++)// {// 	printf("Fuck %d\n",qqq[i].now);// }// for(int i=2;i<=top;i+=2)// {// 	add(qqq[i-1].now,qqq[i].now);// 	sum[qqq[i].now]++;// 	maxnow=max(maxnow,sum[qqq[i].now]);// 	maxnow=max(maxno)// }for(int i=1;i<=cnt;i++){if(!sum[i]&&!num[i]) continue;if(!sum[i]) ans+=dfs(i,0);// printf("CaoNiMa %d\n",i);}// for(int i=1;i<=cnt;i++)// {// 	printf("EYWR %lld\n",dp[i]);// }printf("%lld\n",ans);return 0;
}

小结:先想到dp是关键。学长写的全是什么toposort..都是O(n)的...

转载于:https://www.cnblogs.com/ShuraK/p/9301714.html

相关文章:

Apache源码包在LINUX(CENTOS6.8)中的安装(出现问题及解决)

任务&#xff1a;在CENT6.8系统中安装Apache&#xff08;版本为&#xff1a;httpd-2.4.41&#xff09; 前提&#xff1a;由于源码包必须先编译后安装&#xff0c;所以必须先安装编译器&#xff1a;gcc 理论步骤&#xff1a; 1.检测gcc软件包&#xff0c;如果不存在则进行安装。…

append函数_连载|想用Python做自动化测试?函数的参数传递机制及变量作用域

“ 这一节有点难。看不懂没关系。继续往后学&#xff0c;回头再来看。”10.6 函数参数传递的机制10.6.1 值传递与引用传递编程语言的参数传递机制通常有两种&#xff1a;值传递拷贝参数的值&#xff0c;然后传递给函数里的新变量。这样&#xff0c;原变量和新变量之间互相独立&…

PowerDesigner生成数据库

此文中图片不小心被删除了&#xff0c;特重写了PowerDesigner生成数据库修改 一、 用POWERDESIGNER生成数据库 FILE&#xff0d;》NEW 在MODEL NAME中输入模版名 在DBMS中选择要连接的数据库类型 点击确定 确定后出现如下页面 选中工具条面版上的 表按钮 在…

随想_8_Windows_XP_Explorer_错误

最近发现微软的系统的稳定性&#xff0c;还是有待提高啊&#xff0c;这不XP SP3的资源管理器&#xff0c;就犯毛病了&#xff0c;俗话说有图 有真相&#xff0c;各位请看&#xff1a; 大家看&#xff0c;资源管理器左边的导航栏&#xff0c; 就可以发现&#xff0c;里面很多东西…

webpack笔记(6)调试模式

在配置devtool时&#xff0c;webpack给我们提供了四种选项。 source-map:在一个单独文件中产生一个完整且功能完全的文件。这个文件具有最好的source map,但是它会减慢打包速度&#xff1b;cheap-module-source-map:在一个单独的文件中产生一个不带列映射的map&#xff0c;不带…

nicstat命令安装与分析

nicstat安装包下载与安装&#xff1a; wget https://downloads.sourceforge.net/project/nicstat/nicstat-1.95.tar.gz tar -zxvf nicstat-1.95.tar.gz cd nicstat-1.95 cp Makefile.Linux Makefile vi Makefile 后修改 CFLAGS $(COPT) make && make install //…

component是什么接口_【Android每日一题】从Activity创建到View呈现中间发生了什么?...

前言前段时间公司招人&#xff0c;作为面试官&#xff0c;我经常让面试者简述View的绘制流程。他们基本都能讲明白View的测量(measure)、布局(layout)、绘制(draw)等过程。还有少数人会提到DecorView和ViewRootImp的作用。但是&#xff0c;当我继续追问关于Window的内容时&…

wp 删除独立存储空间文件(多级非空文件夹删除)

void DelFile(string unZipFilePath)//unZipFilePath第一次传递的是根目录名 { using (var store IsolatedStorageFile.GetUserStoreForApplication()) { if (store.DirectoryExists(unZipFilePath)) { …

重拾博客小序与杂思

寒假期间&#xff0c;条件所限&#xff0c;不能上网&#xff0c;也不能更新博客。寒假结束&#xff0c;懈怠了两个星期&#xff0c;打算重拾博客&#xff0c;继续更新。这学期&#xff08;2012年2月到2012年8月&#xff09;在专业学习上将突出几个集中研究的领域&#xff0c;在…

Ubuntu iso镜像文件写入U盘

Ubuntu iso镜像文件写入U盘 Ubuntu iso镜像文件写入U盘方法 分步指南 命令行输入 usb-creator-gtk如下&#xff1a;3、Device 选择插入的U盘 4、image 选择镜像文件 5、make startup disk

页面布局让footer居页面底部_网站各页面该如何布局关键词优化提升排名?

在网站优化中&#xff0c;最值得关注的一个事情就是关键词的布局&#xff0c;因为关键词的布局直接影响着网站的排名。那么怎样布局关键词才能提高页面和关键词的相关性&#xff0c;并提高网站排名呢&#xff1f;下面一起来看看。一、利用HTML标签布局关键词众所周知&#xff0…

Linux中如何配置IP

与网络相关的文件&#xff1a;1) /etc/sysconfig/network 设置主机名称及能否启动Network2) /etc/sysconfig/network-scripts/ifcfg-eth0设置网卡参数的文件3) /etc/modprobe.conf 开机时用来设置加载内核模块的文件4) /etc/resolv.conf 设置DNS IP&#xff08;解析服务器&…

《DSP using MATLAB》Problem 5.7

代码&#xff1a; %% %% Output Info about this m-file fprintf(\n***********************************************************\n); fprintf( <DSP using MATLAB> Problem 5.7 \n\n);banner(); %% % -------------------------------------------…

一般将来时语法课教案_「英语语法」一般过去时用法技巧全解

大家好&#xff0c;我是教课蚪英语的张老师&#xff0c;今天我们来学习英语语法100讲的第一课&#xff0c;一般过去时&#xff01;一、首先我们了解一下什么是一般过去时&#xff1f;英语语法1. 概念&#xff1a;描述过去的状态或过去的动作。 在英语中&#xff0c;非现在的以前…

修改Ubuntu的启动logo

修改Ubuntu的启动logo 原文链接: https://my.oschina.net/jmjoy/blog/380262 内容: Plymouth splash screen is the initial splash screen at boot-up.Ubuntu 10.04 uses Plymouth instead of xsplash to manage the fancy boot graphics.If you want something different,y…

每周四十小时,你有多少是在为自己干活?

努力工作为什么&#xff1f;普通人不外乎希望加薪、升职&#xff0c;过的更好。 但是&#xff0c;要想达到这个目标&#xff0c;靠什么&#xff1f; 普通人当然要靠提升自己的能力和经验。 可是&#xff0c;你是不是已经发现&#xff0c;工作最踏实的&#xff0c;却未必取得最好…

在Linux下查看共享文件夹

一般情况&#xff0c;我们用到smbclient&#xff0c;常用方法所如下&#xff1a;#smbclient -L //IP地址或计算机名smbclient是samba的Linux客户端&#xff0c;在Linux机器上用来查看服务器上的共享资源&#xff0c;也可以向ftp一样&#xff0c;用户可以等里samba服务器&#x…

算法复杂度的定义

算法复杂度分为时间复杂度和空间复杂度。其作用&#xff1a; 时间复杂度是指执行算法所需要的计算工作量&#xff1b;而空间复杂度是指执行这个算法所需要的内存空间。&#xff08;算法的复杂性体现在运行该算法时的计算机所需资源的多少上&#xff0c;计算机资源最重要的是时间…

C#操作OFFICE一(EXCEL)

C#操作Excel! publicclassImportExportToExcel { private string strConn ; private System.Windows.Forms.OpenFileDialog openFileDlgnew System.Windows.Forms.OpenFileDialog(); private System.Windows.Forms.SaveFileDialog saveFileDlg…

c语言最小费用流_策略算法工程师之路-图优化算法(一)(二分图amp;最小费用最大流)...

目录1.图的基本定义2.双边匹配问题2.1 二分图基本概念2.2 二分图最大匹配求解2.3 二分图最优匹配求解2.4 二分图最优匹配建模实例2.4.1 二分图最优匹配在师生匹配中的应用2.4.2 二分图最优匹配在多对多拼车算法中的应用3.网络最大流3.1 网络流基本定义3.2 最大流的问题线性规划…

linux 查看库的安装信息

ldconfig -p | grep 库名(例如&#xff1a;lib***&#xff09; 比如&#xff1a; ldconfig -p | grep libcrypto

Asp.net无刷新调用后台实体类数据并以Json格式返回

新建一般处理程序public class Temp {public int Index { get; set; }public string Description { get; set; }public string ImagePath { get; set; }public DateTime MyDate { get; set; } }//数据源 List<Temp> listTemp new List<Temp>(){new Temp(){ Index1…

HDU 排名(简单题)

好久没在oj上做题了&#xff0c;刚开始第二天做一道简单题的心得记录。 1 #include <cstdio>2 #include <cstring>3 #include <string>4 #include <iostream>5 #include <algorithm>6 using namespace std;7 8 /*9 超级无语的错误&#xff0c;#d…

linux系统操作常见问题(ubuntu和opensuse)

在玩linux的过程中&#xff0c;会遇到各种看似奇怪的问题&#xff0c;这些问题往往让那些刚刚接触linux没多久的人不知所措&#xff0c;心中烦躁&#xff0c;这里把我曾经遇到对各种问题列出来&#xff0c;供喜欢linux对人参考&#xff1a; linux下以root身份成功运行chromium…

java iso8583 socket 服务_JAVA客户端amp;服务器的socket通信

JAVA客户端&服务器的socket通信socket是两台主机之间的一个连接通道&#xff0c;它可以完成七个基本操作&#xff1a;发送远程机器发送数据接收数据关闭连接绑定端口监听入站数据再绑定端口上接收来自远程机器的连接在客户端上使用socket程序用构造函数创建一个新的sockets…

linux 扩容

如何在linux系统中增加一块硬盘&#xff0c;并且格式化它呢&#xff1a; 我是使用VMware-workstation-full-7.1.0-261024.exe来做实验的。&#xff08;1&#xff09;使用VMware-workstation 给虚拟机增加一块硬盘&#xff0c;如下图所示&#xff1a;&#xff08;2&#xff09;然…

Python3 xml模块的增删改查

xml数据示例 ?1234567891011121314151617181920212223242526<data><country name"Liechtenstein"><rank updated"yes">2</rank><year updated_by"Alex">2009</year><gdppc>141100</gdppc><…

mysql 函数返回表格_mysql 数据分析如何实现日报、周报、月报和年报?

推荐阅读&#xff1a;MySQL复习&#xff1a;20道常见面试题(含答案)21条MySQL性能调优经验秋招Java面试大纲&#xff1a;Java并发spring数据库RedisJVMNetty等以天为统计周期&#xff0c;是常见需求。周报、月报更是常见需求。长周期项目&#xff0c;甚至有年报需求。我已经掌握…

如何开启to 日志

命名 gc_date %Y-%m-%d %H:%M:%S.log&#xff0c;11月15号21:51:58开始生成gc日志 注&#xff1a;在哪个目录启动tomcat&#xff0c;就会在哪个目录生成gc日志文件 转载于:https://www.cnblogs.com/qqzy168/archive/2012/11/16/2772636.html

联想电脑 Realtek RTL8821CE 无线网卡 驱动安装 16.04/18.04

原文连接: https://askubuntu.com/questions/1071299/how-to-install-wi-fi-driver-for-realtek-rtl8821ce-on-ubuntu-18-04 内容&#xff1a; As far as I can tell, at the time of writing this, there is not yet a Wifi Driver for the Realtek RTL8821CE in the officia…