码迷,mamicode.com
首页 > 其他好文 > 详细

比赛-不知道从几开始编号的训练赛 1

时间:2018-10-25 00:37:39      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:bool   stdin   元组   比较   line   关系   ack   tchar   false   

A. Fibonacci

没有看见 \(f(0) = 0, f(1) = 1\) ,以为是自己想的那种 Fibonacci ,就跪了。第三次看错题啦,上次好像强行把一次函数看成指数级函数 Orz 。

B. 一样远

LCA ,再用节点 siz 处理一下。

C. 拆网线

不要被树上 DP 误导,和什么“监管警察”那道题也没有一点关系。考虑贪心,尽量多找仅一条边连接的两个点组成的二元组,或者把这个过程用 DP 模拟出来也行。

改悔

#include <cstdio>
#include <algorithm>
#include <ctype.h>
#include <vector>

using namespace std;

char *p1, *p2, buf[1 << 20];

inline char gc()
{
//  return getchar();
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin))==p1?EOF:*p1++;
}

template <typename T>
void rd(T &num)
{
    char tt;
    bool flag;
    while (!isdigit(tt = gc()) && tt != '-');
    if (tt == '-') num = 0, flag = true;
    else num = tt - '0', flag = false;
    while (isdigit(tt = gc()))
        num = num * 10 + tt - '0';
    if (flag) num = -num;
    return;
}

const int _N = 101000;

int TTT, Ans, mk[_N];
vector<int> G[_N];

void dfs(int p, int dad)
{
    for (int i = G[p].size() - 1; i >= 0; --i) {
        int v = G[p][i];
        if (v == dad) continue;
        dfs(v, p);
        if (!mk[p] && mk[v] == 1)
            mk[p] = 2, ++Ans;
    }
    if (!mk[p]) mk[p] = 1;
    return;
}

inline void inss(int a, int b)
{
    G[a].push_back(b);
    return;
}

int main()
{
    int TTT;
    rd(TTT);
    while (TTT--) {
        int N, K;
        rd(N), rd(K);
        for (int i = 1; i <= N; ++i)
            G[i].clear(), mk[i] = 0;
        for (int a, i = 2; i <= N; ++i)
            rd(a), inss(a, i), inss(i, a);
        Ans = 0;
        dfs(1, 0);
        if (Ans * 2 >= K)
            printf("%d\n", (K + 1) / 2);
        else
            printf("%d\n", Ans + (K - Ans * 2));
    }
    return 0;
}

别看错题了 Orz ……
别想多了啊,比较恶心的题做不出来时考虑换换思路,比如贪心,或者猜结论之类的。

比赛-不知道从几开始编号的训练赛 1

标签:bool   stdin   元组   比较   line   关系   ack   tchar   false   

原文地址:https://www.cnblogs.com/ghcred/p/9846583.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!