zoukankan      html  css  js  c++  java
  • HDU

    意甲冠军:求0-B见面<=F[A]所有可能的

    思维:数字DP,内存搜索

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    
    int A, B;
    int dp[20][200000];
    int bit[20];
    
    int dfs(int cur, int num, int flag) {
    	if (cur == -1)
    		return num >= 0;
    	if (num < 0)
    		return 0;
    	if (!flag && dp[cur][num] != -1)
    		return dp[cur][num];  
    	int ans = 0;
    	int end = flag?

    bit[cur]:9; for (int i = 0; i <= end; i++) ans += dfs(cur-1, num-i*(1<<cur), flag&&i==end); if (!flag) dp[cur][num] = ans; return ans; } int F(int x) { int tmp = 0; int len = 0; while (x) { tmp += (x%10)*(1<<len); len++; x /= 10; } return tmp; } int cal() { int len = 0; while (B) { bit[len++] = B%10; B /= 10; } return dfs(len-1, F(A), 1); } int main() { int t; int cas = 1; scanf("%d", &t); memset(dp, -1, sizeof(dp)); while (t--) { scanf("%d%d", &A, &B); printf("Case #%d: %d ", cas++, cal()); } return 0; }




  • 相关阅读:
    外部存储 使用详解
    内部存储 使用详解
    SQLite 使用详解
    SharePerference 使用详解
    Preference 使用详解
    Notification 使用详解
    PopupWindow 使用详解
    Fragment 使用详解
    Dialog 使用详解
    ListView 使用详解
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4564356.html
Copyright © 2011-2022 走看看