简单dp

摘要:
示例输入Copy2019119220109示例输出Copy42解决方案思路:简单dp:四状态转换递归,简单状态转换。可以通过从左到右扫描字符串来计算字符串。与动态编程类似,这四个变量是单独计算的。如果202012019的数量满足0,则20的数量将增加当前2的数量。如果201的数目满足1,则电流20的数目将增加电流201的数目。如果2019年的人数达到9人,那么当前201人的人数将增加。AC代码:#pragmaGCCopptimize#include 使用namespacestd;Inlineread(){intx=0,f=1;charc=getchar();while(c)示例1输入CCHNCHN输出7示例2输入CCHNCH NCHN输出30AC代码:#include#includeintmain(){chara[10100100];longentn,i;longentd=0,b=0,c=0,m;scanf;m=strlen;for{ifd++;else ifb+=d;else if c+=b;}printf;return0;}视图代码

2019级新生小赵终于开始了大学生活,对于未知的大学生活和未来,小赵有着坚定的信心去迎接。

刚开学,小赵就被程序设计竞赛吸引了,觉得能学习知识并且打比赛真好啊,打程序设计竞赛真好玩。为了庆祝自己能了解到程序设计竞赛并且告诫自己在竞赛路上永不言弃,小赵决定把2019作为自己的幸运数字。

一天,小赵遇到一个只含有2,0,1,9四种字符的字符串,他想知道里面有多少个2019,自己能得多少个不同的2019。只要有一个位置不同就算一个新的2019,如,20199就有2个2019,9012有0个2019。

    小赵开心的把今天的事告诉小静,小静听完问:“程序竞赛更好玩吗?”小赵回答:“它不是好不好玩的问题,他是……算了,我把这道题明天讲给你听,你就知道好不好玩了。”小赵为了证明打程序设计竞赛好玩,他找到了你,希望你能做出这道题,看看小赵能得到几个2019,因为结果可能很大,所以结果请对1e9+7进行取模。

输入

本题有多组测试数据,处理到文件结束。

       每组数据占一行,一个由2,0,1,9四种数字组成的字符串,长度小于100000。

输出

        每组数据输出一行,一个整数。

样例输入 Copy

2019119
220109

样例输出 Copy

4
2

解题思路:
简单dp:四个状态转移递推,简单状态转移。
字符串从左向右扫一遍就可以计算得出,类似动态规划
四个变量分别计算2,20,201,2019的数量
遇到0那么20的数量就增加当前2的数量
遇到1那么201的数量就增加当前20的数量
遇到9那么2019的数量就增加当前201的数量

AC代码:
简单dp第1张简单dp第2张
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
typedef long long ll;
const int maxn = 1e7+10;
const ll N=1e9+7;
char a[maxn];
int main()
{
    while(~scanf("%s",a)){
        int z=0,b=0,c=0,d=0;
        int t=strlen(a);
        for(int i=0;i<t;i++){
            if(a[i]=='2'){
                z=(z+1)%N;
            }
            if(a[i]=='0'){
                b=(b+z)%N;
            }
            if(a[i]=='1'){
                c=(c+b)%N; 
            }
            if(a[i]=='9'){
                d=(d+c)%N;
            } 
        }
        printf("%d
",d%N);
    }
    return 0;
}
View Code

例题2:

链接:https://ac.nowcoder.com/acm/contest/1877/S
来源:牛客网
在庆祝祖国母亲70华诞之际,老师给小乐乐出了一个问题。大家都知道China的英文缩写是CHN,那么给你一个字符串s,你需要做的是统计s中子串“CHN”的个数。      
子串的定义:存在任意下标a < b < c,那么“s[a]s[b]s[c]”就构成s的一个子串。如“ABC”的子串有“A”、“B”、“C”、“AB”、“AC”、“BC”、“ABC”。       
输入描述:
输入只包含大写字母的字符串s。(1 ≤ length ≤ 8000)
输出描述:
输出一个整数,为字符串s中字串“CHN”的数量。
示例1
 
输入
CCHNCHN
 
输出
7
 
 

示例2
 
输入
CCHNCHNCHNCHN
 
输出
30
 
AC代码:
简单dp第3张简单dp第4张
#include<stdio.h>
#include<string.h>
int main()
{
    char a[100100];
    long long int n,i;
    long long int d=0,b=0,c=0,m;
    scanf("%s",&a);
    m=strlen(a);
    for(i=0;i<m;i++)
    {
        if(a[i]=='C')
            d++;
        else if(a[i]=='H')
            b+=d;
        else if(a[i]=='N')
            c+=b; 
    }
    printf("%lld",c);
    
    return 0;
}
View Code
 


免责声明:文章转载自《简单dp》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Re-Order BufferSSRF漏洞利用之Redis大神赐予shell下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Vue中进行断点调试的两种方式(使用外部浏览器和VsCode Debug for Chrome 插件)

但是在Vue中如果想要进行调试时,如果是在js中调试的话,可以直接添加一个debugger,然后在浏览器中打开检查进行断点调试。比如:在Vue页面中,点击搜索按钮时搜索会触发handleQuery方法resetQuery(){this.resetForm;this.handleQuery();},其中调用了请求查询数据的方法handleQuery(){thi...

layui table 打印表格

例如,layui的表单打印方法是将表单的数据重新组合成新页面,但它只能打印当前页面的内容。仅仅说实话是不够的。我整个上午都找到了一些,并说他们自己换了,但他们并不满意。这没用。我只能打印当前页面的内容。我的想法是编写一个函数,传递显示的列和要打印的数据,然后直接打印。不要胡说八道。直接转到代码。...

ArchLinux安装英伟达显卡驱动

Optimus manager qt Install novausudopacman-Sxf86-video novau右键单击导航栏上的Intel图标,选择列表中的设置功能,单击左侧的Optimus,然后在右侧窗口中选择nouveau作为切换方法。右键单击导航栏上的Intel图标以选择要使用的图形卡类型。在我选择Nvidia显卡后,您需要注销并再次登录才能...

node.js

而同样,Node也提供了child_process.fork来创建Node的子进程。请参考文章后的multi-node的性能测试,可以看到在多Node进程的情景下,响应请求的速度被大幅度提高。在文章的写作中,Node最新发布的0.5.10版本新增了cluster启动参数。参数的使用方式如下:nodeclusterserver.js启动Node的时候,在附加了...

「Docker」关于 Docker volume 挂载时文件或文件夹不存在的问题

背景:Dockervolume允许我们在启动Docker容器时动态装载一些文件以覆盖图像中的原始文件。然而,当我们将主机上不存在的文件夹或文件装载到容器时会发生什么?由于文件装载仅覆盖单个文件,而不会影响容器中同一文件夹中的其他文件,因此通常用于装载配置文件,以在运行时动态修改默认配置。如果您尝试提前在主机/文件夹路径/A中放置一些内容,您会发现在容器启动后...

文件(夹)对比利器WinMerge

IDE中自带的svn功能较弱,还好有winMerge弥补了它的缺陷,它可以对比文件、文件夹,使用起来还是较为方便,界面也是中文。“开始”菜单,弹出对话框中选择需要进行对比的文件夹或文件然后选择一个过滤器,它自带就可以过滤掉svn目录,如需要过滤其它一些指定的目录,则需要自己修改过滤器的规则了,也很简单。...