BZOJ 4562 搜索...】的更多相关文章

思路: 统计入度&出度 每搜到一个点 in[v[i]]--,f[v[i]]+=f[t]; if(!in[v[i]])if(out[v[i]])q.push(v[i]);else ans+=f[v[i]]; //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ; int n,m,xx,…
4562: [Haoi2016]食物链 Time Limit: 10 Sec  Memory Limit: 128 MB Description 如图所示为某生态系统的食物网示意图,据图回答第1小题 现在给你n个物种和m条能量流动关系,求其中的食物链条数. 物种的名称为从1到n编号 M条能量流动关系形如 a1 b1 a2 b2 a3 b3 ...... am-1 bm-1 am bm 其中ai bi表示能量从物种ai流向物种bi,注意单独的一种孤立生物不算一条食物链   Input 第一行两个整…
题目描述 如图所示为某生态系统的食物网示意图,据图回答第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<=1…
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=4562 一句话题意:给一个DAG,求有多少条不完全相同的链,使链首入度为0,链尾出度为0. 题解: 将每个入度为零的点权值为一,然后在拓扑排序的过程中将自身的权值加到出边所连的点,然后清空自身. 代码: #include<bits/stdc++.h> using namespace std; ; int vis[maxn],dp[maxn],ans,n,m,ru[maxn],cnt,he…
我们需要拓扑一下. #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> #define maxv 100500 #define maxe 200500 using namespace std; ,d[maxv],size[maxv],ans=; queue <int> q; bool flag[maxv];…
预处理出100*100以内的最优解 贪心走日 判断是0*4还是2*4 搞定 //By SiriusRen #include <queue> #include <cstdio> #include <algorithm> using namespace std; int sx,sy,ex,ey,vis[105][105],ans; char xx[]={2,2,1,1,-1,-1,-2,-2},yy[]={1,-1,2,-2,2,-2,1,-1}; bool check(i…
建反图,跑一个拓扑排序dp即可. Code: #include <bits/stdc++.h> #define ll long long #define N 100005 #define setIO(s) freopen(s".in","r",stdin) using namespace std; ll f[N]; queue<int>q; int edges,n,m; int in[N],out[N],hd[N],to[N<<1…
今天是赵和旭老师讲课(也是 zhx) 动态规划 利用最优化原理把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解(有点像分治?) 更具体的,假设我们可以计算出小问题的最优解,那么我们凭借此可以推出大问题的最优解,进而我们又可以推出更大问题的最优解.(要满足最优子结构) (从小问题答案推到大问题的答案) 而最小的问题也就是边界情况我们可以直接计算出答案来. 动态规划的状态 动态规划过程中,需要有状态表示和最优化值(方案值). 状态表示:是对当前子问题的解的局面集合的一种(充分的)描…
题目链接:BZOJ - 1048 题目分析 感觉这种分割矩阵之类的题目很多都是这样子的. 方差中用到的平均数是可以直接算出来的,然后记忆化搜索 Solve(x, xx, y, yy, k) 表示横坐标范围 [x, xx], 纵坐标范围 [y, yy] 的矩阵切成 k 块的最小 sigma((Vi - Ave)^2) . 然后再递归将矩阵分得更小,直到 k 为 1 的时候直接返回相应的值. 代码 #include <iostream> #include <cstdlib> #incl…
题目链接:BZOJ - 1055 题目分析 这种类似区间 DP 的记忆化搜索都是很相近的,比如字符串压缩和字符串扩展都差不多. 都是将现在 Solve 的区间分成子区间,再求解子区间. 这道题 Solve(l, r, x) 求能否将 [l, r] 的区间还原成 x ,那么就将它分成两段,看是否能左段变成 p , 右段变成 q. (x 能变成 pq) 代码 #include <iostream> #include <cstdio> #include <cstdlib> #…