【noi 2.6_9270】&【poj 2440】DNA(DP)
题意:问长度为L的所有01串中,有多少个不包含"101"和"111"的串。
解法:f[i][j]表示长度为i的01串中,结尾2位的十进制数是j的合法串的个数。那么,便由f[i-1][ ]逐个推出。
- 1 #include<cstdio>
- 2 #include<cstdlib>
- 3 #include<cstring>
- 4 #include<iostream>
- 5 using namespace std;
- 6 #define L (int)1e6+10
- 7 #define mod 2005
- 8 int f[L][6];
- 9
- 10 int main()
- 11 {
- 12 int l;
- 13 scanf("%d",&l);
- 14 f[0][0]=f[0][4]=1,f[0][1]=f[0][2]=f[0][3]=0;
- 15 for (int i=1;i<=l;i++)
- 16 {
- 17 f[i][0]=(f[i-1][0]+f[i-1][2])%mod;
- 18 f[i][2]=(f[i-1][1]+f[i-1][3])%mod;
- 19
- 20 f[i][1]=f[i-1][0];
- 21 f[i][3]=f[i-1][1];
- 22 f[i][4]=(f[i][0]+f[i][1]+f[i][2]+f[i][3])%mod;
- 23 }
- 24 printf("%d\n",f[l][4]);
- 25 return 0;
- 26 }
1
优化:g[i]直接表示长度为i的01串中合法串的个数。由基本的二维式子逐层递推便可推出。
g[i]=f[i][0]+f[i][1]+f[i][2]+f[i][3]
f[i-1][]: =[0]*2+[1]*2+[2]+[3]
=g[i-1]+[0]+[1]
f[i-2][]: =[0]+[2]+[0]
f[i-3][]: =[0]+[2]+[1]+[3]+[0]+[2]
=g[i-3]+[0]+[2]
f[i-4][]: =[0]+[2]+[1]+[3]
=g[i-4]
即:g[i]=g[i-1]+g[i-3]+g[i-4];
- 1 #include<cstdio>
- 2 #include<cstdlib>
- 3 #include<cstring>
- 4 #include<iostream>
- 5 using namespace std;
- 6 #define L (int)1e6+10
- 7 #define mod 2005
- 8 int f[L];
- 9
- 10 int main()
- 11 {
- 12 int l;
- 13 scanf("%d",&l);
- 14 f[1]=2,f[2]=4,f[3]=6,f[4]=9;
- 15 for (int i=5;i<=l;i++)
- 16 f[i]=(f[i-1]+f[i-3]+f[i-4])%mod;
- 17 printf("%d\n",f[l]);
- 18 return 0;
- 19 }
2
【noi 2.6_9270】&【poj 2440】DNA(DP)的更多相关文章
- 【noi 2.6_9284】盒子与小球之二(DP)
题意:有N个有差别的盒子和分别为A个和B个的红球和蓝球,盒子内可空,问方案数. 解法:我自己打的直接用了求组合C的公式,把红球和蓝球分开看.对于红球,在N个盒子可放任意个数,便相当于除了A个红球还有N ...
- 【noi 2.6_6252】带通配符的字符串匹配(DP)
题意:给出一个带有通配符("?"可以代替一个字符,"*"可以代替零个或多个字符)的a字符串和一个不带通配符的b字符串,判断他们是否能够匹配. 解法:f[i][j ...
- 【BZOJ 1566】 1566: [NOI2009]管道取珠 (DP)
1566: [NOI2009]管道取珠 Time Limit: 20 Sec Memory Limit: 650 MBSubmit: 1659 Solved: 971 Description In ...
- 【BZOJ】1600: [Usaco2008 Oct]建造栅栏(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1600 说好的今天开始刷水.. 本题一开始我以为是排列组合,但是自己弱想不出来,只想到了如果四边有一条 ...
- 【BZOJ】1801 [Ahoi2009]chess 中国象棋(dp)
题目 传送门:QWQ 分析 发现我们关心的不是棋子的位置,我们只关心棋子数量就ok. 首先每行每列最多两个棋子.这是显然的. 然后我觉得本题最难的部分就是对行进行讨论,蒟蒻我一直被限制在了对格点讨论. ...
- 【UVa】And Then There Was One(dp)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- 【BZOJ】2021: [Usaco2010 Jan]Cheese Towers(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=2021 噗,自己太弱想不到. 原来是2次背包. 由于只要有一个大于k的高度的,而且这个必须放在最顶,那 ...
- 【bzoj2423】最长公共子序列[HAOI2010](dp)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2423 题目大意:求两个字符串的最长公共子序列长度和最长公共子序列个数. 这道题的话,对于 ...
- 【CF】38E Let's Go Rolling! (dp)
前言 这题还是有点意思的. 题意: 给你 \(n\) (\(n<=3000\)) 个弹珠,它们位于数轴上.给你弹珠的坐标 \(x_i\) 在弹珠 \(i\) 上面花费 \(C_i\) 的钱 可以 ...
随机推荐
- rocketmq-cpp-client Visual Studio 2019 编译
rocketmq-cpp-client Visual Studio 2019 编译 rocketmq-cpp-client 是rocketmq c++版本的 所以我们C++ 开发者使用此项目 构建 获 ...
- 【C++】《C++ Primer 》第十九章
第十九章 特殊工具与技术 一.控制内存分配 1. 重载new和delete new表达式的工作机理: string *sp = new string("a value"); //分 ...
- 软碟通制作win10镜像,无法打开install.wim的问题
打开软碟通,单击左上角"文件"→"打开",选择.iso文件的存放目录,再选择.iso映像文件打开,即可看到映像文件全部加载到UltraISO了,如下图. 将 ...
- kubernets集群的安全防护(上)
一 了解认证机制 1.1 API的服务器在接收来自客户端的请求的时候会对发起的用户进行几个步骤 认证插件进行认证,确认发起的用户是外部用户,还是集群中的某个命名空间里面的pod 确认用户属于哪个 ...
- ping 命令示例
将下面的代码粘贴到记事本中,然后保存为扩展名为BAT的文件,运行就可以将网段内ping不通的IP地址写入到文本文件IP.txt中. @echo offsetlocal ENABLEDELAYEDEXP ...
- 基于循环队列的BFS的原理及实现
文章首发于微信公众号:几何思维 1.故事起源 有一只蚂蚁出去寻找食物,无意中进入了一个迷宫.蚂蚁只能向上.下.左.右4个方向走,迷宫中有墙和水的地方都无法通行.这时蚂蚁犯难了,怎样才能找出到食物的最短 ...
- 浅析Linux用户空间中的Mmap
一.MMap基础概念 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系.实现这样的映射关系后,进程就可以采 ...
- 学习es6构造函数的第一天
什么是面向对象 编程思维分为,面向过程和面向对象 面向过程就像一个人,一间屋子,一个床 一个人走进了屋子,上了床 二面向对象 人,屋子,床 可以是屋子里进了一个人,上了床 或者,屋子里的床上有一个人 ...
- no-referrer-when-downgrade
原因: 从一个网站链接到另外一个网站会产生新的http请求,referrer是http请求中表示来源的字段.no-referrer-when-downgrade表示从https协议降为http协议时不 ...
- CSP2020-S游记
写在前面 Q:按照惯例是不是要写一片游记啊? A:好像是吧.. Q:都爆零了还有脸写游记? A:再不写今年就没机会了啊 Q:-- 我不要脸 Day -?? 某二区学长毒奶:去年三棵树,今年六张图 Da ...