• CodeForces 109C 树形DP Lucky Tree


    赶脚官方题解写得挺清楚的说,=_=

    注意数据范围用long long,否则会溢出。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <vector>
     6 using namespace std;
     7 
     8 const int maxn = 100000 + 10;
     9 
    10 int n;
    11 vector<int> G[maxn], C[maxn];
    12 
    13 inline int lucky(int x)
    14 {
    15     while(x)
    16     {
    17         if(x % 10 != 4 && x % 10 != 7) return 0;
    18         x /= 10;
    19     }
    20     return 1;
    21 }
    22 
    23 long long d[maxn], sz[maxn], f[maxn];
    24 
    25 void dfs(int u, int fa)
    26 {
    27     sz[u] = 1;
    28     f[u] = 0;
    29     for(int i = 0; i < G[u].size(); i++)
    30     {
    31         int v = G[u][i];
    32         if(v == fa) continue;
    33         dfs(v, u);
    34         sz[u] += sz[v];
    35         if(C[u][i]) f[u] += sz[v];
    36         else f[u] += f[v];
    37     }
    38 }
    39 
    40 void dfs2(int u, int fa)
    41 {
    42     for(int i = 0; i < G[u].size(); i++)
    43     {
    44         int v = G[u][i];
    45         if(v == fa) continue;
    46         if(C[u][i]) d[v] = sz[1] - sz[v];
    47         else d[v] = d[u] + f[u] - f[v];
    48         dfs2(v, u);
    49     }
    50 }
    51 
    52 int main()
    53 {
    54     //freopen("in.txt", "r", stdin);
    55 
    56     scanf("%d", &n);
    57     for(int i = 1; i < n; i++)
    58     {
    59         int u, v, d; scanf("%d%d%d", &u, &v, &d);
    60         int t = lucky(d);
    61         G[u].push_back(v); C[u].push_back(t);
    62         G[v].push_back(u); C[v].push_back(t);
    63     }
    64 
    65     dfs(1, 0);
    66     dfs2(1, 0);
    67 
    68     long long ans = 0;
    69     for(int i = 1; i <= n; i++) ans += f[i] * (f[i] - 1) + d[i] * (d[i] - 1) + 2 * f[i] * d[i];
    70     printf("%I64d
    ", ans);
    71 
    72     return 0;
    73 }
    代码君
  • 相关阅读:
    golang json用法讲解
    go操作redis
    go 操作 kafka
    go指针:unsafe.Pointer
    初学者GO 之旅 (1) 包、变量、函数
    mac iterm2 安装 lrzsz rz sz命令
    golang工具之present
    php 安装 kafka 扩展
    elasticsearch 安装中文分词器
    Centos7 安装 elasticsearch-head插件
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4720041.html
Copyright © 2020-2023  润新知