首页 > 其他分享 >小红过61

小红过61

时间:2023-06-01 21:44:54浏览次数:32  
标签:int 小红过 sum 61 str 序列 dp MOD

牛客2023年儿童节比赛

题目链接

题目描述

小红拿到了一个仅由数字字符组成的字符串。她准备选择一个非空子序列,使得该子序列中不包含连续的"61"子串。
小红想知道,有多少种不同的子序列选择方式?答案对1e9+7取模。

输入描述:

一个仅由数字组成的字符串,长度不超过10^5

输出描述:

满足题目条件的子序列数量。

示例1

输入

12

输出

3

说明

有3个非空子序列,均符合条件。

示例2

输入

654321

输出

62

题意

在字符串str中找出不含"61"的子序列的个数

思路

一个字符也算是子序列,所以f的初始值为1,f用来表示目前能够构成的所有子序列的个数
sum用来表示含'6'的子序列的个数

代码

#include <iostream>

using namespace std;

const int MOD = 1e9+7;
const int N = 1e5+10;

int dp[N];

int main()
{
	string str;
	cin >> str;
	
	str = " " + str;
	
	int f = 1,sum = 0;
	for(int i = 1;i < str.length();i ++)
	{
		if(str[i] == '1') //如果出现字符1的话,需要将现有的所有的子序列的数量-含'6'的子序列的数量
			dp[i] = (f - sum + MOD)%MOD;
		else
			dp[i] = f;
		if(str[i] == '6')
			sum = (sum + dp[i]) % MOD;
		f = (f + dp[i]) % MOD;
	}
	
	int ans = 0;
	for(int i = 1;i < str.length();i ++)
	ans = (ans + dp[i]) % MOD;
	
	cout << ans << endl;
	
	return 0;
}

标签:int,小红过,sum,61,str,序列,dp,MOD
From: https://www.cnblogs.com/heystar/p/17450286.html

相关文章

  • CI854K01 3BSE025961R1保护电机/变压器/馈线/发电机等免受接地故障影响
    CI854K013BSE025961R1保护电机/变压器/馈线/发电机等免受接地故障影响CI854K013BSE025961R1CI854K013BSE025961R1 EFR用于保护控制面板和配电盘免受接地故障影响,保护电机/变压器/馈线/发电机等免受接地故障影响,可以保护炼油厂/纸浆工业/配电等危险和敏感行业。PFR:PFR(Ph......
  • ARC161F Everywhere is Sparser than Whole (Judge)
    题面传送门先大概移个项,就是要你找有没有非空真导出子图满足\(E-ND\geq0\)。如果它只问了\(E-ND>0\)这是经典的最大权闭合子图模型,令每条边为左部点,每个点为右部点,边的权值为\(1\),点的权值为\(-D\),边与对应点连边,如果最终最大权\(>0\),则存在这么一个子图。但是\(E-ND=......
  • leetcode 561. Array Partition I
    Givenanarrayof2nintegers,yourtaskistogrouptheseintegersintonpairsofinteger,say(a1,b1),(a2,b2),...,(an,bn)whichmakessumofmin(ai,bi)forallifrom1tonaslargeaspossible.Example1:Input:[1,4,3,2]Output:4Explanation:......
  • leetcode 461. Hamming Distance
    The Hammingdistance betweentwointegersisthenumberofpositionsatwhichthecorrespondingbitsaredifferent.Giventwointegers x and y,calculatetheHammingdistance.Note:0≤ x, y <231.Example:Input:x=1,y=4Output:2Explanation:1......
  • leetcode 617. Merge Two Binary Trees
    Giventwobinarytreesandimaginethatwhenyouputoneofthemtocovertheother,somenodesofthetwotreesareoverlappedwhiletheothersarenot.Youneedtomergethemintoanewbinarytree.Themergeruleisthatiftwonodesoverlap,thensumn......
  • AtCoder Regular Contest 161
    PrefaceARC战俘闪总出列这场一上来就感觉状态不太对,先是A顺序敲反WA了一发,然后C题看到秒出一个贪心然后也WA了看一眼榜发现D过的比C多,然后跑去把D写了,中间还偷偷挂了两发最后50min回去沉淀C题,结果换了两种写法都还是一样的挂,后面发现想法还是有纰漏总结:彩笔A-MakeM考虑......
  • 剑指 Offer 61. 扑克牌中的顺子
    题目描述:从若干副扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为0,可以看成任意数字。A不能视为14。 限制:数组长度为5 数组的数取值为[0,13].  方法:排序+遍历 classSolutio......
  • hi3861设备开发试验记录(一)
       经过一段时间的学习积累,想尝试做做产品。也许结果又是一次探索,但是带着问题去解决问题能更好的学习。      最初在Hi3516上使劲,但是很难搞,需要写u-boot,还要自己写驱动,进步艰难就先放一下。在Hi3861上一些简单设想更容易实现一些,Hi3861芯片是内置SRAM和Flash......
  • LeetCode 617. 合并二叉树
    题目链接:LeetCode617.合并二叉树题意:给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新......
  • 代码随想录算法训练营第二十天|654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树
    【参考链接】654.最大二叉树【注意】1.构造二叉树,都需要用前序遍历。2.二叉树的根是数组中的最大元素。3.没必要构造新数组,通过下标控制左右区间。运行效率会高很多。【代码】1#Definitionforabinarytreenode.2#classTreeNode(object):3#def__init......