博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Connecting Vertices CodeForces - 888F (图论,计数,区间dp)
阅读量:5111 次
发布时间:2019-06-13

本文共 805 字,大约阅读时间需要 2 分钟。

大意: 给定邻接表表示两点是否可以连接, 要求将图连成树, 且边不相交的方案数

 

n范围比较小, 可以直接区间dp

$f[l][r]$表示答案, $g[l][r]$表示区间[l,r]全部连通且l,r间连边的方案

#include 
#include
#include
#define PER(i,a,n) for(int i=n;i>=a;--i)#define REP(i,a,n) for(int i=a;i<=n;++i)using namespace std;typedef long long ll;const int P = 1e9+7, N = 555;struct _ {int f=-1,g;}dp[N][N];int a[N][N], n;_ dfs(int l, int r) { _ &ans = dp[l][r]; if (~ans.f) return ans; ans.f=0; for (int x=l; ; x=(x+1)%n) { if (x!=l) (ans.f+=(ll)dfs(l,x).g*dfs(x,r).f%P)%=P; if (x==r) break; if (a[l][r]) (ans.g+=(ll)dfs(l,x).f*dfs((x+1)%n,r).f%P)%=P; } return ans;}int main() { scanf("%d", &n); REP(i,0,n-1)REP(j,0,n-1) scanf("%d", &a[i][j]),dp[i][i].f=1; printf("%d\n", dfs(0,n-1).f);}

 

转载于:https://www.cnblogs.com/uid001/p/10415928.html

你可能感兴趣的文章
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
Java 多态 虚方法
查看>>
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
万能的SQLHelper帮助类
查看>>
tmux的简单快捷键
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
Html5 离线页面缓存
查看>>
《绿色·精简·性感·迷你版》易语言,小到不可想象
查看>>
Android打包key密码丢失找回
查看>>
VC6.0调试技巧(一)(转)
查看>>
类库与框架,强类型与弱类型的闲聊
查看>>
webView添加头视图
查看>>
php match_model的简单使用
查看>>
在NT中直接访问物理内存
查看>>
Intel HEX 文件格式
查看>>
SIP服务器性能测试工具SIPp使用指导(转)
查看>>
回调没用,加上iframe提交表单
查看>>
(安卓)一般安卓开始界面 Loding 跳转 实例 ---亲测!
查看>>
Mysql 索引优化 - 1
查看>>