国际惯例的题面:

听说这题的正解是找什么规律,数位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. C++获取当前所有进程的完整路径

    实现代码 #include <stdio.h> #include <windows.h> #include <tlhelp32.h> #include <st ...

  2. Linux mmc framework2:基本组件之mmc

    1.前言 本文主要mmc组件的主要流程,在介绍的过程中,将详细说明和mmc相关的流程,涉及到其它组件的详细流程再在相关文章中说明. 2.主要数据结构和API TODO 3. 主要流程 3.1 mmc_ ...

  3. oracle数据库自增主键重复

    select max(t.id) from T_PLAT_ENUM_VALUE tdrop sequence T_PLAT_ENUM_VALUE;create sequence T_PLAT_ENUM ...

  4. web服务器tomcat入门实战

    一.tomcat介绍1.1 引入tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Su ...

  5. python下的socket常用方法举例

    python下的socket 1.简单的server和client端的socket代码 server.py: #!/usr/bin/env python #_*_ coding:utf-8 _*_ i ...

  6. Android studio下将项目代码上传至github包括更新,同步,创建依赖

    AS中设置GIT 一.开篇 本文讲如何使用Android Studio将项目上传到github,虽然讲上传github的文章很多,但是大部分都是使用Git Bash命令行,虽然效率高些,但是有点麻烦, ...

  7. 基于vue的UI框架集锦

    前端框架百花齐放.争奇斗艳,令人眼花缭乱.大神们一言不合就整一个框架出来,另小白们无所适从.下面罗列了一些比较优秀的UI框架,Star多的大都是老牌劲旅,Star少的许多是后起之秀. (1)Eleme ...

  8. 目标检测-yolo

    论文下载:http://arxiv.org/abs/1506.02640 代码下载:https://github.com/pjreddie/darknet 1.创新点 端到端训练及推断 + 改革区域建 ...

  9. C#检查服务状态和启动关闭服务

    WinForm 判断服务状态,显示服务名称和状态 https://blog.csdn.net/u013063880/article/details/78626200 C#获得服务,判断服务状态,启动服 ...

  10. Codeigniter使用HMVC(一)

    涉及三方代码: https://tutorials.kode-blog.com/codeigniter-admin-panel https://bitbucket.org/wiredesignz/co ...