9.26

2023-05-16

以后可能会在每次考试后(当然极大概率咕咕咕)找一道题讲讲其实是三道题太多了

那么既然量减了,质量就会提上去了也不一定,一次可能会根据某一道题说些思路

反正也没人看,随便写一些留着自己用好了

  于是本期节目为您带来:换根dp

  这东西好像考了两三次了,每次都稍恶心,关键是转移难写

  判断它是个换根dp:

    1.时间复杂度$\Theta(n)$的(或许$\Theta(nlogn)$也可以?),暴力一般是$\Theta(n^2)$的

    2.考虑dp状态与子树有关系的,一般来说是求$ans[i]$需要在以$i$为根的树上统计答案

    3.带补充...

  我知道这是个换根dp了,然后呢?:

    通常来说换根dp是需要$2+$次dfs的,并且这几次dfs求的都不一样,最后一次dfs通过前一次或几次的dfs求出的各种变量,让答案从父节点向儿子节点转移


上例题:

  randomwalking form 模拟测试52(b)

  首先从数据范围推测复杂度,应该是个$\Theta(n)$,最多加个$log$的对吧?

  我们可以认为一个点的答案应该是(所有它能到的点的贡献和+它的点权)/它的度

  即为(它父亲的贡献+所有它儿子的贡献和+它的点权)/它的度

  于是我们会发现这很换根dp

  那么考虑我们应该怎么切掉这道题

  我们先定义$son[i]$为一个点的子树以及它本身对$ans[i]$的贡献

  这显然是可以通过一次dfs求出来的

  同时我们也就有了$ans[1]$

  考虑如何由父节点将答案转移至儿子节点

  对于一个父亲节点,它的答案组成是:

  $它父亲的贡献+它所有儿子的贡献/它的度+它的点权$

  对于一个儿子节点,它的答案组成是:

  $它父亲的贡献+它所有儿子的贡献/它的度+它的点权$

  那么我们把它的父亲的贡献减去父亲的点权*父亲的度即为:

    $父亲的父亲的贡献+它所有兄弟的贡献+它的贡献$

  将这个值减去它的子树,即为:

    在以它为根的树中,它以前的父亲的子树对它以前的父亲的贡献

  将这个值除它以前的父亲现在的儿子数,即为:

    它以前的父亲现在的子树的贡献

  设这个值为res,我们再考虑其他贡献

  于是之前的$son[i]$可以被理解为:

    除去它以前的父亲的子树的贡献后,其他儿子对它的贡献+它的点权

  将son[i]*(度数-1)再减去它的点权

  加上res即为它所有能到的所有点的贡献

  再除以它的度,加上它的点权即为它的$ans$

  于是就有了转移,上代码:

  

#include<iostream>
#include<cstdio> using namespace std; #define int long long #define cin(k) scanf("%lld",&k) const int maxn=1e6+5; double ans[maxn],son[maxn]; struct road{ int e,nt; }r[maxn<<1]; int nt[maxn],tot; int a[maxn],n; double minn;int bj; int v[maxn],du[maxn]; int sondu[maxn]; void dfs(int k) { double tmp=0; v[k]=1; for(int q=nt[k];q;q=r[q].nt) if(!v[r[q].e]) {sondu[k]++;dfs(r[q].e);tmp+=son[r[q].e];} if(sondu[k])tmp/=sondu[k]; tmp+=a[k]*1.0; son[k]=tmp; v[k]=0; } void getans(int k) { v[k]=1; for(int q=nt[k];q;q=r[q].nt) if(!v[r[q].e]) { double res=ans[k]; res-=

转载于:https://www.cnblogs.com/ooovooo/p/11589034.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

9.26 的相关文章

  • 关于AD10如何输出自己想要的BOM表

    新年新开始 xff0c 过完年来上班 xff0c 脑子里面的东西很多又忘光了 xff0c 索性写下来做个备忘录 xff0c 今天为了输出一个自己想要的BOM表 xff0c 结果发现去年会弄的 xff0c 但是现在尴尬的又忘了怎么弄了 xff
  • authorization权限控制_shiro入门学习--授权(Authorization)|筑基初期

    写在前面 经过前面的学习 xff0c 我们了解了shiro中的认证流程 xff0c 并且学会了如何通过自定义Realm实现应用程序的用户认证 在这篇文章当中 xff0c 我们将学习shiro中的授权流程 授权概述 这里的授权指的是授予某一系
  • Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(二)

    摘要 上一篇Spring Boot 43 Spring Security 43 JWT 实现 RESTful Api 认证 xff08 一 xff09 我们已经sql教程 实现了基本的登录和token认证接口 xff0c 但是这里有个问题
  • vmware vsphere各版本差别,及各套件差别

    最近要开始全面支持虚拟化了 xff0c 客户私有云环境用的多的为vmware vsphere xff0c 特地恶补下vmware vsphere的各个差别 首先是vSphere xff0c ESXi和vCenter 的区别 ESXi vSp
  • 第五周课程总结&试验报告(三)

    第五周课程总结 xff1a 一 xff1a String类 1 xff1a 实例化String对象 xff0c String可以采取直接赋值的方式进行操作 xff1b 2 xff1a 61 61 可以用来进行内容的比较 xff0c 但是单纯
  • CSS3 选择器

    CSS3 选择器 在 CSS 中 xff0c 选择器是一种模式 xff0c 用于选择需要添加样式的元素 34 CSS 34 列指示该属性是在哪个 CSS 版本中定义的 xff08 CSS1 CSS2 还是 CSS3 xff09 选择器例子例
  • JavaScript中使用typeof运算符需要注意的几个坑

    typeof是一个运算符 xff0c 它对操作数返回的结果是一个字符串 xff0c 有6种 只针对ES xff0c 不包含HOST环境对象 1 39 undefined 39 2 39 boolean 39 3 39 string 39 4
  • unity视频教程

    英雄联盟教程 http pan baidu com s 1i3rkMS9 密码 bv6r https pan baidu com share link shareid 61 2589856556 amp uk 61 371904234 li
  • 相册列表 鼠标悬停显示照片介绍

    lt DOCTYPE HTML PUBLIC 34 W3C DTD HTML 4 01 Transitional EN 34 34 http www w3 org TR html4 loose dtd 34 gt lt html gt lt
  • 图书管理系统(毕业论文)

    毕 业 设 计 论 文 题 目 xff1a 图书管理系统 院 系 xff1a 计算机学院 专 业 xff1a 软件技术 姓 名 xff1a XXX 指导教师 xff1a XX 2017年 10 月 23 日 1 引言 5 2 相关技术突破
  • C#中定义数组--字符串及数组操作

    一 一维 xff1a int numbers 61 new int 1 2 3 4 5 6 不定长 int numbers 61 new int 3 1 2 3 定长 二 多维 int numbers 61 new int 1 2 3 1
  • 迭代器分类

    输入迭代器 读 xff0c 不能写 xff1b 只支持自增运算 istream iterator 61 61 61 43 43 gt 输出迭代器 写 xff0c 不能读 xff1b 只支持自增运算 ostream iterator 43 4
  • VC++中隐藏代码

    1 引言 在VS编辑器中可以对类中的方法 注释等内容进行隐藏 xff0c 单击左侧的 号即可完成隐藏 xff0c 隐藏后变为 43 xff0c 单击 43 号可以将隐藏的代码展开 2 隐藏任意代码 如果想在编辑器中隐藏任意代码段 xff0c
  • 常见签名算法之SHA256withRSA

    概述 在https blog csdn net chinoukin article details 100934995章节中 xff0c 我介绍了用Hmac算法用于签名算法中的方法 xff0c 本章节中将对常见的签名算法 SHA256wit
  • httpclient4封装类与HttpParser封装类

    httpclient4封装类与HttpParser封装类 最近工作中需要做一个爬虫去抓取指定页面的一些内容 xff0c 准备使用HttpParser来解析页面结构 xff0c 顺便看了一下httpclient4 xff0c 可以将它们配合使
  • 【Linux操作系统分析】进程——进程切换,进程的创建和撤销

    1 进程 进程是程序执行时的一个实例 xff0c 可以把它看作充分描述程序已经执行到何种程度的数据结构的汇集 从内核的观点看 xff0c 进程的目的是担当分配系统资源 xff08 CPU时间 xff0c 内存等 xff09 的实体 xff0
  • C++中的.和::和:和->的区别

    在学习C 43 43 的过程中我们经常会用到 和 和 xff1a 和 gt xff0c 在此整理一下这些常用符号的区别 1 A B则A为对象或者结构体 xff1b 2 A gt B则A为指针 xff0c gt 是成员提取 xff0c A g
  • 通过Curl 对url进行encode操作

    最近做项目的时候 xff0c 通过 Gflags Reload 时候 发现对于某些value中包含 61 中文等字符的支持不够好 xff0c value被截断了 经过分析后 xff0c 发现程序对url切分是用 61 amp 为标准的 xf
  • STM32进阶之串口环形缓冲区实现(转载)

    转载自微信公众号 玩转单片机 xff0c 感谢原作者 杰杰 队列的概念 在此之前 xff0c 我们来回顾一下队列的基本概念 xff1a 队列 Queue xff1a 是一种先进先出 First In First Out 简称 FIFO 的线
  • 位和结构体寄存器访问方法(转)

    1 2 1 传统 define 方法 1 2 外设位域结构体方法综述 DSP281x 头文件和外设示例使用位域结构体方法 xff0c 映射和访问基于F28x 外设寄存器 本节将介绍这种方法 xff0c 并把它和传统的 define 方法加以

随机推荐

  • 关于将函数写入头文件问题(分离式编译)

    如果某些函数在其他很多 cpp 文件中被调用 xff0c 那么为了避免写大量重复的代码以及让代码量更小一些 xff0c 我们可以将这些函数写头文件中 xff0c 然后其他 cpp 文件只需要引用该头文件然后就可以使用包含在头文件中的函数了
  • SpringSecurity配置跨域访问

    说明 java后端web服务有很多种方法可以实现跨域访问 xff0c 配置很简单 xff0c 今天这里我们用SpringSecurity的方式配置跨域访问 xff0c 配置方法如下 xff1a span class token keywor
  • 嵌入式C语言开发---存储器与寄存器

    概述 xff1a 讲述如何使用C语言来对底层寄存器进行封装 内容 xff1a 存储器映射寄存器与寄存器映射C语言访问寄存器 存储器映射 程序存储器 数据存储器 寄存器和I O 端口排列在同一个顺序的4 GB 地 址空间内 存储器映射 xff
  • httplib用法

    httplib的内容上是很多 xff0c 也比较简单 以下是一个非常简单的例子 xff0c 使用httplib获取google首页的html xff1a import httplib conn 61 httplib HTTPConnecti
  • HTTP认证之摘要认证——Digest(一)

    导航 HTTP认证之基本认证 Basic xff08 一 xff09 HTTP认证之基本认证 Basic xff08 二 xff09 HTTP认证之摘要认证 Digest xff08 一 xff09 HTTP认证之摘要认证 Digest x
  • Linux 文件名和路径的最大长度

    在x86 64 Linux下 xff0c 文件名的最大长度是255个字符 characters xff0c 文件路径的最大长度是4096字符 characters xff0c 即可以包含16级的最大文件长度的路径 在 lt limits h
  • Django之auth

    一 xff1a auth基础 xff08 1 xff09 作用 xff1a django提供给开发人员 对用户进行操作的模块的 例如 xff1a 登录 注册 认证 注销等等 xff08 2 xff09 使用方式 from django co
  • [JavaSE 源码分析] 关于HashMap的个人理解

    目录 HashMap是什么 HashMap的底层数据结构是什么 table容量为什么必须是二的倍数 table容量怎么做到二的倍数 Entry是怎样的结构 Node Entry在HashMap中的具体实现处理hash冲突的方法HashMap
  • HIS(LIS、PACS、RIS、EMR)系统简介

    HIS xff08 LIS PACS RIS EMR xff09 系统简介 HIS xff1a 医院信息系统 Hospital Information System HIS xff0c 利用电子计算机和通讯设备 xff0c 为医院所属各部
  • jackson使用问题:mapper.readValue()将JSON字符串转反序列化为对象失败或异常

    问题根源 xff1a 转化目标实体类的属性要与被转JSON字符串总的字段 一 一对应 xff01 字符串里可以少字段 xff0c 但绝对不能多字段 先附上我这段出现了问题的源码 xff1a 1 接收并转化相应的参数 需要在pom xml中引
  • SpringSecurity集成oauth2(jwt)

    版本 springboot版本 xff1a 2 2 7 RELEASE spring security oauth2版本 xff1a 2 3 6 RELEASE 主要依赖 span class token tag span class to
  • 微信小程序开发——点击按钮获取用户授权没反应或反应很慢的解决方法

    异常描述 xff1a 点击按钮获取用户手机号码 xff0c 有的时候会出现点击无反应 或很久之后才弹出用户授权获取手机号码的弹窗 xff0c 这种情况下 xff0c 也会出现点击穿透的问题 xff08 详见 xff1a 微信小程序开发 连续
  • 09-cmake语法-add_dependencies()

    在编译器的命令行上 xff0c 为当前路径以及下层路径的源文件加入一些define flag 这个命令可以用来引入任何flag xff0c 但是它的原意是用来引入预处理器的定义 那些以 D或 D开头的 看起来像预处理器定义的flag xff
  • WordPress教程之判断文章所属分类函数in_category、is_category

    最近自己在修改一个采用Wordpress程序的博客的时候需要用到一个特殊的功能 xff1a 我需要判断这篇文章是属于哪些分类 xff0c 如果属于我设定的分类下的文章 xff0c 则输出一个DIV内容 按道理说实现这个功能应该不算太难 xf
  • 对SIP摘要认证方案的理解

    一 口令认证常见机制 基于口令认证的系统一般有以下几种口令验证方式 xff1a 1 客户端以明文形式将用户名密码通过网络发送到服务器 xff0c 服务器与已经保存在服务端的用户名密码进行比较 xff0c 一致则通过验证 xff1b HTTP
  • 第三方库引用:头文件和库文件

    附加库与头文件目录 xff1a 1 头文件 头文件引用时的查找路径 xff1a c c 43 43 gt general 将第三方库的头文件所在文件夹包含进去 影响到文件中 h头文件的引用路径的写法 源码 xff1a include a h
  • 深入理解Java虚拟机JVM

    JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java exe来完成 通过下面4步来完成JVM环境 1 创建JVM装载环境和配置 2 装载JVM dll 3 初始化JVM dll并挂界到JNIENV JNI调用接口 实例 4
  • Kubernetes Pod的数据卷Volume

    概述 由于容器本身是非持久化的 xff0c 因此需要解决在容器中运行应用程序遇到的一些问题 首先 xff0c 当容器崩溃时 xff0c kubelet将重新启动容器 xff0c 但是写入容器的文件将会丢失 xff0c 容器将会以镜像的初始状
  • Nodejs模块依赖的几种方式

    a js function add x y return x 43 y function sub x y return x y let str 61 34 God like 34 const arr 61 1 2 3 4 exports a
  • 9.26

    以后可能会在每次考试后 当然极大概率咕咕咕 找一道题讲讲其实是三道题太多了 那么既然量减了 质量就会提上去了也不一定 一次可能会根据某一道题说些思路 反正也没人看 随便写一些留着自己用好了 于是本期节目为您带来 换根dp 这东西好像考了两三