首页 > 其他分享 >【APIO2014】Beads and wires

【APIO2014】Beads and wires

时间:2023-03-06 17:36:17浏览次数:63  
标签:Beads wires APIO2014 儿子 忽略 父亲 son 换根 dp

观察其实就是每个节点可以作为蓝线的中点一次,然后求蓝线的最大权值和。考虑如果是有根的话,可能是son[x]-x-fa[x]这种结构,也可能是son[x]-x-son[x]。应该可以用一个dp[i][0/1/2]的树形dp来解决,但是由于上一场EDU的E的启示,我们可以想到一般这种3个状态,可以从父亲再到儿子的dp,可以用换根dp只需要考虑儿子到父亲的转移,这题也是一样。(3个状态能做,但是转移比较复杂)

考虑dp[x][0/1][t]表示x这个点,有没有作为中点,忽略第t个儿子的答案。(祖先在换根之后也可以是儿子)。我们先考虑有根的时候怎么转移。

  1. dp[x][0]:每个儿子可以是dp[y][1]+e[i].w,也可以是dp[y][0],取个max就行。
  2. dp[x][1]:需要有一个儿子是dp[x][0](如果都是1那么必须要父亲在儿子之前出现,但是这时候父亲是中点所以必须要在一个儿子后出现,矛盾了)+e[i].w。其他的像dp[x][0]那么转移即可。

然后是换根dp的经典套路:忽略。忽略我们不能全部重新计算,观察一下式子发现基本不变,只有max有可能会变,所以保留最大和次大即可(也是经典的套路)。

换根也不难,父亲到儿子的时候更新为父亲忽略这个儿子的dp,再用父亲的dp来更新儿子不忽略父亲的dp,依次换根就是正确的了,在每个根的时候取个max即可。

Submission:https://uoj.ac/submission/609798

标签:Beads,wires,APIO2014,儿子,忽略,父亲,son,换根,dp
From: https://www.cnblogs.com/IceYukino/p/17184669.html

相关文章

  • 【APIO2014】Palindromes
    先说一下自己的SAM做法:看到回文串我们首先考虑对以下字符串建立SAM:正串+特殊字符1+特殊字符2+反串。这样也许能有一点用。晚上睡觉前我考虑的是对于正串的endpos在反串中......
  • 【APIO2014】Split the sequence
    看到题之后第一想法就是斜率优化然后直接推式子了,却忽略了一个重要的前提就是和切的顺序无关,否则就应该是区间dp。(后怕)这里来证明一下:如果分成三段分别为\(s_1,s_2,s_3\),......
  • wireshark集成Backward-cpp编译
    原文地址:https://www.cnblogs.com/liqinglucky/p/backward-in-wireshark.html在之前的文章中已经介绍过ubuntu系统wireshark源码编译与安装和Backward-cpp:Segmentation......
  • 简单使用wireshark
    wireshark抓包工具拓扑图:拓扑图解释:终端用户使用wireshark抓包工具监听无线网卡,监听时,终端访问互联网,可实时监听网络抓包操作步骤:一,打开wireshark抓包工具,监听网卡......
  • wiresharp抓包
    PacketDetailsPane(数据包详细信息),在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细信息面板是最重要的,用来查看协议中......
  • wireshark的使用
    基础一、抓包过滤器表达式的规则类型Type(host、net、port)方向Dir(src、dst)协议Proto(ether、ip、tcp、udp、http、icmp、ftp等)逻辑运算符(&&与、||或、!非)抓包过滤器语......
  • wireshark添加address sanitizer参数编译
    原文地址:https://www.cnblogs.com/liqinglucky/p/wireshark_memory_check.html在ubuntu系统wireshark源码编译文中已经会编译wireshark了。现在对wireshark的CMakeLists.t......
  • 【网络】Wireshark分析RST消息
    文章目录    前言    1、定义:    2、有三个条件可以产生RST:    3、说明    4、RST数据报文产生情况        1......
  • 使用Wireshark捕捉USB通信数据
    使用Wireshark捕捉USB通信数据USB,是英文UniversalSerialBus(通用串行总线)的缩写,而其中文简称为“通串线”,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB接......
  • wireshark抓包教程详解
    https://blog.csdn.net/lixinkuan328/article/details/122985439 1、打开wireshark 2、选择菜单栏上Capture->Option,勾选WLAN网卡(这里需要根据各自电脑网卡使用情......