从低位到高位数位DP,f[i][j][k]表示已经填了后i位,转化的数字为j,后i位与x后i位的大小关系为k的方案数。

#include<cstdio>
const int N=202,B=7,P=(1<<30)-1;
char s[N];int T,n,y,i,j,k,t,a[N];
struct Num{
int x[B];
Num(){for(int i=0;i<B;i++)x[i]=0;}
Num operator+(Num b){
Num c;
for(int i=0;i<B;i++)c.x[i]=x[i]+b.x[i];
for(int i=0;i<B-1;i++)if(c.x[i]>P)c.x[i+1]++,c.x[i]&=P;
return c;
}
Num operator-(Num b){
Num c;
for(int i=0;i<B;i++)c.x[i]=x[i]-b.x[i];
for(int i=0;i<B-1;i++)if(c.x[i]<0)c.x[i+1]--,c.x[i]+=P+1;
return c;
}
void operator+=(Num b){*this=*this+b;}
void operator-=(Num b){*this=*this-b;}
void write(){
int i;
for(i=N-1;~i;i--)if(x[i/30]&(1<<i%30))break;
if(i<0)putchar('0');
for(;~i;i--)putchar(x[i/30]&(1<<i%30)?'1':'0');
}
}f[N][2][2],tmp,ans,one;
Num cal(){
scanf("%s",s+1);
for(i=1;i<=n;i++)a[n-i+1]=s[i]-'0',f[i][0][0]=f[i][0][1]=f[i][1][0]=f[i][1][1]=Num();
for(t=0;t<=1;t++)f[1][t][t<a[1]]+=one;
for(i=1;i<n;i++)for(j=0;j<=1;j++)for(k=0;k<=1;k++)for(t=0;t<=1;t++)f[i+1][!j&&!t][t==a[i+1]?k:t<a[i+1]]+=f[i][j][k];
return f[n][y][1];
}
int main(){
one.x[0]=1;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&y);
tmp=cal(),ans=cal();
for(k=a[1],i=2;i<=n;i++)k=!k&&!a[i];
if(k==y)ans+=one;
ans-=tmp;
ans.write();puts("");
}
return 0;
}

  

BZOJ3780 : 数字统计的更多相关文章

  1. AC日记——数字统计 openjudge 1.5 41

    41:数字统计 总时间限制:  1000ms 内存限制:  65536kB 描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数. 比如给定范围[2, 22],数字2在数2中出现了1次, ...

  2. zznu 1255 数字统计(数位DP, 数学方法)

    最近在学数位DP, 感觉还是满有收获的! 做了几个题之后想起来自己OJ上曾经做的一道题,以前是用数学方法写的,现在改用数位DP来写了一遍. 题目: 1255: 数字统计 时间限制: 1 Sec  内存 ...

  3. Vijos P1784 数字统计【模拟】

    数字统计 背景 来自 NOIP2010 普及组 第一题 描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数. 比如在给定范围[2, 22],数字2在数2中出现了1次,在数12中出现了1 ...

  4. 数字统计(NOIP2010)

    题目链接:数字统计 这题很水. 思路就是:枚举每一个区间内的数,然后对于每一个数,每个位去判断是否为2,就行了. 下面上代码: #include<bits/stdc++.h> using ...

  5. LintCode——数字统计

    数字统计:计算数字k在0到n中的出现的次数,k可能是0~9的一个值 样例:例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现 ...

  6. 一款纯css3实现的数字统计游戏

    今天给大家分享一款纯css3实现的数字统计游戏.这款游戏的规则的是将所有的数字相加等于72.这款游戏的数字按钮做得很美观,需要的时候可以借用下.一起看下效果图: 在线预览   源码下载 实现的代码. ...

  7. 1126 数字统计 2010年NOIP全国联赛普及组

    1126 数字统计 2010年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver         题目描述 Description 请统计某个 ...

  8. [ZJOI2010] 数字统计

    [ZJOI2010] 数字统计 题目 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. INPUT 输入文件中仅包含一行两个整数a.b,含义如上所述 OUTP ...

  9. 数字统计类题目的非数位DP解法

    ZJOI2010 数字统计 上题题意为求[l,r]区间中每个数字(0~9)出现的次数 一般的做法为将区间当成[0,r]-[0,l-1],然后进行数位DP 但事实上将区间当成[0,r]-[0,l-1]后 ...

随机推荐

  1. 台大《机器学习基石》课程感受和总结---Part 1(转)

    期末终于过去了,看看别人的总结:http://blog.sina.com.cn/s/blog_641289eb0101dynu.html 接触机器学习也有几年了,不过仍然只是个菜鸟,当初接触的时候英文 ...

  2. HDU 1203 I NEED A OFFER (01背包&&概率dp)

    M - I NEED A OFFER! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  3. (转)女生应该找一个玩ACM的男生

    1.强烈的事业心 将来,他也一定会有自己热爱的事业.而且,男人最性感的时刻之一,就是他专心致志做事的时候.所以,找一个机会在他全神贯注玩ACM的时候,从侧面好好观察他,你就会发现我说的话没错. 2.永 ...

  4. 07 day 2

    又是惨烈的一天 第一题 多重背包.二进制拆分即可. #include <stdio.h> #define max(a,b) ((a)>(b)?(a):(b)) int n,m,i,j ...

  5. JQuery $(function(){})和$(document).ready(function(){})

    document.ready和onload的区别——JavaScript文档加载完成事件页面加载完成有两种事件一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件)二是onload,指 ...

  6. 【转】velocity 显示List和Map方法

    一.遍历个map类型 1.先看后台java程序Java代码     Map<String,String> paramValues=new HashMap<String, String ...

  7. php配置文件语法

    2013年12月11日 09:21:58 ; The syntax of the file is extremely simple. Whitespace and lines ; beginning ...

  8. org.apache.catalina.session.StandardManager doLoad

    转载自:http://www.cnblogs.com/java727/p/3300613.html SEVERE: IOException while loading persisted sessio ...

  9. plsql查询数据显示为乱码解决方法

    使用plsql查询数据显示为乱码: 查看数据库编码: 通过网上搜索,发现需要设置环境变量,添加以下环境变量: LANG=zh_CN.GBK NLS_LANG="SIMPLIFIED CHIN ...

  10. QQ图片名字

    ﻩ并亲了你一下ﻩ大兔子҉҉大兔子҉҉҉҉҉҉҉҉