HDU 3271-SNIBB(数位dp)
题意:给一个数q,
q=1时求给定区间,给定进制,各数位和等于m的数字的个数
q=2时求给定区间,给定进制,各数位和等于m的数字中的第k大的数字
分析:dp[i][sum][j],表示长度为i当前数位和是sum,进制是j的个数,q=2时用二分求出k大数
题意给的区间[x,y],x不一定小于y,给定区间没k大数,则输出 Could not find the Number!
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<11
#define All 1,N,1
#define read freopen("in.txt", "r", stdin)
const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod = ;
ll dp[][][],x,y,k;
int b,m,bit[];
ll dfs(int i,int s,int j,int e){
if(i==)return (s==m);
if(!e&&dp[i][s][j]!=-)return dp[i][s][j];
int u=e?bit[i]:b-;
ll num=;
for(int v=;v<=u;++v){
num+=dfs(i-,s+v,j,e&&(v==u));
}
return e?num:dp[i][s][j]=num;
}
ll solve1(ll a){
int len=;
if(a<)return ;
while(a){
bit[++len]=a%b;
a/=b;
}
return dfs(len,,b,);
}
ll solve2(){
ll l=x,r=y;
ll num=solve1(x-);
if(solve1(y)-num<k)return -;
while(l<=r){
ll mid=(l+r)>>;
if(solve1(mid)-num<k)l=mid+;
else r=mid-;
}
return l;
}
int main()
{
int q,cas=;
while(~scanf("%d",&q)){
memset(dp,-,sizeof(dp));
printf("Case %d:\n",++cas);
if(q==){
scanf("%I64d%I64d%d%d",&x,&y,&b,&m);
if(x>y)swap(x,y);
printf("%I64d\n",solve1(y)-solve1(x-));
}
else{
scanf("%I64d%I64d%d%d%I64d",&x,&y,&b,&m,&k);
if(x>y)swap(x,y);
ll tmp=solve2();
if(tmp!=-)
printf("%I64d\n",tmp);
else
printf("Could not find the Number!\n");
}
}
return ;
}
HDU 3271-SNIBB(数位dp)的更多相关文章
- hdu 3271 SNIBB 数位DP+二分
思路:dp[i][j]:表示第i位在B进制下数字和. 用二分找第k个数! 代码如下: #include<iostream> #include<stdio.h> #include ...
- Bomb HDU - 3555 (数位DP)
Bomb HDU - 3555 (数位DP) The counter-terrorists found a time bomb in the dust. But this time the terro ...
- HDU 3271 SNIBB
SNIBB Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 3271 ...
- HDU 2089 简单数位dp
1.HDU 2089 不要62 简单数位dp 2.总结:看了题解才敲出来的,还是好弱.. #include<iostream> #include<cstring> #i ...
- HDU(3555),数位DP
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others ...
- HDU(4734),数位DP
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4734 F(x) Time Limit: 1000/500 MS (Java/Others) ...
- HDU 3555 Bomb 数位dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others) Mem ...
- Hdu 4734 【数位DP】.cpp
题意: 我们定义十进制数x的权值为f(x) = a(n)*2^(n-1)+a(n-1)*2(n-2)+...a(2)*2+a(1)*1,a(i)表示十进制数x中第i位的数字. 题目给出a,b,求出0~ ...
- HDU 6148 (数位DP)
### HDU 6148 题目链接 ### 题目大意: 众所周知,度度熊非常喜欢数字. 它最近发明了一种新的数字:Valley Number,像山谷一样的数字. 当一个数字,从左到右依次看过去数字没有 ...
- hdu 3652 【数位dp】
hdu 3652 题意:求1到n中包含'13'('13'不一定连续)且能被13整除的数的个数. 这是我第一道比较了能看懂的数位dp.定义状态dp[pos][res][sta]表示处理到第pos位,模的 ...
随机推荐
- 【BZOJ3262】 陌上花开
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- ASP + ACCESS保存图片文件之实现
con.execute "CREATE tblImg (lngId COUNTER PRIMARY KEY, binImg IMAGE)" set ads=createobject ...
- WP-Syntax 插件使用方法
技术博客中使用WP-Syntax将代码高亮是最常见的.而一段时间不用总会忘记每种语言的的pre标签的值. 这里简单介绍下,WP-Syntax 是一个针对 Wordpress 的代码高亮插件,最大的优点 ...
- 看几道JQuery试题后总结(下篇)
感谢圆友的提醒 昨天下午完成了9道试题中的前4道,之后好多园友存在些疑惑和建议,在这里我一并说一下吧.首先对于昨天第一题可能存在误导,在JQuery中并没有innerHTML这个属性,不过我们可以将J ...
- Android 显示大图片
主要的代码如下: BitmapFactory.Options options = new BitmapFactory.Options(); //图片解析配置 options.inJustDecodeB ...
- maven 如何解决因本地jar导致的编译错误
如何解决Maven依赖本地非repository中的jar包,依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理.http://www.mamicode.com/info-det ...
- 【BZOJ 2618】 2618: [Cqoi2006]凸多边形 (半平面交)
2618: [Cqoi2006]凸多边形 Description 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233. Input 第一 ...
- 非常好的Demo网站
http://www.xdemo.org/
- HTTP/1.1 Range和Content-Range
http://www.cnblogs.com/bayonetxxx/archive/2011/03/19/1989162.html 假设你要开发一个多线程下载工具,你会自然的想到把文件分割成多个部分, ...
- Nginx的介绍和使用
http://blog.csdn.net/shimiso/article/details/8690897 1.什么是Nginx Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向 ...