从低位到高位数位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. xcode arc引起的autorelease报错问题

    http://blog.csdn.net/xiechengfa/article/details/37971223 自从用上了真苹果,一直升级,现在xcode版本是4.4,或者说是ios5 一直有个问题 ...

  2. ubuntu下git输出的颜色变化

    (这些文章都是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) 11点进家门,感觉很温暖哦. 以下是如何在用git的时候清晰的看出关键字的方法. $ vim ...

  3. python网络编程之最简单的单工通信

    tcp_server.py from socket import * server = socket(AF_INET, SOCK_STREAM) server.bind(('',12345)) ser ...

  4. 【转】INSTALL_FAILED_NO_MATCHING_ABIS 的解决办法

    在Android模拟器上安装apk的时候出现   INSTALL_FAILED_NO_MATCHING_ABIS 这个错误提示的解决办法. 是由于使用了native libraries .该nativ ...

  5. WAF绕过神器 (过安全狗、智创SQL注入)

    WAF绕过神器 (过安全狗.智创SQL注入) 发布时间:-- :10文章来源:网络文章作者:panni007 点击次数: 次 分享到: QQ空间 QQ微博 新浪微博 开心网 人人网 摘要:起因: by ...

  6. exFAT是支持Mac和Win的

    exFAT是支持Mac和Win的 转自: http://bbs.feng.com/read-htm-tid-8214017.html

  7. 3Sum Closest & 3Sum Smaller

    Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...

  8. tcp粘包问题(封包)

    tcp粘包分析     http://blog.csdn.net/zhangxinrun/article/details/6721495 解决TCP网络传输“粘包”问题(经典)       http: ...

  9. 66. 有序数组构造二叉搜索树[array to binary search tree]

    [本文链接] http://www.cnblogs.com/hellogiser/p/array-to-binary-search-tree.html [题目] 编写一个程序,把一个有序整数数组放到二 ...

  10. 【转】推荐一款Java反编译器,比较好用

    转自:http://www.blogjava.net/xmatthew/archive/2008/10/28/237203.html 推荐一款Java反编译器,也使用了挺久的了,感觉还是很好用,就拿出 ...