D Count The Bits

题意:

输入k,b(1≤k≤1000,1≤b≤128);k,b(1\leq k\leq 1000,1\leq b\leq128);k,b(1≤k≤1000,1≤b≤128);
问在[0,2b)[0,2^b)[0,2b)以内kkk的倍数位为111的个数的和。

题解1(dp):

设dp[i][j]dp[i][j]dp[i][j]表示[0,2i)[0,2^i)[0,2i)以内模kkk为jjj的数的个数;
设f[i][j]f[i][j]f[i][j]表示[0,2i)[0,2^i)[0,2i)以内模kkk为jjj的数的位为1个数和。
转移:
dp[i][j]=dp[i−1][j]+dp[i−1][j−(1<<i)]dp[i][j]=dp[i-1][j]+dp[i-1][j-(1<<i)]dp[i][j]=dp[i−1][j]+dp[i−1][j−(1<<i)]即考虑第iii位为000和为111的情况;
f[i][j]=f[i−1][j]+f[i−1][j−(1<<i)]+dp[i−1][j−(1<<i)]f[i][j]=f[i-1][j]+f[i-1][j-(1<<i)]+dp[i-1][j-(1<<i)]f[i][j]=f[i−1][j]+f[i−1][j−(1<<i)]+dp[i−1][j−(1<<i)]同上考虑。
代码没写。

题解2(数位dp):

设dp[i][j][k]dp[i][j][k]dp[i][j][k]为到第iii位,模kkk为jjj,1的个数为kkk,的方案数,然后按数位dpdpdp套路搞搞就好了。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1009;
int k,b;
const int mod=1e9+9;
int dp[139][N][139];
int dfs(int x,int y,int cnt,bool lim){if(x<0)return y==0?cnt:0;if(!lim&&dp[x][y][cnt]!=-1)return dp[x][y][cnt];int sum=0;for(int i=0;i<=1;i++){sum=(sum+dfs(x-1,(y*2+i)%k,cnt+i,lim&i))%mod;}return dp[x][y][cnt]=sum;
}
int solve(){memset(dp,-1,sizeof(dp));return dfs(b-1,0,0,1);
}
signed main(){// freopen("tt.in","r",stdin),freopen("tt.out","w",stdout);cin>>k>>b;cout<<solve()<<endl;return 0;
}

2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)DCount The Bits(dp/数位dp)相关推荐

  1. 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)

    gdcpc前一天上午搞了场训练,水题挺多,还算增强信心.(这么简单的题目居然还是div1,这赛区-- 最终9题,平均每人3题,我写ACF.被hry压了一道E (难受啊. 下午去中大试机,win7系统就 ...

  2. 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) 【部分题解】

    A:因为删除是不计入操作次数的,所以转化一下就是求最长上升子序列,简单dp. 设dp[i]表示前i个字符能凑成上升子序列的最大长度,dp[i] = max(dp[j]+1, dp[i]) [j < ...

  3. 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) - D Count The Bits

    题目链接 Given an integer k and a number of bits b (1 ≤ b ≤ 128), calculate the total number of 1 bits i ...

  4. Gym 101982 (2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) )

    传送门: Problem A 温暖的签到题 #include<bits/stdc++.h> using namespace std; const int maxn=1007; char s ...

  5. 2016 ACM / ICPC Asia dalian Regional Contest 题解(11 / 11)【每日亿题2021 / 2 / 17】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A .(2017 ACM ICPC dalian H)To begin or not to be ...

  6. 2017 ACM ICPC Asia Shenyang Regional Contest 题解(10 / 13)【每日亿题2 / 16】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A.(2017 ICPC shenyang I)Little Boxes B.(2017 ICP ...

  7. 2013-2014 ACM-ICPC Pacific Northwest Regional Contest题解

    ProblemSet A by ? B by ? 先Floyd求出两两之间最短路. 二分答案,新建一个图,<=x点对连距离为1的边 再施展Floyd,判断,最远两点距离<=k C by ? ...

  8. 2019 ACM/ICPC 全国邀请赛(西安)J And And And (树DP+贡献计算)

    Then n - 1n−1 lines follow. ii-th line contains two integers f_{a_i}(1 \le f_{a_i} < i)fai​​(1≤fa ...

  9. The 2019 ICPC Asia Shanghai Regional Contest

    The 2019 ICPC Asia Shanghai Regional Contest 题号 题目 知识点 A Mr. Panda and Dominoes B Prefix Code C Maze ...

最新文章

  1. Android 中一些常用类的常用方法(Math、Random、Color、Paint、Canvas、Bitmap、BitmapFactory)...
  2. 在活动目录中,转移和占用操作主机角色(占用)
  3. 菜鸟学习笔记3——jQuery 选择器
  4. python是目前计算机语言的主流吗_即便C++现在是增长最快的语言,为什么它不及Java、Python流行?...
  5. linux集群搭建coolrainbow,Rainbow°110408_教程▍KBFS听歌学韩语—So Cool[Rainbow]
  6. win10只有edge浏览器能上网的解决方法
  7. 命令行工具tshark使用小记
  8. android聊天,存储聊天记录sqlite
  9. 设置、获得对话框中 编辑框控件 EDIT 的内容
  10. mysql表关联查询都有什么方式_Mysql数据库多表联合查询有几种方法?
  11. 【学习笔记】程序设计导引及在线实践 数值转换问题
  12. vim 常用的快捷键
  13. python学习——格拉布斯准则实现
  14. mysql 拼接字符串查询
  15. 前端基础(二十一):移动端H5调用摄像头拍照旋转解决方案
  16. 质性数据分析软件NVivo的编码比较查询
  17. win10电脑IIS服务器配置ASP环境
  18. jdk证书的相关命令
  19. Docker系列(8) Docker网络(3)-- 单机Docker网络配置
  20. 运行海康威视sdk实现拍照遇到的问题与解决

热门文章

  1. 线性规划求解器 matlab,基于求解器设置线性规划
  2. 前端自学资料汇总001
  3. VMware配置文件*.wmx文件损坏的解决办法
  4. 阿里云、腾讯云、百度云、京东云、华为云、盛大云、ucloud他们之间优势分别是?
  5. Linux命令之创建空文件touch
  6. 垃圾自动分拣系统python代码_[HuskyLens]掌控垃圾分拣系统
  7. Javaweb框架 思维导图
  8. 支付宝接口 - 即时到账交易接口 对接 整理 1
  9. Python Sklearn库源码学习--kmeans
  10. Ubuntu 查看内存实际频率