zoukankan      html  css  js  c++  java
  • SGU 195. New Year Bonus Grant

    时间限制:0.75s

    空间限制:4M

    题意:

           在一颗树(最多500000个节点)中,可以对节点染色,但是一个节点染了色后,它的父节点和兄弟节点都不能再染了,求最大的染色节点数,并输出所有染色节点。

    Solution:

          一开始写了一个树形DP

          后来看到有人说题目的输入是从上到下的。。。直接倒过来贪心就好了。ORZ

    代码:

    #include <iostream>
    #include <cstdio>
    using namespace std;
    const int INF = 510000;
    int f[INF], vis[INF], ans[INF], tol, n;
    int main() {
        scanf ("%d", &n);
        for (int i = 1; i < n; i++)
            scanf ("%d", &f[i + 1]);
        for (int i = n; i > 1; i--)
            if (!vis[i] && !vis[f[i]]) {
                vis[f[i]] = vis[i] = 1;
                ans[++tol] = i;
            }
        printf ("%d
    ", tol * 1000);
        for (int i = tol; i > 0; i--)
            printf ("%d ", ans[i]);
        return 0;
    }
    View Code
  • 相关阅读:
    软件包管理(rpm&yum)
    文本处理三剑客之sed
    压缩归档tar
    linux文件查找find
    vim编辑器
    正则表达式
    文本处理三剑客之grep
    常用文本处理、统计工具
    文件权限管理
    用户和组管理
  • 原文地址:https://www.cnblogs.com/keam37/p/3964562.html
Copyright © 2011-2022 走看看