HDU 4734 F(x)
这题可能非递归版好写?
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int t,a,b,dp[][],ret=,bit[];
void get_table()
{
for (int i=;i<=;i++) dp[][i]=;
for (int i=;i<=;i++) dp[][i]=;
for (int i=;i<=;i++)
for (int j=;j<=;j++)
for (int k=;k<=;k++)
if (j>=k*(<<(i-))) dp[i][j]+=dp[i-][j-k*(<<(i-))];
for (int i=;i<=;i++)
for (int j=;j<=;j++)
dp[i][j]+=dp[i][j-];
}
void get_bit(int x)
{
ret=;
while (x) {bit[++ret]=x%;x/=;}
}
int f(int x)
{
get_bit(x);int ans=;
for (int i=ret;i>=;i--) ans=(ans<<)+bit[i];
return ans;
}
int dfs(int pos,int ret)
{
if (!pos) return ;
int i,ans=;
for (i=;i<bit[pos];i++)
{
if (ret>=i*(<<(pos-)))
ans+=dp[pos-][ret-i*(<<(pos-))];
else break;
}
if (i!=bit[pos]) return ans;
if (ret>=bit[pos]*(<<(pos-))) ans+=dfs(pos-,ret-bit[pos]*(<<(pos-)));
return ans;
}
void work(int x)
{
int ff=f(a);get_bit(b);
printf("Case #%d: %d\n",x,dfs(ret,ff));
}
int main()
{
scanf("%d",&t);get_table();
for (int i=;i<=t;i++)
{
scanf("%d%d",&a,&b);
work(i);
}
return ;
}
HDU 4734 F(x)的更多相关文章
- 【数位DP】 HDU 4734 F(x)
原题直通车:HDU 4734 F(x) 题意:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1, 求0.....B中F[x]<=F[A ...
- HDU 4734 F(x) 2013 ACM/ICPC 成都网络赛
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4734 数位DP. 用dp[i][j][k] 表示第i位用j时f(x)=k的时候的个数,然后需要预处理下小 ...
- HDU 4734 - F(x) - [数位DP][memset优化]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 Time Limit: 1000/500 MS (Java/Others) Memory Lim ...
- hdu 4734 F(x)(数位dp+优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 题意:我们定义十进制数x的权值为f(x) = a(n)*2^(n-1)+a(n-1)*2(n-2 ...
- HDU - 4734 F(x) (数位dp)
For a decimal number x with n digits (A nA n-1A n-2 ... A 2A 1), we define its weight as F(x) = A n ...
- 题解——HDU 4734 F(x) (数位DP)
这道题还是关于数位DP的板子题 数位DP有一个显著的特征,就是求的东西大概率与输入关系不大,理论上一般都是数的构成规律 然后这题就是算一个\( F(A) \)的公式值,然后求\( \left [ 0 ...
- HDU 4734 F(x) (2013成都网络赛,数位DP)
F(x) Time Limit: 1000/500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 4734 F(x) ★(数位DP)
题意 一个整数 (AnAn-1An-2 ... A2A1), 定义 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,求[0..B]内有多少 ...
- HDU 4734 F(x) (数位DP,基础)
题意: 一个非负整数的十进制位是这样的 (AnAn-1An-2 ... A2A1),定义F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1. ...
随机推荐
- 【Linux命令与工具】磁盘与目录的容量——df和du
df(disk free):列出文件系统的整体磁盘使用量 用法: df [-akmhi] [目录或文件名] 参数: -a: 列出所有的文件系统,包括系统特有的/proc等文件系统 -k: 以KB的容量 ...
- easyui dialog 扩展load
$.extend($.fn.panel.methods, { showMask: function(jq, msg){ return jq.each(function(){ var pal = $(t ...
- selenium杀掉浏览器进程方法
* 杀掉浏览器进程 */ public static void operateWindowsProcess(){ WindowsUtils.tryToKillByNa ...
- javascript 常用实用函数。。。。。。
javascript 正则表达式 1.获取屏幕大小尺寸 /* 获取屏幕大小尺寸 */ var getScreen = function () { var screen = { width: 0, he ...
- USB port 如何识别不同的Charger类型
基于Qualcom 8960/8921平台 一,软件分析 1. USB charger types & Power supply types USB_INVALID_CHARGER ...
- 提取data.frame中的部分数据(不含列标题和行标题)
?unlist Given a list structure x, unlist simplifies it to produce a vector which contains all th ...
- 5----table类型
table类型是非常重要的Lua数据类型,也是Lua唯一能描述数据结构的类型 table类型可以很灵活的描述多种数据结构,其本身是基于键值对的形式存储数据的 字典结构 字典结构的table 的两种创建 ...
- CSS3之尖角标签
如图所示,Tag标签的制作通常使用背景图片,现在用CSS3代码就能实现尖角效果(需浏览器支持CSS3属性). 运用CSS3样式实现尖角标签,只需要写简单的HTML结构和CSS样式. <p> ...
- 进程、线程、socket套接字-资源大小 & 切换代价
另,进程 & 线程的很多知识可以看这里:http://www.cnblogs.com/charlesblc/p/6135666.html 今天查了一下进程和线程的资源占用. 比如问:栈和堆的大 ...
- transition&transform,CSS中过度和变形的设置
设置样式的过度效果transition-property: none/all; transition-duration:2s;运动时间,默认是0秒 transition-delay:0s; 延迟时间默 ...