国际惯例的题面:

听说这题的正解是找什么规律,数位DP是暴力......
好的,我就写暴力了QAQ。
我们令f[i][la][lb][lc]表示二进制从高到低考虑位数为i(最低位为1),是否顶n上界,是否顶m上界,是否顶k下界的数字和,g[i][la][lb][lc]表示(同上定义)的数字个数。
转移的话,先计算出这一位n,m,k的限制,然后枚举这一位第一个数和第二个数填什么,判定xor和是否满足k的条件,转移即可。
记忆化搜索实现较为简单。
注意最后计算答案的时候,方案数乘以k可能爆long long,所以k要先取模。

代码:
(就算我WA了,TLE了,代码写的像屎一样,也不include<iostream>!pair真好用。)

 #include<cstdio>
#include<algorithm>
#include<cstring>
typedef long long int lli;
const int maxn=1e2+1e1; lli f[maxn][][][],g[maxn][][][]; // f is sum , g is count .
int ba[maxn],bb[maxn],bc[maxn],mod; inline void dfs(int bit,int la,int lb,int lc) { // bit is the bit that we are determining in range [1,64] .
if( ~f[bit][la][lb][lc] ) return;
if( !bit ) {
f[bit][la][lb][lc] = , g[bit][la][lb][lc] = ;
return;
} int lima = !la || ba[bit] , limb = !lb || bb[bit] , limc = lc && bc[bit];
f[bit][la][lb][lc] = g[bit][la][lb][lc] = ;
for(int i=;i<=lima;i++) for(int j=;j<=limb;j++) if( ( i ^ j ) >= limc ) {
int ta = la&&i==lima , tb = lb&&j==limb , tc = lc&&(i^j)==limc;
dfs(bit-,ta,tb,tc);
g[bit][la][lb][lc] = ( g[bit][la][lb][lc] + g[bit-][ta][tb][tc] ) % mod ,
f[bit][la][lb][lc] = ( f[bit][la][lb][lc] + f[bit-][ta][tb][tc] + ( (lli) ( i ^ j ) << ( bit - ) ) % mod * g[bit-][ta][tb][tc] % mod ) % mod;
}
} inline int cutbit(lli t,int* dst) {
int ret = ; memset(dst,,sizeof(int)*maxn);
while(t) dst[++ret] = t & , t >>= ;
return ret;
} int main() {
static int T,mx;
static lli n,m,k,ans;
scanf("%d",&T);
while(T--) {
scanf("%lld%lld%lld%d",&n,&m,&k,&mod) , --n , --m , memset(f,-,sizeof(f)) , memset(g,,sizeof(g)) , mx = std::max( cutbit(k,bc) , std::max( cutbit(n,ba) , cutbit(m,bb) ) ) ,
dfs(mx,,,) , ans = (f[mx][][][]-g[mx][][][]*(k%mod)%mod+mod)%mod , printf("%lld\n",ans);
}
return ;
}

く遠く続いてる 空
遥远地 遥远地 无尽延伸的天空
その向こうで 君は 何想う
彼方的你 现在正想些什么
いつか消える あの星の下
在那颗终会陨落的星星下
永遠(とわ)を願い 想い見上げ
翘首仰望着 祈求着永恒

強く弱く光を放つ
灿烂的 黯淡的 明灭闪耀的星光
君の近くに 北斗七星
在你身边的 北斗七星
そんな 輝きであるように
我想像它一样照耀着你
君を想い 願い掛けて
思念着你 许下了愿望

4513: [Sdoi2016]储能表 数位DP的更多相关文章

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

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

  2. BZOJ.4513.[SDOI2016]储能表(数位DP)

    BZOJ 洛谷 切了一道简单的数位DP,终于有些没白做题的感觉了...(然而mjt更强没做过这类的题也切了orz) 看部分分,如果\(k=0\),就是求\(\sum_{i=0}^n\sum_{j=0} ...

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

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

  4. [SDOI2016]储能表——数位DP

    挺隐蔽的数位DP.少见 其实减到0不减了挺难处理.....然后就懵了. 其实换个思路: xor小于k的哪些都没了, 只要留下(i^j)大于等于k的那些数的和以及个数, 和-个数*k就是答案 数位DP即 ...

  5. BZOJ4513: [Sdoi2016]储能表(数位dp)

    题意 题目链接 Sol 一点思路都没有,只会暴力,没想到标算是数位dp??Orz 首先答案可以分成两部分来统计 设 \[ f_{i,j}= \begin{aligned} i\oplus j & ...

  6. [bzoj4513][SDOI2016]储能表——数位dp

    题目大意 求 \[\sum_{i = 0}^{n-1}\sum_{j=0}^{m-1} max((i\ xor\ j)\ -\ k,\ 0)\ mod\ p\] 题解 首先,开始并没有看出来这是数位d ...

  7. 4513: [Sdoi2016]储能表

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

  8. bzoj 4513 [Sdoi2016]储能表

    题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4513 题解 要求的式子 用数位dp的方法去做 我们把式子拆开 变成 $\sum_{i=0}^ ...

  9. 【LG4067】[SDOI2016]储能表

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

随机推荐

  1. ROS学习笔记(一) # ROS参数服务器

    参考 roscpp/Overview/Parameter Server 0. 概述 ROS参数服务器能够保存 string, int, float, double, bool, list, dicti ...

  2. mysql之 innobackupex备份+binlog日志的完全恢复【转】

    前言: MySQL的完全恢复,我们可以借助于完整的 备份+binlog 来将数据库恢复到故障点. 备份可以是热备与逻辑备份(mysqldump),只要备份与binlog是完整的,都可以实现完全恢复. ...

  3. Python3学习笔记14-迭代与列表生成式

    迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration) 在Python中,迭代是通过for...in来完成的. d = ...

  4. JS禁止鼠标右键、禁止全选、复制、粘贴的方法(所谓的防盗功能)

    简述:一个防君子不防小人的鸡肋的功能,针对小白还行. 代码如下: <script> //都能支持 document.oncontextmenu = function (e) { retur ...

  5. CSS导航条nav简单样式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. nginx转发

    1.下载nginx:官网(http://nginx.org)右侧下载,进入下载页,选在需要下载的版本 2.将压缩包解压到指定的目录下 (D:\Environments\nginx-1.8.0) 3.启 ...

  7. ajax post 传参数加引号和不加引号的区别

    1.前言 用ajax技术,type:post,data:参数列表.参数列表就是一个JSON数据,但key可以加引号,也可以不加引号,那总有区别的. 2.区别 var d2 = "two&qu ...

  8. 生活工作必备之SMART原则

    所谓SMART原则,即: 1. 目标必须是具体的(Specific) 2. 目标必须是可以衡量的(Measurable) 3. 目标必须是可以达到的(Attainable) 4. 目标必须和主要目标具 ...

  9. html中子界面与父界面相互操作或传值

    一.在使用iframe的页面,要操作这个iframe里面的DOM元素可以用: contentWindow.contentDocument(测试的时候chrom浏览器,要在服务器环境下) content ...

  10. 基于MFC的ActiveX控件开发教程------------浏览器插件之ActiveX开发

    浏览器插件之ActiveX开发(一) 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务 ...