我觉得这位大佬说的已经很好了,可以直接看她的思路了;

大佬思路

但是她的代码没有考虑到1 1 1 1的情况,

代码思路

这个是可以的很长且没有注释;

#include<bits/stdc++.h>
using namespace std;
long long d[40][40];
long long c[40][40];
long long a[40];
long long x,y;
int k,b;
long long makedp(int i,int j,long long sub){
//该函数表示从i个位置当中选j个位置赋值为1且小于等于sub;
if(i==0){
if(j==0&&sub==0){
return 1;
}
else return 0;
}
if(i<j){//不够要求
return 0;
}
if(sub==0){
if(j==0){
return 1;//找0位
}
else{
return 0;
}
}
else if(sub>=d[i][j]){
//这里很好的避免了重复;
return c[i][j];//最大,就找小于他的最多
}
long long sum=0;
sum+=makedp(i-1,j,sub);//取消最高位太大减小
sum+=makedp(i-1,j-1,sub-a[i]);//在保证最高位在的情况
return sum;
}
void init(){
memset(a,0,sizeof(a));
memset(d,0,sizeof(d));
long long t=1;
a[1]=t;
for(int i=2;i<=32;i++){
t=t*b;
if(t>y){
break;
}
a[i]=t;//a数组表示的是b^(i-1);
}
d[1][1]=1;
for(int i=2;i<=32;i++){
if(a[i]==0){
break;
}
for(int j=1;j<=i;j++){
//d=b^(i-1)+b^(i-2)+..有j个元素
d[i][j]=d[i][j-1]+a[i-j+1];
}
}
}
int main(){
for(int i=0;i<=32;i++){
c[i][0]=1;
}
//这里表示的是组合数,
//从i位数中取出j个来。
for(int i=1;i<=32;i++){
for(int j=1;j<=i;j++){
c[i][j]=c[i-1][j]+c[i-1][j-1];
}
}
while(~scanf("%lld%lld%d%d",&x,&y,&k,&b)){
init();
int u;
for(int i=1;i<=32;++i){
//找到不超过y的b^(i-1)
if(a[i]>y){
u=i-1;//所以减一
break;
}
else if(a[i]==0){
u=i-1;
break;
}
}
long long t1=makedp(u,k,y);
for(int i=1;i<=32;++i){
if(a[i]>x-1){
u=i-1;
break;
}
else if(a[i]==0){
u=i-1;//超出2
break;
}
}
long long t2=makedp(u,k,x-1);
//适用减法行为
cout<<t1-t2<<endl;
}
return 0;
}

ZCMU-1033的更多相关文章

  1. 【hihoCoder】1033: 交错和

    初探数位dp 介绍了数位类统计的基础知识.以下列出其中的基础点: 基本问题 统计在区间[l, r]中满足条件的数的个数 思路 1. [l, r] 将问题转换为 在[0, r]中满足条件的个数 - 在[ ...

  2. 为什么Visual Studio的安装目录下有名为1033或2052的文件夹?

    一直不清楚MS诸多产品的安装目录下为什么总有个名为1033或者2052的目录 搜索一下才知道,原来叫 LCID(Locale ID,区域性标识符) 常见的如:1033表示英语(美国),2052表示中文 ...

  3. PAT乙级 1033. 旧键盘打字(20)

    1033. 旧键盘打字(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 旧键盘上坏了几个键,于是在敲一段文 ...

  4. 【wikioi】1033 蚯蚓的游戏问题(费用流)

    http://wikioi.com/problem/1033/ 这题也是很水的费用流啊,同之前那题一样,拆点然后建边,容量为1,费用为点权.然后建个源连第一行每个点,容量为1,费用为0,然后最后一行每 ...

  5. PAT-乙级-1033. 旧键盘打字(20)

    1033. 旧键盘打字(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 旧键盘上坏了几个键,于是在敲一段文 ...

  6. PAT 1033. To Fill or Not to Fill (25)

    题目地址:http://pat.zju.edu.cn/contests/pat-a-practise/1033 此题是一道贪心算法题,难度较大,关键在于贪心策略的选择: #include <cs ...

  7. 阿里云服务器(Win 2008 R2 Standard)安装MSSM 2008 R2之1033和2052问题

    最近在给租用的阿里云服务器安装Sql Server 2008 R2 Express时,遭遇下面的问题.经过几番折腾后,终于解决问题,完成安装,这里总结分享我的解决方法,希望能给遇到相同问题的小伙伴们节 ...

  8. lightoj 1033 区间dp

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1033 #include <cstdio> #include <cst ...

  9. BZOJ 1033 杀蚂蚁

    Description 最近,佳佳迷上了一款好玩的小游戏:antbuster.游戏规则非常简单:在一张地图上,左上角是蚂蚁窝,右下角是蛋糕,蚂蚁会源源不断地从窝里爬出来,试图把蛋糕搬回蚂蚁窝.而你的任 ...

  10. [BZOJ 1033] [ZJOI2008] 杀蚂蚁antbuster 【模拟!】

    题目链接: BZOJ - 1033 题目分析 模拟!纯粹按照题目描述模拟! 这是一道喜闻乐见的经典模拟题! 我一共写了2遍,Debug 历时2天的所有晚自习 ... 时间超过 8h ... 我真是太弱 ...

随机推荐

  1. SQL Server 冗余维护

    介绍 冗余是维护的魔鬼, 是性能优化的天使 常见的冗余有 1. computed column 2. principal 的识别字段 3. cross computed 4. cascade soft ...

  2. ASP.NET Core – 读写 Request / Response

    需求 常见的需求就是从 request 里面读取一些 information. 比如 request URL, header, cookie, 写入 response header, cookie 实 ...

  3. 八皇后dfs全排列——洛谷1219

    [USACO1.5] 八皇后 Checker Challenge 题目描述 一个如下的 \(6 \times 6\) 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括 ...

  4. 暑假集训CSP提高模拟1

    A.Start 比较小的大模拟,还没改出来 B.mine 线性推一下(这个题记搜容易写偏,因为分讨太多) 设 \(f[i][j]\),第一维表示位置,第二位表示末位状态(是雷,是 \(0\),是 \( ...

  5. 5.7 函数y=Asin(ωx+φ)的图像和性质

    \({\color{Red}{欢迎到学科网下载资料学习 }}\) [ [高分突破系列]高一数学上学期同步知识点剖析精品讲义与分层练习] (https://www.zxxk.com/docpack/27 ...

  6. vue打包的时候删除 console 和 debugger

    esbuild: { pure: VITE_DROP_CONSOLE ? ['console.log', 'debugger'] : [], supported: { // https://githu ...

  7. input 的hidden 属性

    hidden 会隐藏input 标签内容显示,不占位置 : <input type="file" name="" id="" ref= ...

  8. Kubernetes的RBAC权限控制

    role和roleBinding Role资源定义了哪些操作可以在哪些资源上执行.也可以直接控制访问的url的权限,下面的cluster也是这样. 查询所有service的demo: apiVersi ...

  9. apache安装详解

    Apache安装 准备工作. 首先在C盘根目录下创建一个名为web的文件夹作为php开发环境的安装位置,并在web文件夹中创建apache24子文件夹,将apache解压后文件放至此处. 安装包 首先 ...

  10. Python实现火柴人的设计与实现

    1.引言 火柴人(Stick Figure)是一种极简风格的图形,通常由简单的线段和圆圈组成,却能生动地表达人物的姿态和动作.火柴人不仅广泛应用于动画.漫画和涂鸦中,还可以作为图形学.人工智能等领域的 ...