zoj3416 Balanced Number
这题纠结了好久,刚开始想到的是正解,不过想到可能会出现一个数支点不唯一的情况,这样就多算了,其实是我想多了,一个数只有一个支点。
这样就好像想到了,枚举支点的位置,保存力矩的状态。
dp[i][k][s] i为当前处理位 k为支点 s为到目前为止根据支点算出来的部分力矩。
有一点需要注意算0的时候 会有len个支点 所以要减掉重算的len-1个
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 2550
#define LL long long
#define INF 0xfffffff
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
LL dp[][][N];
int d[],g;
LL dfs(int i,bool e,int k,int s)
{
if(s<) return ;
if(i==-)
return s==;
if(!e&&~dp[i][k][s])
return dp[i][k][s];
int mk = e?d[i]:;
LL ans = ;
for(int j = ;j <= mk ;j++)
{
//ans+=dfs(i-1,e&&j==mk,s+=j*i,sum+=j);
ans+=dfs(i-,e&&j==mk,k,s+(i-k)*j);
}
// cout<<ans<<" "<<i<<endl;
return e?ans:dp[i][k][s] = ans;
}
LL cal(LL x)
{
if(x<) return ;
if(x==) return ;
g = ;
while(x)
{
d[g++] = x%;
x/=;
}
LL ans = ;
for(int i = ;i < g ; i++)
{
ans+=dfs(g-,,i,);
}
//return dfs(g-1,1,N,0);
return ans-g+;
}
int main()
{
int t;
LL l,r;
cin>>t;
memset(dp,-,sizeof(dp));
while(t--)
{
cin>>l>>r;
cout<<cal(r)-cal(l-)<<endl;
}
return ;
}
zoj3416 Balanced Number的更多相关文章
- HDOJ 3709 Balanced Number
数位DP... Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java ...
- [HDU3709]Balanced Number
[HDU3709]Balanced Number 试题描述 A balanced number is a non-negative integer that can be balanced if a ...
- hdu3709 Balanced Number (数位dp+bfs)
Balanced Number Problem Description A balanced number is a non-negative integer that can be balanced ...
- HDU 3709 Balanced Number (数位DP)
Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- HDU3709 Balanced Number (数位dp)
Balanced Number Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Descript ...
- 【HDU 3709】 Balanced Number (数位DP)
Balanced Number Problem Description A balanced number is a non-negative integer that can be balanced ...
- HDU3709:Balanced Number(数位DP+记忆化DFS)
Problem Description A balanced number is a non-negative integer that can be balanced if a pivot is p ...
- hdu 3709 Balanced Number(平衡数)--数位dp
Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- [暑假集训--数位dp]hdu3709 Balanced Number
A balanced number is a non-negative integer that can be balanced if a pivot is placed at some digit. ...
随机推荐
- android中自定义的dialog中的EditText无法弹出输入法解决方案
1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...
- jquery中.attr('value')和.val()的区别
.val() 能够取到 针对text,hidden可输入的文本框的value值. 而 .attr('value') 可以取到html元素中所设置的属性 value的值,不能获取动态的如input ty ...
- Altium Designer的PCB定位槽制作
Altium Designer的PCB定位槽制作 1.使用焊盘代替. 操作很简单,但孔壁有镀铜. 2.定位孔制作. 先在Keep-Out layer放置一个需要大小的圆, 然后按快捷键T-V-T,这时 ...
- 带连接池的netty客户端核心功能实现剖解
带连接池的netty客户端核心功能实现剖析 带连接池的netty的客户端核心功能实现剖析 本文为原创,转载请注明出处 源码地址: https://github.com/zhangxianwu/ligh ...
- Java多线程 LockSupport
在AQS里面进行阻塞线程,解除阻塞线程就用的LockSupport. JDK1.8源码: package java.util.concurrent.locks; import sun.misc.Uns ...
- IOS 谓词
// 谓词 Person *person = [[Person alloc]init]; person.name = @"zhang san"; person.age = 20; ...
- iptables rule
和H3C中的acl很像,或者就是一会事,这就是不知道底层的缺陷,形式一变,所有的积累都浮云了 参考准确的说copy from http://www.ibm.com/developerworks/cn/ ...
- Struts2(六):ResultType
本章节将继续学习struts2的返回类型的使用方法. 学习文档下载struts2 full包解压后会在doc下包含离线html文档. 点击运行后页面: 点击Guides向导终将会有向导列表 再点开后, ...
- CAS无锁算法与ConcurrentLinkedQueue
CAS:Compare and Swap 比较并交换 java.util.concurrent包完全建立在CAS之上的,没有CAS就没有并发包.并发包借助了CAS无锁算法实现了区别于synchroni ...
- C# App.config文件配置数据的读写
添加程序集引用 System.configuration.dll 和命名空间 using System.Configuration; 读: ConfigurationManager.AppSetti ...