hdu4734 F(x)
这题当时在网络赛时很费劲的推出来的,以递推的形式写出来的,一些边界点特别不好控制,靠看数据改出来的。现在改出dfs形式,也是很简单的。
因为f(x)的数不会很大,直接保留前面枚举的数得出的结果即可。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 15000
#define LL long long
//#define INF 1e18+1e12
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
const LL INF = (1ll<<);
int dp[][N],p[];
int d[];
int dfs(int i,int s,bool e)
{
if(s<) return ;
if(i==-) return ;
if(!e&&dp[i][s]!=-) return dp[i][s];
int mk = e?d[i]:;
int ans = ; for(int j = ;j <= mk ; j++)
ans+=dfs(i-,s-j*p[i],e&&j==mk);
return e?ans:dp[i][s] = ans;
}
int cal(int a,int b)
{
int i,g=;
while(a)
{
d[g++] = a%;
a/=;
}
int s = ;
for(i = ; i < g ; i++)
{
s+=d[i]*p[i];
}
memset(d,,sizeof(d));
g = ;
while(b)
{
d[g++] = b%;
b/=;
}
return dfs(g-,s,);
}
int main()
{
int i,t,a,b;
int kk = ;
p[] = ;
for(i = ; i <= ; i++)
p[i] = p[i-]*;
memset(dp,-,sizeof(dp));
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
printf("Case #%d: %d\n",++kk,cal(a,b));
}
return ;
}
hdu4734 F(x)的更多相关文章
- HDU-4734 F(x) 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 注意到F(x)的值比较小,所以可以先预处理所有F(x)的组合个数.f[i][j]表示 i 位数时 ...
- [hdu4734]F(x)数位dp
题意:求0~f(b)中,有几个小于等于 f(a)的. 解题关键:数位dp #include<bits/stdc++.h> using namespace std; typedef long ...
- hdu4734 F(x)(数位dp)
题目传送门 F(x) Time Limit: 1000/500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU4734 F(x) 题解 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 题目大意: 对于一个 \(n\) 位十进制数 \(x\) (\(A_nA_{n-1}A_{n-2 ...
- [HDU4734] F(x)(数位dp+优化)
>传送门<题意:对于一个有n位(这n位从高位到低位分别是An,An-1,An-2 ... A2,A1)的十进制数,我们定义它的权值F(x)=An*2n-1 + An-1*2n-2 + .. ...
- HDU4734 F(x) (数位DP)
(如此简短的题目给人一种莫名的压迫感......) 题目中定义一个数的权值求解函数:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1. 观察 ...
- 数位dp总结
由简单到稍微难点. 从网上搜了10到数位dp的题目,有几道还是很难想到的,前几道基本都是模板题,供入门用. 点开即可看题解. hdu3555 Bomb hdu3652 B-number hdu2089 ...
- 「算法笔记」数位 DP
一.关于数位 dp 有时候我们会遇到某类问题,它所统计的对象具有某些性质,答案在限制/贡献上与统计对象的数位之间有着密切的关系,有可能是数位之间联系的形式,也有可能是数位之间相互独立的形式.(如求满足 ...
- Mysql_以案例为基准之查询
查询数据操作
随机推荐
- 分时间uu
#include<stdio.h> int map[20][4]; typedef struct node{ int star; int end; }node; node dui[10 ...
- [Virtualization][qemu][kvm][virtio] 使用 QEMU/KVM 模拟网卡多队列
序: 做DPDK例子的时候,发现一些例子需要多队列,而我当前所使用的虚拟机并不是多队列的.关于我当前虚拟机的状态,可以见前文. 所以,我的需求就是,让虚拟机里的网卡,有多队列! 参考: http:// ...
- CSS典型案例实践
CSS案例实践 一.层布局:定位元素重叠 在CSS中可以通过z-index属性来确定定位元素的层叠等级.需要注意的是: z-index属性只有在元素的position属性取值为relative.abs ...
- Inside Flask - json 处理
Inside Flask - json 处理 在处理 web api 时,json 是非常好用的数据交换格式,它结构简单,基本上各种主流的编程语言都有良好的支持工具. flask 中处理 json 时 ...
- float属性
float属性介绍 float给人一种捉摸不透的感觉,不过可以依照浏览器的解析机制(根据HTML文档,从上往下解析),对float属性了解一二.float有四种值:none/left/right/in ...
- python实现并行爬虫
问题背景:指定爬虫depth.线程数, python实现并行爬虫 思路: 单线程 实现爬虫类Fetcher 多线程 threading.Thread去调Fet ...
- C++函数模板template
一. 问题: 强类型语言要求我们为所有希望比较的类型都实现一个实例 int min(int a, int b) { return a < b ? a : b; } double min(dou ...
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead
Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead 在解决问题Underscores can only ...
- Openstack的keystone的user-role-list命令的使用
直接在shell模式下执行 [root@node-5 ~]# keystone user-role-list WARNING: Bypassing authentication using a tok ...
- CSS 笔记一(Selectors/ Backgrounds/ Borders/ Margins/ Padding/ Height and Width)
Selectors/ Backgrounds/ Borders/ Margins/ Padding/ Height and Width CSS Introduction: CSS stands for ...