标签:des style blog io ar color os sp for
2 0 9 7604 24324
10 897
题意:给你2个数n,m 要你求出在n,m区间内以某个数为中心,2边的力矩相等的数的个数,比如:4139,以3为中心 那么左边=4*2+1*1=9
右边=9*1=9
思路:还是数位DP啊,我们发现 位数、以哪个数为中点、力矩
妈的,现在想起了分手的女友,追梦人的悲哀吧 性格不合适~ 我也是醉了! 泪奔..............
AC代码:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; typedef long long ll; ll f[20][20][2000]; int bits[20]; ll dfs(int pos,int mid,int tor,bool flag) { if(pos==-1)return tor==0; if(tor<0)return 0; //引用bin神的剪枝! ll ans=0; if(!flag&&f[pos][mid][tor]!=-1) return f[pos][mid][tor]; int u=flag?bits[pos]:9; for(int i=0;i<=u;i++) { ans+=dfs(pos-1,mid,tor+i*(pos-mid),flag&&i==u); } return flag?ans:f[pos][mid][tor]=ans; } ll solve(ll n) { int len=0; while(n) { bits[len++]=n%10; n/=10; } ll ans=0; for(int i=0;i<len;i++) //枚举中心 ans+=dfs(len-1,i,0,true); return ans-(len-1); //坑的个半死,错的我要哭了,刚好今天又这么失落! //排除全是0的情况,看了别人的才知道 } int main() { ll n,m; int t; memset(f,-1,sizeof(f)); while(cin>>t) { while(t--) { cin>>n>>m; cout<<solve(m)-solve(n-1)<<endl; } } return 0; }
标签:des style blog io ar color os sp for
原文地址:http://blog.csdn.net/u012313382/article/details/41393893