zoukankan      html  css  js  c++  java
  • UVA 1640 分块/数位统计/DFS

    紫书中给出的解法是分块,非常重要的思想, 但是网上题解给出的更加简单DFS ,统计每位数对答案的贡献即可。 注意边界 具体见代码

    #include<iostream>
    #include<string>
    #include<cmath>
    #include<cstring>
    #include<vector>
    #include<map>
    #include<set>
    #include<algorithm>
    #include<queue>
    #include<stack>
    #include<sstream>
    #include<cstdio>
    #define INF 0x3f3f3f3f
    #define read(i) scanf("%d",&i)
    #define equals(a,b)    (fabs(a-b)<eps)
    const int maxn = 1e6 + 5;
    const double PI = acos(-1.0);
    typedef long long ll;
    using namespace std;
    
    int ans[10];
    
    void dfs(int n, int m, int ok) {
        if (n == -1) return;
        int x = n / 10;
        int y = n % 10;
        for (int i = 1; i <= y; i++) ans[i] += ok * m;
        for (int i = 0; i < 10; i++)  ans[i] += ok * m * x;
        int tmp = x;
        while (tmp) {
            ans[tmp % 10] += ok * (y + 1) * m;
            tmp /= 10;
        }
        dfs(x - 1, m * 10, ok);
    }
    
    
    int main() {
        int n, m;
        while (scanf("%d%d", &n, &m) == 2 && n && m) {
            memset(ans, 0, sizeof ans);
            if (n < m) swap(n, m);
            --m;
            dfs(n, 1, 1);
            dfs(m, 1 ,-1);
            for (int i = 0; i < 10; i++) {
                if (i) printf(" ");  printf("%d", ans[i]);
            }
            printf("\n");
        }
        return 0;
    }
  • 相关阅读:
    HDU 1950 Bridging signals(LIS)
    PKU 1094 Sorting It All Out(拓扑排序)
    中国剩余定理(孙子定理)详解
    51Nod 1079
    翻转游戏
    不构造树的情况下验证先序遍历
    图说流程管理
    从架构到流程
    POS(Plan Operation Support 和 OES(Operation Enable Support)
    流程规划方法→POS法
  • 原文地址:https://www.cnblogs.com/hznumqf/p/12459003.html
Copyright © 2011-2022 走看看