博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[SDOI2016]储能表——数位DP
阅读量:6567 次
发布时间:2019-06-24

本文共 1947 字,大约阅读时间需要 6 分钟。

挺隐蔽的数位DP。少见

其实减到0不减了挺难处理。。。。。然后就懵了。

 

其实换个思路:

xor小于k的哪些都没了,

只要留下(i^j)大于等于k的那些数的和以及个数,

和-个数*k就是答案

 

数位DP即可

f[i][0/1][0/1][0/1]表示,前i位,对n,m,k有无限制<=n,<=m,>=k?,xor值的总和

g[i][0/1][0/1][0/1]表示,前i位,对n,m,k有无限制<=n,<=m,>=k?,合法的方案数

然后枚举这一位的n,m数位填什么转移

注意爆int和爆long long:

1.1<<p爆int,这个还很大,必须立刻取模

2.最后tmp*k爆long long,k先对p取模

不稳啊~~

#include
#define reg register int#define il inline#define int long long#define numb (ch^'0')using namespace std;typedef long long ll;il void rd(ll &x){ char ch;x=0;bool fl=false; while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true); for(x=numb;isdigit(ch=getchar());x=x*10+numb); (fl==true)&&(x=-x);}namespace Miracle{const int N=66;ll n,m,k;ll mod;ll f[N][2][2][2];ll g[N][2][2][2];int main(){ int t; rd(t); while(t--){ scanf("%lld%lld%lld%lld",&n,&m,&k,&mod); --n;--m; memset(g,0,sizeof g);memset(f,0,sizeof f); g[61][1][1][1]=1; for(reg p=60;p>=0;--p){ int nn=(n>>p)&1LL,nm=(m>>p)&1LL,nk=(k>>p)&1LL; // cout<<" wei "<

<

nn)||(r&&j>nm)||(o&&((i^j)
nk))?0:1]+=(f[p+1][l][r][o]+(ll)(i^j)*(1LL*1<
nk))?0:1]+=(g[p+1][l][r][o]))%=mod; } } } } } } ll ans=0; ll tmp=0; for(reg l=0;l<=1;++l){
//lim n for(reg r=0;r<=1;++r){
//lim m for(reg o=0;o<=1;++o){
//lim k (ans+=f[0][l][r][o])%=mod; (tmp+=g[0][l][r][o])%=mod; } } } k%=mod; ans=(ans%mod-tmp%mod*k%mod+mod)%mod; printf("%lld\n",ans%mod); } return 0;}}signed main(){ Miracle::main(); return 0;}/* Author: *Miracle* Date: 2019/2/26 18:48:55*/

如果想到统计<=k的和和个数的话,就是一个限制比较多(维度多)的数位DP罢了。

 

转载于:https://www.cnblogs.com/Miracevin/p/10439639.html

你可能感兴趣的文章
Grub的安装方法
查看>>
SpringMVC通过注解方式读取properties文件中的值
查看>>
Spring+Dubbo+Zookeeper简单框架与使用
查看>>
Open Cascade DataExchange DXF
查看>>
Greenplum Hadoop分布式平台大数据解决方案实战教程
查看>>
编译安装LAMP之配置httpd以FastCGI方式与php整合
查看>>
Haproxy
查看>>
性能调优之Java系统级性能监控及优化
查看>>
SylixOS内核打印调试方法
查看>>
轻量级的jQuery表单验证插件 - HAPPY.js
查看>>
JAVA简单介绍2
查看>>
Spring MVC 框架搭建及详解
查看>>
Android startActivityForResult
查看>>
Hibernate 乐观锁和悲观锁
查看>>
C语言 学生宿舍管理系统
查看>>
在 Linux 下忘记 mysql root 密码的解决方法
查看>>
python-mysql的安装和基本操作
查看>>
snappy 在linux安装及使用
查看>>
回收 PV - 每天5分钟玩转 Docker 容器技术(152)
查看>>
[笔记] consul用grpc做健康检查注意点
查看>>