求 $\sum\limits_{i=0}^{n-1} \sum\limits_{j=0}^{m-1} max((x \space xor \space j) - k,0)$ ,膜 $p$

$n,m \leq 10^{18},p \leq 10^9$,有 $5000$ 组数据

sol:

老年选手不会找规律,大力数位 dp

记

$F_{(i,n1,m1,k1)}$ 为考虑前 $i$ 位,是否卡 $n$ 的上界,是否卡 $m$ 的上界,是否卡 $k$ 的上界的所有 $(i,j)$ 异或和

$G_{(i,n1,m1,k1)}$ 为考虑前 $i$ 位,是否卡 $n$ 的上界,是否卡 $m$ 的上界,是否卡 $k$ 的上界的所有 $(i,j)$ 方案数

转移的时候讨论都不用讨论

#include<bits/stdc++.h>
#define LL long long
#define rep(i,s,t) for(register int i = (s),i##end = (t); i <= i##end; ++i)
#define dwn(i,s,t) for(register int i = (s),i##end = (t); i >= i##end; --i)
using namespace std;
inline LL read()
{
LL x=,f=;char ch;
for(ch=getchar();!isdigit(ch);ch=getchar())if(ch=='-')f=-f;
for(;isdigit(ch);ch=getchar())x=*x+ch-'';
return x*f;
}
#define pii pair<LL, LL>
#define FS first
#define SC second
int p,mxlen;
int vis[][][][];
pii f[][][][];
LL n,m,k;
void cal(LL n) {
LL tmp = n;
int cnt = ;
while(tmp) tmp>>=,cnt++;
mxlen = max(mxlen,cnt);
}
void inc(LL &x, LL y) {
x += y;
if (x >= p) x -= p;
}
pii dfs(int len,int n1,int m1,int k1){
if (len>mxlen) return make_pair(,);
if (vis[len][n1][m1][k1]) return f[len][n1][m1][k1];
vis[len][n1][m1][k1] = ;
int nn=(n>>(mxlen-len))&,mm=(m>>(mxlen-len))&,kk=(k>>(mxlen-len))&;
for (int i=;i<=(n1?nn:);i++)
for (int j=;j<=(m1?mm:);j++){
if (k1 && (i^j)<kk) continue;
pii tmp=dfs(len+,n1&&(i==nn),m1&&(j==mm),k1&&((i^j)==kk));
inc(f[len][n1][m1][k1].FS,tmp.FS);
inc(f[len][n1][m1][k1].SC,((1ll<<(mxlen-len))*(i^j)%p*tmp.FS%p+tmp.SC)%p);
}
return f[len][n1][m1][k1];
}
LL solve(LL n, LL m, LL k) {
memset(f, , sizeof(f));
memset(vis, , sizeof(vis));
mxlen = ;
cal(n); cal(m); cal(k);
pii ans = dfs(, , , );
return ((ans.SC % p - k % p * ans.FS % p + p) % p);
}
int main(){
int T = read();
while (T--) {
n = read() - , m = read() - , k = read(), p = read();
printf("%lld\n", solve(n, m, k));
}
}

bzoj4513 储能表的更多相关文章

  1. 【BZOJ4513】[Sdoi2016]储能表 数位DP

    [BZOJ4513][Sdoi2016]储能表 Description 有一个 n 行 m 列的表格,行从 0 到 n−1 编号,列从 0 到 m−1 编号.每个格子都储存着能量.最初,第 i 行第 ...

  2. BZOJ4513 SDOI2016 储能表 记忆化搜索(动态规划)

    题意: 题面中文,不予翻译:SDOI2016储能表 分析: 据说有大爷用一些奇怪的方法切掉了这道题%%%%% 这里用的是大众方法——动态规划. 其实这是一道类似于二进制数位dp的动态规划题,(但是实际 ...

  3. 搜索(四分树):BZOJ 4513 [SDOI2016 Round1] 储能表

    4513: [Sdoi2016]储能表 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 395  Solved: 213[Submit][Status] ...

  4. BZOJ 4513: [Sdoi2016]储能表 [数位DP !]

    4513: [Sdoi2016]储能表 题意:求\[ \sum_{i=0}^{n-1}\sum_{j=0}^{m-1} max((i\oplus j)-k,0) \] 写出来好开心啊...虽然思路不完 ...

  5. 「SDOI2016」储能表(数位dp)

    「SDOI2016」储能表(数位dp) 神仙数位 \(dp\) 系列 可能我做题做得少 \(QAQ\) \(f[i][0/1][0/1][0/1]\) 表示第 \(i\) 位 \(n\) 是否到达上界 ...

  6. 4513: [Sdoi2016]储能表

    4513: [Sdoi2016]储能表 链接 分析: 数位dp. 横坐标和纵坐标一起数位dp,分别记录当前横纵坐标中这一位是否受n或m的限制,在记录一维表示当前是否已经大于k了. 然后需要两个数组记录 ...

  7. 【LG4067】[SDOI2016]储能表

    [LG4067][SDOI2016]储能表 题面 洛谷 题解 这种$n$.$m$出奇的大的题目一看就是数位$dp$啦 其实就是用一下数位$dp$的套路 设$f[o][n][m][k]$表示当前做到第$ ...

  8. BZOJ4513 SDOI2016储能表(数位dp)

    如果n.m.k都是2的幂次方,答案非常好统计.于是容易想到数位dp,考虑每一位是否卡限制即可,即设f[i][0/1][0/1][0/1]为第i位是/否卡n.m.k的限制时,之前的位的总贡献:g[i][ ...

  9. 【bzoj4513】储能表【数位DP】

    本来是想去学数位DP,作死挑了这道题,爆炸... 听说正确姿势应该是去做bzoj4521[手机],听说迪克们当场都A了,Orz 然后对于4513,我只想说,一.脸.懵.逼 首先,我是无论如何都无法想到 ...

随机推荐

  1. python默认参数不能定义为可变对象类型

    python的默认参数只会在函数定义时被确定,而不是每次调用时重新确定,所以,一旦在函数中修改了默认参数,则在随后的调用中都会生效 由于这个特性,在定义函数时,如果默认参数使用可变的对象类型,如空列表 ...

  2. Apache NiFi 开发 安装说明

    系统环境: vmware安装的centos6.7虚拟机 jdk1.8版本 maven库3.3.9版本(在使用源码编译启动的时候需要修改配置文件与当前使用的maven版本匹配,最低使用版本好像是3.1. ...

  3. SpringBoot2.1.0 application.properties配置

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  4. python中的值传递和引用传递

    Python中的变量是没有类型的,我们可以把它看做一个(*void)类型的指针,变量是可以指向任何对象的,而对象才是有类型的. Python中的对象有可变对象(number,string,tuple等 ...

  5. String和StringBufffer的区别

    string的字符串操作都是废弃已有的对象,开辟一个新的内存空间创建一个新的对象 比如一个string str= "字符串"; str += "a"; 这样的操 ...

  6. 快乐学习 Ionic Framework+PhoneGap 手册1-5 {IO开关}

    当然,即使努力了也没做成,至少你也有收获,因为你知道自己以后可以避开这个坑. 这是一个"IO"开关,请看效果图和代码,下一节,说明,数据交换 Index HTML Code < ...

  7. Hadoop相关知识整理系列之一:HBase基本架构及原理

    1. HBase框架简单介绍 HBase是一个分布式的.面向列的开源数据库,它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式.HBas ...

  8. INSPIRED启示录 读书笔记 - 第40章 最佳实践经验

    十大要点 1.产品管理的职责:许多产品经理将大把的时间浪费在与产品管理无关的工作上 2.用户体验:对于大多数软件产品来说,用户体验就是产品的生命 3.机会评估:用方便快捷的机会评估方法取代过时的市场需 ...

  9. Android系统--输入系统(三)必备Linux知识_双向通信(scoketpair)

    Android系统--输入系统(三)必备Linux知识_双向通信(scoketpair) 引入 1. 进程和APP通信 创建进程 读取.分发 - 进程发送输入事件给APP 进程读取APP回应的事件 输 ...

  10. Centos7.4 Nginx反向代理+负载均衡配置

    Ningx是一款高性能的HTTP和反向代理服务器,配置起来也比较简单. 测试环境: 172.16.65.190 Nginx-反向代理 172.16.65.191 Ningx-Web 172.16.65 ...