博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1072 状压DP
阅读量:6443 次
发布时间:2019-06-23

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

  我们用w[i][j]来表示,i是一个二进制表示我们选取了s中的某些位,j表示这些位%d为j,w[i][j]则表示这样情况下的方案数,那么我们可以得到转移.w[i|(1<<k)][(j*10+s[k]-'0')%d]+=w[i][j]。

  假设s中有x个3,那么我们算出的状态中同样的数我们算了x!次,最后除掉就好了。

/**************************************************************    Problem: 1072    User: BLADEVIL    Language: C++    Result: Accepted    Time:476 ms    Memory:12680 kb****************************************************************/ //By BLADEVIL#include 
#include
using namespace std; int d,cnt[11],w[3010][1010];char s[11]; int main() { int task; scanf("%d",&task); while (task--) { scanf("%s%d",s,&d); int len=strlen(s); memset(cnt,0,sizeof cnt); for (int i=0;i

 

转载于:https://www.cnblogs.com/BLADEVIL/p/3679814.html

你可能感兴趣的文章
零基础开发一款微信商城小程序
查看>>
Swift之SQLite的基础使用
查看>>
swift 一些注意的地方(和oc 的区别)
查看>>
iOS开发下拉导航栏果冻效果
查看>>
iOS开发 AVFoundation 自定义视频录制
查看>>
如果你想坐在双十一项目室里买买买,那就来天猫吧
查看>>
融云IMKit SDK与FDFullscreenPopGesture冲突
查看>>
Android Service 学习
查看>>
4种写法实现点击ul列表中每个li打印索引
查看>>
科学甩锅技术: Typescript 运行时数据校验
查看>>
Data Binding 系列(三)布局和绑定表达式
查看>>
windows下git关联多个账号
查看>>
node.js学习之流解析(一)
查看>>
js限制显示字数
查看>>
计算机网络_数据链路层的功能
查看>>
引用传递分析实例
查看>>
升级Xcode 10遇到的问题做个记录
查看>>
别再等以后有时间了!!!学习数据结构从现在开始!!!!
查看>>
自动化日志收集及分析在支付宝 App 内的演进
查看>>
撩课-Web大前端每天5道面试题-Day26
查看>>