CTX学长的01串
来源:互联网 发布:域名后缀排名 编辑:程序博客网 时间:2024/06/04 15:08
题目链接:点击打开链接
CTX学长的01串
时间限制:1 Sec内存限制:128 MiBspecial judge:No
提交:35答案正确:11
题目描述
想AK,必须过了我这一关(偷笑)。给你一个01字符串只包括字符0和1(例如:0101010101010011010)现在CTX学长想要考考你们,这个01串中有多少的子序列。子序列的定义是这样的,可以在01串中找一些字符(不能改变字符的顺序)组成一个新的串,例如01,你可以找到的子序列是"0","1","01".例如0110,你可以找到的子序列是"0","1","01","11","10","00","011","110","010","0110".
输入
输入一个T,有T组数据。(0<T<=100)接来下有T行,每行输入一个01串,0<长度<=100000。
输出
输出01串中有多少个不同的子序列。答案太大,输出对1000000007取余之后的结果
样例输入
复制
410101110000000
样例输出
复制
3685
提示
第一个样例所包含的子序列为“0”,“1”,“10”。一共有3个子序列第二个样例所包含的子序列为“0”,“1”,“01”,“10”,“11”,“101”。一共有6个子序列第三个样例所包含的子序列为“0”,“1”,“00”,“10”,“11”,“100”,“110”,“1100”。一共有8个子序列第四个样例所包含的子序列为“0”,“00”,“000”,“0000”,“00000”。一共有5个子序列.
这道题求的就是一个串中随便拿出来几个数有几种组合方式
我们可以把这个串换成一棵二叉树,根结点为空,当有一个字符出现就向下发展,0在左边,1在右边,只要能添的地方都写下新加的字符
以1100为例会形成一棵二叉树,每个结点(除了根结点)都是一种情况。
这棵树一共也就这四种结点,这四种结点都不考虑结点是什么东西,只看儿子。a:左儿子为0,右儿子为1:b:右儿子为1,左儿子为空:c:左儿子为0,右儿子为空:d:左儿子为空,右儿子为空。
当增加一个0时,b变成了a,c不变,d变成了c。至于d的话,其实d就是没有儿子的结点,那么那些有儿子的结点他们下边再加一个儿子只是让结点下移一位,还是单独一个没有儿子的结点,仍然在原来的d里边,只有那些空结点加了新结点的才会增加d,那么也就只有b会给d增加数值。最后发现b的这种结点没有了。
这道题就是通过每次加一个字符不停的变换这棵树,不停地计算这四种结点的个数,最后加起来就是这棵树的结点个数也就是最后结果。
这道题应该是一个动态规划的题目,但是我不会...
#include<bits/stdc++.h>using namespace std;const long long mod=1000000007;char s[110000];int main(){ int t; scanf("%d",&t); while(t--) { scanf("%s",s); int k=strlen(s); long long a=0,b=0,c=0,d=1; long long sum=0; for(int i=0;i<k;i++) { if(s[i]=='0') { a+=b; c+=d; d+=b; b=0; } else if(s[i]=='1') { a+=c; b+=d; d+=c; c=0; } a%=mod; b%=mod; c%=mod; d%=mod; } sum=(a+b+c+d-1)%mod; printf("%lld\n",sum); }}
阅读全文
0 0
- CTX学长的01串
- NYOJ B : CTX学长的01串
- CTX学长的快速幂
- CTX学长的找位置游戏
- NYOJ I : CTX学长的快速幂
- CTX学长的找位置游戏(错排)
- CTX学长的快速幂(快速幂运用)
- NYOJ J : CTX学长的找位置游戏
- ${ctx} 的那些事
- Netty中ctx.writeAndFlush与ctx.channel().writeAndFlush的区别
- 毕业学长的建议
- 学长出的题。。
- 学长的疑惑???
- 学长的训诫C++
- zkc学长的福利
- ${ctx}与${pageContext.request.contextPath}的区别
- 关于${ctx}拿不到值的问题
- ${ctx}在js中应用的问题
- Codeforces Round #442 (Div. 2) 题解
- Eclipse中导入的JS文件报错
- 单件模式-《Head First 设计模式》第五章
- 2017-11-13
- 《java核心技术卷一》第二章
- CTX学长的01串
- MySQL数据库:Access denied for user 'root'@'localhost' (using password:YES)解决方法
- 图片缩放工具
- nodejs 小结
- Qt之进程间通信(TCP/IP)
- 贪吃蛇
- Spring batch批量读取文件时报For input string错误。
- Redis入门之一
- JQ实现导航效果(附效果图)