zoukankan      html  css  js  c++  java
  • 【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
    ",f[l][4]);
    25     return 0;
    26 }
    View Code 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
    ",f[l]);
    18     return 0;
    19 }
    View Code 2
  • 相关阅读:
    Linux mysql 联表查询
    Linux firewalld使用教程+rhce课程实验
    Linux 常用端口
    Linux redhat 7 进入单用户模式
    Linux 子网掩码计算, 二进制十进制互相转换
    Linux 网络配置文件解析
    P1678 烦恼的高考志愿(二分)
    P1563 玩具谜题(简单模拟)
    P1553 数字反转(升级版)(模拟)
    P2690 接苹果 (DP)
  • 原文地址:https://www.cnblogs.com/konjak/p/5968422.html
Copyright © 2011-2022 走看看