HDU 5763 Another Meaning (DP)

DDR March系列算法整理 一 阅读详情

Another Meaning

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1130    Accepted Submission(s): 531


Problem Description
As is known to all, in many cases, a word has two meanings. Such as “hehe”, which not only means “hehe”, but also means “excuse me”.
Today, ?? is chating with MeiZi online, MeiZi sends a sentence A to ??. ?? is so smart that he knows the word B in the sentence has two meanings. He wants to know how many kinds of meanings MeiZi can express.
 

Input
The first line of the input gives the number of test cases T; T test cases follow.
Each test case contains two strings A and B, A means the sentence MeiZi sends to ??, B means the word B which has two menaings. string only contains lowercase letters.

Limits
T <= 30
|A| <= 100000
|B| <= |A|

 

Output
For each test case, output one line containing “Case #x: y” (without quotes) , where x is the test case number (starting from 1) and y is the number of the different meaning of this sentence may be. Since this number may be quite large, you should output the answer modulo 1000000007.
 

Sample Input
  
4 hehehe hehe woquxizaolehehe woquxizaole hehehehe hehe owoadiuhzgneninougur iehiehieh
 

Sample Output
  
Case #1: 3 Case #2: 2 Case #3: 5 Case #4: 1
Hint
In the first case, “ hehehe” can have 3 meaings: “*he”, “he*”, “hehehe”. In the third case, “hehehehe” can have 5 meaings: “*hehe”, “he*he”, “hehe*”, “**”, “hehehehe”.
 

Author
FZU
 

Source
2016 Multi-University Training Contest 4

题意:这题题意得多看几遍,才好理解。 类似于:只由小写字母构成的字符串A中的子串B可以被替换成*,问A可以生成多少个字符串。

解法: 对于每一个A的子串,如果其等于B,则有换成*和不换成*两种情况。设 dp[i] 为A串前i个字母组成的字符串可以替换生成的字符串数量,m为字符串B的长度。如果A从第(i-m+1)到第m个字母组成的子串与B相等,若将其替换,则生成的字符串数量等于A的前i-m个字母组成的字符串生成的数量;若不替换,则等于前i-1的串生成的数量,即 dp[i]=dp[i−m]+dp[i−1] 。由于数据比较水,字符串匹配时strncmp之类方法就能解决,正解应该是用kmp或者hash判断。

<span style="font-size:18px;">#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=100005;
char str1[maxn],str2[maxn];
int n,sum,sum1,pos[maxn],p,dp[maxn];
const int mod=1000000007;
void pipei()
{
    int i,j;
    memset(pos,0,sizeof(pos));
    p=0;
    int len1=strlen(str1),len2=strlen(str2);
    for(i=0;i<len1-len2+1;i++)
    {
       int ans=i,j=0;
       while(j<len2 && str1[ans]==str2[j])
          ans++,j++;
        if(j==len2){
          pos[p++]=ans-1;
        }
    }
}
int main()
{
    int cas=0;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s %s",str1,str2);
        pipei();
        memset(dp,0,sizeof(dp));
        dp[0]=1;
        int ans=0,len2=strlen(str2),len1=strlen(str1);
        for(int i=0;i<len1;i++){
           if(i==pos[ans] && p){
               ans++;
               p--;
               if(i-len2<0) dp[i]=(dp[(i-1)<0?0:(i-1)]+dp[0])%mod;
               else if(i>=len2) dp[i]=(dp[i-1]+dp[i-len2])%mod;
           }
           else{
              if(i==0) continue;
              dp[i]=(dp[i-1])%mod;
           }
        }
        printf("Case #%d: %d\n",++cas,(dp[len1-1])%mod);
    }
    return 0;
}</span>


dp[i]={dp[i−1]+dp[i−m]dp[i−1](A.substr(i−­|B|+1,|B|)=B)(o
爆肝整理:微信公众号文章HTML编写完整规范,运营必备手册 微信公众号文章排版总是出错?📱 这份完整的HTML编写规范文档帮你彻底解决!文档包含所有支持的标签、CSS属性、实用代码模板和注意事项 📋,让你快速掌握微信文章的HTML编写技巧,告别第三方编辑器依赖 ✅ 阅读详情

相关推荐

ThinkPHP 8.1 + think-swoole 4.1 实战:5分钟搞定WebSocket聊天室(附完整代码)

本文详细介绍了如何使用ThinkPHP 8.1和think-swoole 4.1快速构建高并发WebSocket聊天室。通过5分钟实战教程,开发者可以轻松实现用户列表、消息广播等核心功能,支持2000+并发连接,适用于客服系统、在线协作等实时通信场景。

ol789012345的博客 126

HDU 5763 Another Meaning (DP)

对于这个问题,显然可以进行DP: 令dp[i]表示到i结尾的字符串可以表示的不同含义数,那么考虑两种转移: 末尾不替换含义:dp[i - 1] 末尾替换含义:dp[i - |B|]  (A.substr(i - |B| + 1,|B|) = B) 那么对于末尾替换含义的转移,需要快速判断BB能不能和当前位置的后缀匹配,kmp或者hash判断即可。 复杂度:O(

卡尔 896

AI智能体评估基准AgentBench:从原理到实战的完整指南

在人工智能领域,智能体(AI Agent)的评估是衡量其实际应用能力的关键环节。评估基准通过设计标准化的测试任务,系统性地检验智能体的推理、规划和工具使用等核心能力。其技术价值在于为模型迭代和产品选型提供了客观、可复现的量化依据,能有效推动技术从演示走向工程落地。典型的应用场景包括模型能力评测、智能体框架对比以及具体应用(如自动化运维、智能客服)的性能验证。本文聚焦于清华团队推出的AgentBench,它作为一个多维度的综合评估套件,涵盖了从操作系统、数据库操作到网页浏览、数字卡牌游戏等八个贴近真实世界的任

weixin_27207591的博客 599

2016暑假多校联合---Another Meaning

2016暑假多校联合---Another Meaning Problem Description As is known to all, in many cases, a word has two meanings. Such as “hehe”, which not only means “hehe”, but also means “excuse me”.Today, ?? is cha...

weixin_30480651的博客 168

halcon 查找圆形

先找到大概位置进行拟合,然后再以拟合出的位置作为测量的大概位置进行找圆;

qq_59062726的博客 734

汇编语言(第4版)王爽 课程设计2 详细实现(一、虚拟模式DOS运行篇)

由于虚拟模式的限制,我们编写的许多逻辑暂时不能被检验,而因为《汇编语言》编写时间较早,其所依赖的运行环境如今只能够依靠虚拟机来搭建。比如实模式DOS,搭建步骤比较繁琐,因此我将其它的部分放在下一篇文章中进行讲解。事实上,我们实现的程序属于《汇编语言》课程设计2中任务程序部分,其中的完整任务还涉及到将该任务程序安装到软盘等操作,这些也都需要在实模式下才能运行,所以统一放到下一篇文章进行实现。

m0_73327328的博客 2823

Another Meaning

链接:http://acm.hust.edu.cn/vjudge/problem/435534/origin 题目:As is known to all, in many cases, a word has two meanings. Such as “hehe”, which not only means “hehe”, but also means “excuse me”. T

veget_chicken的博客 401

在VScode中配置Python开发环境(详细图片文字结合)

需要用到的软件下载包在官网里找一下,在window下的点击安装就行了;找一个3.8到3.10版本差不多都完善跟的上;

m0_72811193的博客 1599

Hdu-5763 Another Meaning(DP+KMP)

Another Meaning Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 558    Accepted Submission(s): 262 Problem Description As is known to a

WZJRJ28 483

2025华为杯第二十二届中国研究生数学建模竞赛D题:低空湍流监测及最优航路规划 - 完整解题分析+完整MATLAB源码!(上篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 2586

C#:实现统计图像主颜色的算法(附完整源码)

C#:实现统计图像主颜色的算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 519

HDOJ 5763 Another Meaning(kmp+dp)

Another Meaning Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 826    Accepted Submission(s): 383 Problem Description As is known

Chunzhen的博客 570

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

hdu 5763 Another Meaning(2016 Multi-University Training Contest 4——dp+kmp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5763 Another Meaning Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 802    Accepted

若忆_star 1153

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

DP-HDU-5763-Another Meaning

Another MeaningTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 46 Accepted Submission(s): 14Problem Description As is known to all, in many

懒鬼的私人泳池 709

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

HDU 5763 Another Meaning (kmp + dp)

Another Meaning 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5763 Description As is known to all, in many cases, a word has two meanings. Such as “hehe”, which not only means “hehe”, but also...

dituonian8372的博客 197

hdu5763 Another Meaning (DP+KMP)

思路: 令dp[i]表示到i结尾的字符串可以表示的不同含义数,那么考虑两种转移: 末尾不替换含义:dp[i - 1] 末尾替换含义:dp[i - |B|]  (A.substr(i - |B| + 1,|B|) = B) 那么对于末尾替换含义的转移,需要快速判断BB能不能和当前位置的后缀匹配,kmp或者hash判断即可。 复杂度:O(N) #include

围巾的ACM博客 879

hdu_5763_Another Meaning(dp)

题目链接:hdu_5763_Another Meaning 题意: 一个文本串A,一个模式串B,如果文本串含有模式串B,那么就能组合成多种意思,如下: In the first case, “ hehehe” can have 3 meaings: “*he”, “he*”, “hehehe”. In the third case, “hehehehe” can have 5 meaing...

weixin_30817749的博客 137

HDU-5763-Another Meaning(KMP+DP)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5763 题意:给出字符串a,b,其中,字符串b代表两种含义,问a最多有多少种含义。 题解:kmp找出b在a中对应的位置,根据位置关系dp 令dp[i]表示到i结尾的字符串可以表示的不同含义数,那么考虑两种转移: 末尾不替换含义:dp[i - 1] 末尾替换含义:dp[i - |B|

不会吃鱼的喵 354

hdu 5763 Another Meaning kmp+dp

题目链接:这里 题意: 给你一个字符串A,给你一个字符串B。 说B这个字符串有两个意思,请问字符串A一共有多少个意思 解法: DP,dp[i]表示以i结尾有多少种意思,然后用kmp去转移就好了。首先dp[i] = dp[i-1] 当i点是匹配点是, dp[i] += dp[i-len2]。//HDU 5763#include <bits/stdc++.h> using namespace

I good vegetable a! 766

HDU-5763-Another Meaning-hash加DP

题目大致意思:给你一个字符串A,一个字符串B,B字符串代表有两种意思的字符串。问A可能有多少种意思 思路:用hash处理一下看A中哪些位置是B字符串匹配的结尾。然后DP dp[i]=dp[i-1]+dp[i-m](i是B匹配的结尾) dp[i]=dp[i-1](不是结尾) 注意当i-m #include using namespace std; #define nc 131 #defin

lyc1635566ty的博客 444

HDU 5763 Another Meaning(KMP+DP)

对于给定的字符串A 以及字符串B 已知B字符串可以被替换 问总共有多少种替换的方式 对于A中存在的B的连续子串,这个显然需要用KMP处理出每个B子串的位置 然后问题变成了dp dp[i]为 前i个字符能够替换的方式 状态转移方程为

宝树啊宝树 556

HDU - 5763 Another Meaning(KMP+DP)

HDU - 5763

remember_your_dream的博客 324

HDU5763 another meaning -(KMP+DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5763 思路:dp[i]表示前i个字符组成的字符串所表示的意思数量,则当匹配时dp[i]=dp[i-1]+dp[i-lenb],不匹配时dp[i]=dp[i-1]。匹配的判断可以用KMP。 #include<cstdio> #include<cstring>...

weixin_30622107的博客 97

利用dp计算方案数(hdu 5763 ( Another Meaning ) )

dp的特点与数学归纳法近似,都是已知当前点推导下一个点。 很多时候dp 都会被用在统计个数上。 即在现有的元素中再加上新的元素后个数是如何变化的

AI_xue 826

hdu5763 Another Meaning KMP+DP

Another Meaning 先用KMP匹配,将字符串转化为01串。再用个简单的DP 如果当前的串不影响前面的串,那么就可以同时匹配,所以dp[i]=dp[i-1]+dp[i-m]+1,如果当前的串不能匹配,则dp[i]=dp[i-1],最后输出要输出dp[n-1]+1,因为当所有能匹配的地方都是第一个意思,所以要+1. #include <iostream> #inc...

weixin_30522183的博客 164
上一篇: HDU 5532 Almost Sorted Array (dp)
下一篇: HDU 3339 In Action (dijkskra+01背包)
hellohelloC
博客等级 码龄12年 15粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值