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

bzoj1079: [SCOI2008]着色方案(DP)

1079: [SCOI2008]着色方案

题目:传送门 

题解:

   DP刚神多年前讲过的一道神题。

   二话不说,上来就是一个六维数组:F[i][a][b][c][d][e]//表示上一次涂的颜色是还剩下i次可用的,a~e表示不同次数的颜色种数。

   次数一样的颜色其实是相同的

   那么我们记忆化搜索一下就OK(表示很久没打过了...)

代码(巨丑勿喷):

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cstdlib>
 4 #include<cmath>
 5 #include<algorithm>
 6 using namespace std;
 7 const int mod=1000000007;
 8 typedef long long LL;
 9 LL f[6][16][16][16][16][16];//f[i][a][b][c][d][e]表示上一次涂的颜色是还剩下i次可用的,a~e表示不同次数的颜色种数 
10 int a[6];
11 int k;
12 LL DP(int last,int a1,int a2,int a3,int a4,int a5)
13 {
14     if(a1<0 || a2<0 || a3<0 || a4<0 || a5<0)return 0;
15     if(a1==0 && a2==0 && a3==0 && a4==0 && a5==0)return 1;
16     if(f[last][a1][a2][a3][a4][a5]!=0) return f[last][a1][a2][a3][a4][a5];
17     
18     LL sum=0;
19     sum=( sum + ( ( a1 - ( ( last==2 ) ? 1 : 0 ) ) * DP ( 1,a1-1,a2,a3,a4,a5 ) ) ) % mod;
20     sum=( sum + ( ( a2 - ( ( last==3 ) ? 1 : 0 ) ) * DP ( 2,a1+1,a2-1,a3,a4,a5) )) % mod;
21     sum=( sum + ( ( a3 - ( ( last==4 ) ? 1 : 0 ) ) * DP ( 3,a1,a2+1,a3-1,a4,a5) )) % mod;
22     sum=( sum + ( ( a4 - ( ( last==5 ) ? 1 : 0 ) ) * DP ( 4,a1,a2,a3+1,a4-1,a5) )) % mod;
23     sum=( sum + a5*DP(5,a1,a2,a3,a4+1,a5-1))%mod;
24     f[last][a1][a2][a3][a4][a5]=sum;
25     return sum;
26 }
27 int main()
28 {
29     memset(f,0,sizeof(f));
30     scanf("%d",&k);
31     for(int i=1;i<=k;i++)
32     {
33         int x;
34         scanf("%d",&x);
35         a[x]++;
36     }
37     printf("%lld\n",DP(0,a[1],a[2],a[3],a[4],a[5]));
38     return 0;
39 }

转载于:https://www.cnblogs.com/CHerish_OI/p/8443733.html

相关文章:

dedecms部分文章出现读取附加信息出错的解决办法

问题&#xff1a; 估计是新版本开发的时候&#xff0c;没有考虑旧版&#xff0c;文章内容为空的新闻&#xff0c;新版不在允许文章内容为空的新闻&#xff0c;这样旧版的内容为空的新闻升级后将无法再编辑。 解决&#xff1a;你可以对如下文件进行如下修改&#xff1a;article_…

程序员的周末:纯野的一天

牵强的标题自己写上这个标题都觉得挺牵强的。首先&#xff0c;我算不上是一个纯粹意义上的程序员了。虽然上了一个多月的班&#xff0c;但对于这份职业到底做什么我都还不是特别的清楚。每天做着一些类似文秘的工作&#xff0c;又类似技术支持的工作&#xff0c;还有点类似程序…

postgresql 分组查询第一条数据

SELECT * FROM ( SELECT ROW_NUMBER() OVER (partition BY k.word ORDER BY k."updatedAt" desc) rowId,* from keywords as k ) t WHERE rowId1

关于工作和生活

一、关于工作与生活 我有个有趣的观察&#xff0c;外企公司多的是25-35岁的白领&#xff0c;40岁以上的员工很少&#xff0c;二三十岁的外企员工是意气风发的&#xff0c;但外企公司40岁附近的经理人是很尴尬的。我见过的40岁附近的外企经理人大多在一直跳槽&#xff0c;最后大…

JVM GC 垃圾回收(二)之 判断那些可回收,怎么回收

1、哪些对象可回收&#xff1f; 可行性分析算法 通过一系列GC Roots&#xff08;1&#xff09;作为起始点&#xff0c;其到对象之间的引用&#xff08;2&#xff09;称为引用链&#xff0c;当对象到GC Roots之间不存在引用链相连&#xff0c; 则此对象是不可用的。如下&#xf…

nginx+lua实现上传文件到OSS

目录 技术点 openResty 下载安装 示例 oss.lua 文件 测试代码 text.lua nginx 配置 技术点 openResty OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台&#xff0c;其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并…

使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容

使用CEfSharp之旅&#xff08;7&#xff09;CEFSharp 拦截 http 请求 websocket 内容 原文:使用CEfSharp之旅&#xff08;7&#xff09;CEFSharp 拦截 http 请求 websocket 内容版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。可点击关注博主 &…

sqlserver查询一个表的字段信息

select count(*) from syscolumns where idobject_id(表名) 转载于:https://www.cnblogs.com/dongpo888/archive/2011/05/11/2043370.html

ASP.NET无刷新客户端回调

首先说一下&#xff1a;Page.ClientScript 用于管理脚本、注册脚本和向页添加脚本。 返回结果:一个 System.Web.UI.ClientScriptManager 对象。 ClientScriptManager对象 是一些 在 Web 应用程序中定义用于管理客户端脚本的方法&#xff0c;其中有一个方法重载&#xff1a;stri…

common lisp里的几个操作符

setf 赋值操作符&#xff0c;定义一个全局变量。返回值是最后一个赋值的结果。 let 局部变量操作符。let表达式有两部分组成。第一部分是任意多的变量赋值&#xff0c;他们被包裹在一个()中&#xff0c;第二部分是任意数量的表示式作为 let 的函数体。let 表达式的返回值为 最…

敏捷宣言遵循的十二条原则

敏捷宣言遵循的十二条原则Twelve Principles behind the Agile Manifesto 我们遵循以下原则&#xff1a; We follow these principles: 我们最重要的目标&#xff0c;是通过持续不断地及早交付有价值的软件使客户满意。Our highest priority is to satisfy the customer throug…

微信公众号开发的一些配置

1、开发者ID&#xff08;AppID&#xff09; 开发者ID是公众号开发识别码&#xff0c;配合开发者密码可调用公众号的接口能力。 2、开发者密码&#xff08;AppSecret&#xff09; 开发者密码是校验公众号开发者身份的密码&#xff0c;具有极高的安全性。切记勿把密码直接交给第三…

javascript-对混合字母/数字数组进行排序

[A1, A10, A11, A12, A2, A3, A4, B10, B2, F1, F12, F3]将其排序为&#xff1a; [A1, A2, A3, A4, A10, A11, A12, B2, B10, F1, F3, F12] var reA /[^a-zA-Z]/g; var reN /[^0-9]/g;function sortAlphaNum(a, b) {var aA a.replace(reA, "");var bA b.replace…

国王验毒酒问题

国王召开宴会&#xff0c;一共有1000桶葡萄酒。邪恶的刺客在其中一桶酒里下了致命的毒。人们只知道有且仅有一桶酒被下毒&#xff0c;却不知道是哪一桶。现在你可以拿小白鼠做实验&#xff0c;小白鼠可以同时喝下多个桶的取样结果&#xff0c;且无视稀释效果喝到就死&#xff0…

Nodejs核心模块之net和http的使用详解

前言 net和http模块都是node核心模块之一&#xff0c;他们都可以搭建自己的服务端和客户端&#xff0c;以响应请求和发送请求。 net模块服务端/客户端 这里写的net模块是基于tcp协议的服务端和客户端&#xff0c;用到net.createServer和net.connect实现的一个简单请求与响应的d…

NODEJS 使用 XLSX模块导出excel文件

参考&#xff1a;https://www.itranslater.com/qa/details/2582439815438402560 生成excel /*** 用于排序* param a* param b* returns {number}*/ function sortAlphaNum(a, b) {let reA /[^a-zA-Z]/g;let reN /[^0-9]/g;let aA a.replace(reA, "");let bA b.re…

poj 3352

题意&#xff1a;一个连通的无向图&#xff0c;求至少需要添加几条边&#xff0c;救能保证删除任意一条边&#xff0c;图仍然是连通的。 思路&#xff1a;边的双连通图。其实就是要求至少添加几条边&#xff0c;可以使整个图成为一个边双连通图。用tarjan算法(求割点割边)求出l…

oracle删除大表的数据的方法

今天在公司中碰到访问表数据(test 表)速度非常慢&#xff0c;简单的一个select 语句花了10多分钟&#xff0c; 后来查询一下表的数据量&#xff0c;一共有278万多条数据&#xff0c;而且这个数据表的数据大都过期了&#xff0c;对于现在的业务没什么用。可悲的是这个表竟然也没…

ClickHouse 学习

DDL 添加数据库字段 alter table user_tags add column last_subject String; alter table user_tags add column class_trust_valids Int8; 删除列 ALTER TABLE [db].name [ON CLUSTER cluster] DROP COLUMN ... 日期函数 当toDate 遇到空的串报异常时 select toDate();…

zTree实现节点修改的实时刷新

一、应用场景 在实际应用中会遇到动态操作树各节点的需求&#xff0c;在增加树节点后如何实时动态刷新树就十分有必要了。二、项目实践 比如要在test1234节点下新建子节点&#xff0c;首先要选中test1234节点&#xff0c;添加成功后&#xff0c;根据test1234结点的TID去后台请求…

magento常用软件

常见问题&#xff1a; 1. 装完插件导致后台配置出现 Access denied 信息&#xff0c;需要重置账号权限&#xff0c;方可恢复正常。 2. 大多数无法安装插件时&#xff0c;请删除 /downloader/pearlib/pear.ini 文件&#xff0c;最后到 Connect Manager 里保存下设置&#…

连接惠普打印机(通过WIFI)

第一步 找到打印机型号 第二步 到惠普官方网站下载对应驱动 第三步 安装驱动 第四步 安装驱动后选择WIFI连接&#xff08;IP在打印机显示屏幕上显示&#xff0c;如果输入打印机屏幕IP连接失败&#xff1b;需要获取打印机真正的IP地址&#xff0c;在HP设备工具箱中获取&#xff…

ADO.NET的连接模式

1、连接模式&#xff1a;客户机一直保持和数据库服务器的链接&#xff0c;适合数据传输量少&#xff0c;系统规模不大、客户机和服务器在同一网络内的环境。 使用连接模式下数据访问的步骤如下&#xff1a; a、使用connection对象连接数据库 b、使用command&#xff08;命令&am…

App调用safar

/调用safar打开网页 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:"http://www.cnblogs.com/foxmin"]]; 调用app store (省略号后面加的是产品的id等一些参数) // [[UIApplication sharedApplication] openURL:[NSURL URLWithString:"i…

Spring Boot 整合Redis 实现缓存

本文提纲一、缓存的应用场景二、更新缓存的策略三、运行 springboot-mybatis-redis 工程案例四、springboot-mybatis-redis 工程代码配置详解运行环境&#xff1a;Mac OS 10.12.xJDK 8 Redis 3.2.8Spring Boot 1.5.1.RELEASE一、缓存的应用场景 什么是缓存&#xff1f;在互联网…

Sqlite3支持的数据类型 日期函数 Sqlite3 函数

Sqlite3支持的数据类型 NULL INTEGER REAL TEXT BLOB 但实际上&#xff0c;sqlite3也接受如下的数据类型&#xff1a; smallint 16 位元的整数。 interger 32 位元的整数。 decimal(p,s) p 精确值和 s 大小的十进位整数&#xff0c;精确值p是指全部有几个数(digits)大小值&…

Element el-switch 组件样式修改 将文字显示到组件内

Element el-switch 现在的样式无法将文字显示到组件内 &#xff0c;需要自己修改样式。具体如下 <el-switch:disabled"sitem.select.length-1"class"switch"v-model"sitem.or"active-color"#13ce66"inactive-color"#409EFF&qu…

jquery中输入验证中一个不错的效果

在表单的输入验证中&#xff0c;经常要当用户没能正确输入后&#xff0c;要提示“XXXX输入错误”这一类的信息&#xff0c;如何能搞到动态一点呢&#xff0c;今天发现jquery中的一个不错的效果&#xff0c;笔记之。 1 包含jquery <script src"images/jquery-1.2.6.min…

【2018.2.25】c++预习练习

学了一学期c语言之后预习c&#xff0c;一些最基础的东西做起来还是得心应手的&#xff0c;先练练手感?C primer plus 和教材同步学习&#xff0c;大概会比上学期抓瞎学习要好得多吧。 1 #include<iostream>2 int main()3 {4 using namespace std;5 cout <<…

在做项目中遇到的JS问题

name和value&#xff1a; 例如: <input type"text" name"txt"/> name用于定义这个input收到的值的变量名&#xff0c;在上面的input输入“hello",那么就有txt"hello";用于dom操作取值 在用js改变某个div属性进行传值操作时&#xff0…