题意:有三种三色的岛,用a,b,c来标识这三种岛。然后规定,同种颜色的岛不能相连,而且同种颜色的岛不能和同一个其他颜色的岛相连。问有多少种建桥的方法。

题解:em....dp。我们先看两个岛之间怎么个连法。由题意可得岛与岛之间的链接是单射,我们定义f[a][b],表示有a个颜色1的岛和b个颜色2的岛想连的方案数。

首先当a==1 || b==1的时候 f[a][b]=(b+1)或者 (a+1)。然后尝试去找状态转移方程,我们对一个岛去连接另一个岛只有连或者不连两种状态,那么对于不连的状态为f[a-1][b];连的状态为b*f[a-1][b-1],这里要乘上一个b,因为有b个岛可连。

ac代码:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define mt(a) memset(a,0,sizeof(a))
#include <map>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;
typedef long long ll;
ll mod=;
ll f[][];
int main()
{
ll a,b,c;
cin>>a>>b>>c;
int mx=max(a,max(b,c));
mt(f);
for(int i=;i<=mx;i++)
{
f[i][]=i+;
f[][i]=i+;
}
for(int i=;i<=mx;i++)
{
for(int j=;j<=mx;j++)
{
f[i][j]=(j*f[i-][j-]+f[i-][j])%mod;
}
}
ll ans=;
ans=(ans*f[a][b])%mod;
ans=(ans*f[a][c])%mod;
ans=(ans*f[b][c])%mod;
cout<<ans<<endl;
return ;
}

最新文章

  1. Python version 3.4 required, which was not found in the registry.解决
  2. javascript正则表达式(一)
  3. 【ElasticSearch】
  4. Java基础知识强化85:System类之arraycopy()方法(数组拷贝)
  5. python之~利用PIL模块在图片上写写画画
  6. Akka 的Actor
  7. 数据库的事务、ACID及隔离级别
  8. mysql 更新语句中加判断条件
  9. c2d遮罩
  10. py库: flask笔记
  11. javascript 内存模型
  12. CSVN部署安装,实现web管理svn
  13. vim学习笔记(一)—— vim安装方法
  14. Volley的Get、Post方式(JsonObjectRequest、StringRequest)以及Volley获取图片的3种方式
  15. POJ2387-Till the cows come home【最短路】
  16. win10 安装oracle 11gR2_database(内附下载地址)
  17. 如何使用canvas进行2d绘图
  18. MingW和MSVC默认的编码方式不一样
  19. grunt_beginner
  20. 线段覆盖 2(序列DP)

热门文章

  1. End-To-End Memory Networks
  2. GIS地理工具案例教程——批量去除多边形的重叠部分
  3. Apache的Mesos/Marathon与Google的Kubernets的区别
  4. git-scm教程摘要
  5. libfacedetection环境配置
  6. 青葱的岁月 Mybatis JdbcType与Oracle、MySql数据类型对应列表
  7. Redis项目实战
  8. 迅速生成项目-vue-cli-service
  9. HTML布局排版手机上浏览的网页
  10. vmware darwin mac 下载地址