2019牛客暑期多校训练营(第七场)-H Pair(数位dp)
题目链接:https://ac.nowcoder.com/acm/contest/887/H
题意:给定A,B,C,求有多少对(x,y)满足x&y>C或者x^y<C,其中1<=x<=A,1<=y<=B。
思路:首先逆向考虑,求有多少对(x,y)满足x&y<=C且x^y>=C,然后用A*B去减它即可。然后就是数位dp模板题,用dp[pos][la][lb][land][lxor]表示到第pos位的个数,la位表示是否是A的上限,lb表示是否是B的上限,land表示 与 的上限是否是C,lxor表示 异或 的下限是否是C,因为该dp表示的值与输入的A,B,C有关,所以每次都要memset置-1。因为dfs存在x或y为0的情况,而x、y最小是1,所以要减掉x或y为0的情况。x为0的个数有max(0,B-C+0),即y>=C;同理,y为0有max(0,A-C+0)种。
AC代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std; typedef long long LL;
LL dp[][][][][],A,B,C,ans;
int T,a[],b[],c[]; void init(){
memset(a,,sizeof(a));
memset(b,,sizeof(b));
memset(c,,sizeof(c));
LL aa=A,bb=B,cc=C;
int pos=;
while(aa){
a[pos++]=aa%;
aa/=;
}
pos=;
while(bb){
b[pos++]=bb%;
bb/=;
}
pos=;
while(cc){
c[pos++]=cc%;
cc/=;
}
} LL dfs(int pos,int la,int lb,int land,int lxor){
if(pos<) return ;
if(dp[pos][la][lb][land][lxor]!=-) return dp[pos][la][lb][land][lxor];
LL res=;
int up1=,up2=,up3=,up4=;
if(la) up1=a[pos];
if(lb) up2=b[pos];
if(land) up3=c[pos];
if(lxor) up4=c[pos];
for(int i=;i<=up1;++i)
for(int j=;j<=up2;++j){
if((i&j)>up3) continue;
if((i^j)<up4) continue;
res+=dfs(pos-,la&&(i==a[pos]),lb&&(j==b[pos]),land&&((i&j)==c[pos]),lxor&&((i^j)==c[pos]));
}
return dp[pos][la][lb][land][lxor]=res;
} int main(){
scanf("%d",&T);
while(T--){
memset(dp,-,sizeof(dp));
scanf("%lld%lld%lld",&A,&B,&C);
init();
ans=dfs(,,,,);
ans=ans-max(A-C+,0LL)-max(B-C+,0LL);
printf("%lld\n",A*B-ans);
}
return ;
}
2019牛客暑期多校训练营(第七场)-H Pair(数位dp)的更多相关文章
- 2019牛客暑期多校训练营(第三场)H题目
题意:给你一个N×N的矩阵,求最大的子矩阵 满足子矩阵中最大值和最小值之差小于等于m. 思路:这题是求满足条件的最大子矩阵,毫无疑问要遍历所有矩阵,并判断矩阵是某满足这个条件,那么我们大致只要解决两个 ...
- 2019牛客暑期多校训练营(第一场)-E(DP)
题目链接:https://ac.nowcoder.com/acm/contest/881/E 题意:求可分解成n个AB和m个BA的字符串的个数. 思路: 首先根据贪心思想,前n个A可作为AB的A,后m ...
- 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)
题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9: 对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可. 后者mod=1e9,5才 ...
- 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...
- 2019牛客暑期多校训练营(第一场) B Integration (数学)
链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 5242 ...
- 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...
- 2019牛客暑期多校训练营(第二场)F.Partition problem
链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...
- 2019牛客暑期多校训练营(第一场)A Equivalent Prefixes(单调栈/二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 Two arrays u and v each with m distinct elements ...
- [状态压缩,折半搜索] 2019牛客暑期多校训练营(第九场)Knapsack Cryptosystem
链接:https://ac.nowcoder.com/acm/contest/889/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 2019牛客暑期多校训练营(第二场)J-Subarray(思维)
>传送门< 前言 这题我前前后后看了三遍,每次都是把网上相关的博客和通过代码认真看了再思考,然并卵,最后终于第三遍也就是现在终于看懂了,其实懂了之后发现其实没有那么难,但是的的确确需要思维 ...
随机推荐
- MySQL树
树 树状图是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合.把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的. 它具有以下的特点:每个结点有零个 ...
- golang精选100题带答案
能力模型 级别 模型 初级 primary 熟悉基本语法,能够看懂代码的意图: 在他人指导下能够完成用户故事的开发,编写的代码符合CleanCode规范: 中级 intermediate 能够独立完成 ...
- window10 安装.net framework 2.0插件
1 背景 电脑升级到window10操作系统之后,在使用过程中安装某些软件(如 BI publisher)需要用到.net framework 2.0/3.5 框架. 例如:直接安装BI publis ...
- [MyBatis]向MySql数据库插入一千万条数据 批量插入用时6分 之前时隐时现的异常不见了
本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 这次实验的环境仍然和上 ...
- [java]将秒数转化为“天时分秒”的格式(转贴+修改)
public class Time { // format seconds to day hour minute seconds style // Exmplae 5000s will be form ...
- Linux下 安装jdk8
一.文件准备 1.1 文件名称 jdk-8u121-linux-x64.tar.gz 1.2 下载地址 http://www.oracle.com/technetwork/java/javase/do ...
- coursera 视频总是缓冲或者无法观看的解决办法(Windows 和 Linux 系统 环境)
现在读了一个机器学习方向的博士,虽然这么长时间也没有学明白什么,但是没事的时候也会看看一些书籍和资料,学这个方向的人基本都会看过吴恩达的coursera课程上的机器学习课程,我也是如此,不过交了钱以后 ...
- spring cloud consul上下线体验
spring cloud consul中默认会将spring.application.name作为ID 同一服务起多个实例时,ID默认会变成${spring.application.name}-${s ...
- Hibernate 的一些注解配置
网上参考资料很多,但总是不符合自身习惯,遂记录下来. 一对多的关系 如class与student的关系 class中 @OneToMany(mappedBy = "class") ...
- Spring下使用Redis
在Spring中使用Redis使用使用两个依赖包jedis.jar.spring-data-redis.jar 一下是Maven项目pom.xml添加依赖 <!--jedis.jar --> ...