bzoj1079: [SCOI2008]着色方案

时间:2022-08-28 21:23:00

dp.以上次染色时用的颜色的数量和每种数量所含有的颜色作状态。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int mod = 1000000007; long long f[6][16][16][16][16][16];
int c[6];
int k; long long dfs(int x,int a,int b,int c,int d,int e) {
long long &res = f[x][a][b][c][d][e];
if(res!=-1) return res;
if(a+b+c+d+e==0) return res=1; res=0;
if(a) res+=(a-(x==2))*dfs(1,a-1,b,c,d,e);
if(b) res+=(b-(x==3))*dfs(2,a+1,b-1,c,d,e);
if(c) res+=(c-(x==4))*dfs(3,a,b+1,c-1,d,e);
if(d) res+=(d-(x==5))*dfs(4,a,b,c+1,d-1,e);
if(e) res+=(e)*dfs(5,a,b,c,d+1,e-1);
res%=mod;
return res;
} int main() {
scanf("%d",&k);
for(int i=1,x;i<=k;i++) {
scanf("%d",&x);
c[x]++;
}
memset(f,-1,sizeof(f));
printf("%lld\n",dfs(0,c[1],c[2],c[3],c[4],c[5]));
return 0;
}

bzoj1079: [SCOI2008]着色方案的更多相关文章

  1. BZOJ1079 &lbrack;SCOI2008&rsqb;着色方案 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1079 题目概括 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的 ...

  2. &lbrack;luogu2476&rsqb;&lbrack;bzoj1079&rsqb;&lbrack;SCOI2008&rsqb;着色方案【动态规划】

    题目描述 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够涂满所有木块,即c1+c2+-+ck=n.相邻两个木块涂相同色显得很难 ...

  3. BZOJ1079&colon;&lbrack;SCOI2008&rsqb;着色方案&lpar;DP&rpar;

    Description 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块. 所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n.相邻两个 ...

  4. BZOJ1079 &lbrack;SCOI2008&rsqb;着色方案 【dp记忆化搜索】

    题目 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块. 所有油漆刚好足够涂满所有木块,即c1+c2+-+ck=n.相邻两个木块涂相同色显得很难看 ...

  5. BZOJ1079&colon; &lbrack;SCOI2008&rsqb;着色方案 &lpar;记忆化搜索&rpar;

    题意:有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块. 所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n.相邻两个木块涂相同色显得很 ...

  6. 2018&period;10&period;20 bzoj1079&colon; &lbrack;SCOI2008&rsqb;着色方案(多维dp)

    传送门 dp妙题. f[a][b][c][d][e][last]f[a][b][c][d][e][last]f[a][b][c][d][e][last]表示还剩下aaa个可以用一次的,还剩下bbb个可 ...

  7. BZOJ1079 &lbrack;SCOI2008&rsqb;着色方案&lbrack;组合计数DP&rsqb;

    $有a_{1}个1,a_{2}个2,...,a_{n}个n(n<=15,a_{n}<=5),求排成一列相邻位不相同的方案数.$ 关于这题的教训记录: 学会对于复杂的影响分开计,善于发现整体 ...

  8. 【记忆化搜索】bzoj1079 &lbrack;SCOI2008&rsqb;着色方案

    #include<cstring> #include<cstdio> using namespace std; #define MOD 1000000007 typedef l ...

  9. bzoj1079: &lbrack;SCOI2008&rsqb;着色方案

    ci<=5直接想到的就是5维dp了...dp方程YY起来很好玩...写成记忆化搜索比较容易 #include<cstdio> #include<cstring> #inc ...

随机推荐

  1. java面试

    1. 问一下服务器管理 2. 问一下流操作 3. 问一下多线程.struts是不是多线程的.或者说servlet的机制. 4. MySQL存储引擎 MyISAM 和 InnoDB 5 跨域问题. 6 ...

  2. jquery中对小数进行取整、四舍五入的方法

    再和大家分享一个对多位小数进行四舍五入的方法: <script language="javascript"> //对多位小数进行四舍五入 //num是要处理的数字 v为 ...

  3. 如何将域中的AD数据导入SharePoint

    转:http://www.cnblogs.com/wallis0922/archive/2010/09/29/1838292.html 最近刚装好sharepoint2010,想要研究一下,第一件想做 ...

  4. &num;include&lt&semi;unistd&period;h&gt&semi;存在linux中,含有系统服务的函数

    #include<unistd.h> linux标准库#include <unistd.h>与windows的#include <windows.h>(C语言开发) ...

  5. 【转】Linux中安装Resin

      安装步骤: Ø  安装resin前先要保证安装了JDK,可以用命令查看是否安装了JDK: [root@wxr webapps]# java -versions java version &quot ...

  6. 每天一个Linux命令 2

    wc 命令用于统计指定文本的行数.字数.字节数.格式为“wc [参数] 文本” . 参数                                                       作 ...

  7. CSS中float属性

    这个东西叫浮动.顾名思义,就是让设置的标签产生浮动效果,就是脱离原来页面的标准输出流.正常情况下,HTML页面中块元素都是从上倒下排列的.如果想实现左右结构.float的一种选择(当然还有其他方法). ...

  8. Spring配置动态数据源-读写分离和多数据源

    在现在互联网系统中,随着用户量的增长,单数据源通常无法满足系统的负载要求.因此为了解决用户量增长带来的压力,在数据库层面会采用读写分离技术和数据库拆分等技术.读写分离就是就是一个Master数据库,多 ...

  9. debian 系统安装配置apache

    安装sshapt-get install ssh-server  (安装失败请插入镜像)service ssh start Apache 服务安装apt-get install apache2 apa ...

  10. 了解一下UTF-16

    1)先啰嗦一下 UTF-16是一种编码格式.啥是编码格式?就是怎么存储,也就是存储的方式. 存储啥?存二进制数字.为啥要存二进制数字? 因为Unicode字符集里面把二进制数字和字符一一对应了,存二进 ...