首页 > 其他分享 >Work Group

Work Group

时间:2023-10-17 21:04:55浏览次数:27  
标签:ch Group 奇数 res Work 偶数 putchar define

analysis

我们很明显能够发现这个题目的性质:

  1. 奇数是由孩子的奇数和我的偶数,或者是孩子的偶数我的奇数取一个最大值进行更新。
  2. 偶数就是我的偶数和孩子的偶数,或者是孩子奇数和我的奇数取一个最大值进行更新。

我们不妨用 \(0\) 表示已经选择了偶数个节点,用 \(1\) 表示已经选择了奇数个节点。

易得我们这个题目的转移方程为:

\[f_{u, 0} \gets \max(f_{v, 0} + f_{u, 0}, f_{v, 1} + f_{u, 1}) \]

\[f_{u, 1} \gets \max(f_{v, 1} + f_{u, 0}, f_{v, 0} + f_{u, 1}) \]

code time

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define rl register ll
#define foa(i, a, b) for(rl i=a; i < b; ++ i)
#define fos(i, a, b) for(rl i=a; i <= b; ++ i)
#define fop(i, a, b) for(rl i=a; i >= b; -- i)
#define ws putchar(' ')
#define wl putchar('\n')

template <class T> inline void waw(T x)
{
    if(x > 9) waw(x / 10);
    putchar(x % 10 ^ 48);
}

template <class T> inline void ww(T x)
{
    if(x < 0) x = ~x + 1, putchar('-');
    waw(x);
}

template <class T> inline void read(T &res)
{
    char ch = getchar(); bool f = 0; res = 0;
    for(; !isdigit(ch); ch = getchar()) f |= ch == '-';
    for(; isdigit(ch); ch = getchar()) res = (res << 1) + (res << 3) + (ch ^ 48);
    res = f ? ~res + 1 : res;
}

const ll N = 2e5 + 10, M = N << 1;

ll n, m, w[N], f[N][2];

ll tot, h[N];

struct edge { ll v, ne; } e[M];

inline void add(ll a, ll b) { e[ ++ tot] = {b, h[a]}, h[a] = tot; } 

inline void dfs(ll u, ll fa)
{
    f[u][1] = -1e18;

    for(rl i=h[u]; ~i; i = e[i].ne)
    {
        ll v = e[i].v;
        if(v == fa) continue;
        dfs(v, u);
        ll x = f[u][1], y = f[u][0];
        f[u][0] = max(f[v][1] + x, f[v][0] + y);
        f[u][1] = max(f[v][1] + y, f[v][0] + x);
    }
    f[u][1] = max(f[u][1], f[u][0] + w[u]);
}

int main()
{
    read(n);

    tot = -1, memset(h, -1, sizeof h);

    fos(i, 1, n)
    {
        ll a, b; read(a), read(b);
        if(a != -1) add(a, i), add(i, a); w[i] = b;
    }

    dfs(1, -1);

    cout << max(f[1][0], f[1][1]) << endl;
    return 0;
}

标签:ch,Group,奇数,res,Work,偶数,putchar,define
From: https://www.cnblogs.com/carp-oier/p/17770621.html

相关文章

  • CF529B Group Photo 2 (online mirror version)
    看值域这么小,考虑枚举最大高度\(maxh\):\(h_i>maxh\)且\(w_i>maxh\),不合法。\(h_i>maxh\)且\(w_i\leqmaxh\),必须换。\(h_i\leqmaxh\)且\(w_i>maxh\),不能换。\(h_i\leqmaxh\)且\(w_i\leqmaxh\),可换可不换。因为最多只有一半的人能躺下,所以优先换\(w_i-h_i\)较大......
  • : Only one usage of each socket address (protocol/network address/port) is norma
    2023/10/1619:07:45tick2023/10/1619:07:46dialtcp7.11.12.26:3309:connectex:Onlyoneusageofeachsocketaddress(protocol/networkaddress/port)isnormallypermitted.panic:runtimeerror:invalidmemoryaddressornilpointerdereference[signal0xc......
  • Sequence to Sequence Learning with Neural Networks
    SequencetoSequenceLearningwithNeuralNetworks关键词:LSTM,Seq2Seq......
  • 论文:Very deep convolutional networks for large-scale image recognition-VGG
    论文名:Verydeepconvolutionalnetworksforlarge-scaleimagerecognition"用于大规模图像识别的深度卷积网络"了解VGG模型研究问题:研究方法:主要结论:模型:问题:行文结构梳理:......
  • Math teacher's homework 题解
    preface网上的题解看不懂,看代码看懂了:)solution考虑\(\mathrm{x_i}\)的倒数第\(\mathrm{low_i-1}\)位到倒数第\(\mathrm{1}\)位可以乱选(选\(\mathrm{0/1}\)都满足\(\mathrm{x_i\leqm_i}\)),那么就需要\(\mathrm{x_i}\)和\(\mathrm{m_i}\)的第\(\mathrm{1}\)位......
  • tomcat下 删除webapps和work下面的项目后,tomcat启动报错
    常常在开发时,多个项目挂在一个Tomcat下,但是后续想把个别项目从Tomcat移除的时候发现,Tomcat执行报错.我咱们只需要找到打开此文件后,找到找到这些你已经删除的项目,有多少删多少,再重新启动Tomcat就不会报错了......
  • tomcat下 删除webapps和work下面的项目后,tomcat启动报错
    常常在开发时,多个项目挂在一个Tomcat下,但是后续想把个别项目从Tomcat移除的时候发现,Tomcat执行报错.我咱们只需要找到打开此文件后,找到找到这些你已经删除的项目,有多少删多少,再重新启动Tomcat就不会报错了......
  • Spring Framework
    一、IOC/DIIoC(InversionofControl)控制反转DI(dependencyinjection)依赖注入IoC/DI指的是一个过程:对象的创建仅仅通过Spring容器负责,Spring容器可以通过对象的构造方法或工厂方法进行实例化对象。在创建对象过程中,如果对象需要依赖其他对象,也可以直接在Spring容器中注入到......
  • Solidworks 零件重命名后,工程图视图丢失怎么办?
    SolidWorks修改零件名称后,打开工程图,发现原先标注好的图纸视图不见了,如下图所示,这是因为工程图链接的模型零件丢失,本文给大家分享解决此问题方法。解决方法:先不要直接双击打开工程图,按下面步骤操作:先打开SolidWorks,然后点击打开,选择工程图,先不要直接点下面的打开,而是先选择参......
  • Mitsubishi 三菱GX WORKS2软件的FB功能块库导入和导出
    一、新建一个结构化工程程序; 二:工程中新建一个FB功能块(鼠标右键新建数据); 三:在用户库中新建一个库文件; 四:将工程中的FB块数据复制和数据粘贴到用户库的库文件中并编译; 五:将用户库中的库文件另存(工程库操作库文件另存为);该FB功能块的库文件被单独保存出来,在另一个工......