/*
x[1,A]
y[1,B]
x^y<C 或 x&y>C
把ABC拆成二进制后按位进行数位dp
dp[pos][s1][s2][f1][f2]
表示从高到低第pos位,条件一状态为s1,条件2状态为s2,x在pos为的限制状态为f1,y在pos的限制状态为f2的方案数
条件状态s=0|1|2表示前pos位数运算结果<C前pos位数,=C前pos位数,>C前pos位数
dp时枚举下一位的所有可能情况,如果当前状态已经确定(满足或不满足),那么下一位取什么都可以,即下一位的条件状态可以直接继承当前位
反之当前状态不确定,即前pos位的值和C相等,那么需要通过当前为来进行判断下一位的条件状态 终止条件:pos==30
s1==2||s2==0,值为1,反之为0 考虑要减去的情况
x=0,y=[1,min(C-1,B)]都可行
y=0,x=[1,min(C-1,A)]都可行
x=0,y=0也可行
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 35
#define ll long long
ll A,B,C,dp[maxn][][][][];
vector<int>v1,v2,v3; ll dfs(int pos,int S1,int S2,int f1,int f2){
ll &res=dp[pos][S1][S2][f1][f2];
if(res!=-)return res;
if(pos==){//边界条件
if(S1==||S2==)return res=;
else return res=;
}
res=;
int newS1,newS2,lim1,lim2;
lim1=f1?v1[pos]:;//x下一位的上界
lim2=f2?v2[pos]:;//y下一位的上界
for(int i=;i<=lim1;i++)//枚举xy的下一位
for(int j=;j<=lim2;j++){
int tmp1=i&j,tmp2=i^j;
if(S1==){//先处理条件1
if(tmp1==v3[pos])newS1=;
else if(tmp1<v3[pos])newS1=;
else newS1=;
}
else newS1=S1;
if(S2==){
if(tmp2==v3[pos])newS2=;
else if(tmp2<v3[pos])newS2=;
else newS2=;
}
else newS2=S2;
res=res+dfs(pos+,newS1,newS2,f1&&(i==lim1),f2&&(j==lim2));
}
return res;
}
void calc(ll x,vector<int> & v){
v.clear();
for(int i=;i>;i--){
v.push_back(x&);
x>>=;
}
reverse(v.begin(),v.end());//把数组倒置后就可以正常数位dp了
}
int main(){
int t;cin>>t;
while(t--){
memset(dp,-,sizeof dp);
cin>>A>>B>>C;
calc(A,v1);calc(B,v2);calc(C,v3);
ll res=dfs(,,,,);//进入搜索时的状态
res-=min(C-,A)+min(C-,B)+;//0取不到,但数位dp时算了
cout<<res<<'\n';
}
}

数位dp——牛客多校H的更多相关文章

  1. 字符串dp——牛客多校第五场G

    比赛的时候脑瘫了没想出来..打多校以来最自闭的一场 显然从s中选择大于m个数组成的数必然比t大,所以只要dp求出从s中选择m个数大于t的方案数 官方题解是反着往前推,想了下反着推的确简单,因为高位的数 ...

  2. 线段树优化dp——牛客多校第一场I(好题)

    和两天做了两道数据结构优化dp的题,套路还是差不多的 题解链接! https://www.cnblogs.com/kls123/p/11221471.html 一些补充 其实这道题的dp[i]维护的不 ...

  3. 2019牛客多校第八场 F题 Flowers 计算几何+线段树

    2019牛客多校第八场 F题 Flowers 先枚举出三角形内部的点D. 下面所说的旋转没有指明逆时针还是顺时针则是指逆时针旋转. 固定内部点的答案的获取 anti(A)anti(A)anti(A)或 ...

  4. 2019牛客多校 Round4

    Solved:3 Rank:331 B xor 题意:5e4个集合 每个集合最多32个数 5e4个询问 询问l到r个集合是不是都有一个子集的xor和等于x 题解:在牛客多校第一场学了线性基 然后这个题 ...

  5. 2019牛客多校第一场 I Points Division(动态规划+线段树)

    2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有 ...

  6. 牛客多校第3场 J 思维+树状数组+二分

    牛客多校第3场 J 思维+树状数组+二分 传送门:https://ac.nowcoder.com/acm/contest/883/J 题意: 给你q个询问,和一个队列容量f 询问有两种操作: 0.访问 ...

  7. 2019年牛客多校第一场B题Integration 数学

    2019年牛客多校第一场B题 Integration 题意 给出一个公式,求值 思路 明显的化简公式题,公式是分母连乘形式,这个时候要想到拆分,那如何拆分母呢,自然是裂项,此时有很多项裂项,我们不妨从 ...

  8. 2020牛客多校第八场K题

    __int128(例题:2020牛客多校第八场K题) 题意: 有n道菜,第i道菜的利润为\(a_i\),且有\(b_i\)盘.你要按照下列要求给顾客上菜. 1.每位顾客至少有一道菜 2.给顾客上菜时, ...

  9. 牛客多校第一场 B Inergratiion

    牛客多校第一场 B Inergratiion 传送门:https://ac.nowcoder.com/acm/contest/881/B 题意: 给你一个 [求值为多少 题解: 根据线代的知识 我们可 ...

随机推荐

  1. npm转淘宝镜像

    1.临时使用 npm --registry https://registry.npm.taobao.org install express 2.持久使用 npm config set registry ...

  2. mac 命令行

    本文为使用到过的命令行,仅方便自己查阅 1.进入目录文件 cd name name为文件名 2.返回上一级目录 cd ../ 3.创建文件夹 mkdir name 4.删除文件夹(文件夹下不能包含文件 ...

  3. 控制台Cannot read property 'disabled' of null报错的问题

    点击任何东西控制台都会报错: 也没有提示哪儿出了问题,后来我就代码一块一块的注释,终于找到了原因. 我在项目中用了 el-dropdown ,但是没有用他的el-dropdown-menu 所以才会一 ...

  4. vbs,修改文件名

    一次性能测试记录,因为项目要批量上传文件,奈何文件有50 * 2个,然后系统效验文件名,要不停地修改,找了一些资料整理脚本如下: strFolder = "\\xxxx\2018198_数据 ...

  5. vue-cli 3.0版本,配置代理Proxy,不同环境不同target(生产环境,uat环境和本地环境的配置)

    1.在项目的的根目录下新建vue.config.js 2.新建一个config包,里面存放不同的环境文件,里面包含:pro.env.js(生产环境配置),uat.env.js(测试环境配置),dev. ...

  6. js 加载验证码

    <img id="captchaPic" src="{{captcha_src('math')}}" onclick="this.src='{{ ...

  7. php随机生成数字加字母的字符串

    function getRandomString($len, $chars=null) { if (is_null($chars)) { $chars = "ABCDEFGHIJKLMNOP ...

  8. 在Visual C++中使用内联汇编

    一.内联汇编的优缺点 因为在Visual C++中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C++中不能处理的一些事情,而且可以使用在C/C++中的变量,所以非常方便.内联汇编主 ...

  9. try-with-resources 让java资源关闭代码更简洁

    一.JDK7的资源关闭方式优化 1 try-with-resource语法 在JDK7以前,Java没有自动关闭外部资源的语法特性,直到JDK7中新增了try-with-resource语法,才实现了 ...

  10. Linux操作系统中对于NTFS读取目录功能的实现

    1: /* 2: * We use the same basic approach as the old NTFS driver, i.e. we parse the 3: * index root ...