类直径树上贪心
http://cplusoj.com/d/senior/p/SS231109C
场上想到枚举点,然后最大值为高,然后可以求最大值。但是感觉计数会重
计数其实不会重,如图中,红色线段显然比蓝色线段优

所以我们枚举3叉点时没错的
#include<bits/stdc++.h>
using namespace std;
#ifdef LOCAL#define debug(...) fprintf(stdout, ##__VA_ARGS__)
#else#define debug(...) void(0)
#endif
#define int long long
inline int read(){int x=0,f=1;char ch=getchar(); while(ch<'0'||
ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
#define Z(x) (x)*(x)
#define pb push_back
#define fi first
#define se second
//srand(time(0));
#define N 500010
//#define M
//#define mo
struct node {int mx, cnt; void init() { mx=-1e15; cnt=0; }node operator +(const node &A) const {if(A.mx>mx) return A; if(mx>A.mx) return (*this); return {mx, cnt+A.cnt}; }node add() { node A=(*this); A.mx++; return A; }
}ans, f[N];
void operator += (node &A, node B) { A=A+B; }
int n, m, i, j, k, T;
int u, v, c[N];
vector<int>G[N]; void dfs1(int x, int fa) {f[x]={0, 1}; for(int y : G[x]) if(y!=fa) {dfs1(y, x); f[x]+=f[y].add(); }debug("> %lld : %lld %lld\n", x, f[x].mx, f[x].cnt);
}void dfs2(int x, int fa, node p) {debug("Shang %lld : %lld %lld\n", x, p.mx, p.cnt); int z=G[x].size(), i, j, k=0; vector<node>pre, lst, cao; node dp[3][2], ndp[3][2];vector<int>ve; pre.resize(z+2); lst.resize(z+2); ve.resize(z+2); for(auto &t : pre) t.init(); for(auto &t : lst) t.init(); for(auto y : G[x]) if(y!=fa) ve[++k]=y; pre[0]=p; for(i=1; i<=k; ++i) pre[i]=pre[i-1]+f[ve[i]].add(); for(i=k; i>=1; --i) lst[i]=lst[i+1]+f[ve[i]].add(); for(i=1; i<=k; ++i) dfs2(ve[i], x, (pre[i-1]+lst[i+1]).add()); if(c[x]<3) return ; int mx=pre[k].mx; debug("[%lld] %lld\n", k, mx); for(i=1; i<=k; ++i) cao.pb(f[ve[i]].add()); cao.pb(p); for(i=0; i<=2; ++i) for(j=0; j<=1; ++j) dp[i][j].init(); dp[0][0]={0, 1}; for(auto t : cao) {debug("# %lld %lld\n", t.mx, t.cnt); for(i=0; i<=2; ++i) for(j=0; j<=1; ++j) ndp[i][j].init(); for(i=0; i<=2; ++i) for(j=0; j<=1; ++j) {ndp[i][j|(t.mx==mx)]+=dp[i][j]; if(i<2) {node cur = {dp[i][j].mx+mx*t.mx, dp[i][j].cnt*t.cnt}; debug("** %lld(%lld %lld) %lld | %lld\n", cur.mx, dp[i][j].mx, mx*t.mx, cur.cnt, j); ndp[i+1][j]+=cur; }}for(i=0; i<=2; ++i) for(j=0; j<=1; ++j) dp[i][j]=ndp[i][j]; }debug("=# %lld %lld\n", dp[2][1].mx, dp[2][1].cnt); ans+=dp[2][1];
}signed main()
{freopen("tree.in", "r", stdin);freopen("tree.out", "w", stdout);#ifdef LOCALfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);#endif
// T=read();
// while(T--) {
//
// } n=read(); for(i=1; i<n; ++i) {u=read(); v=read(); G[u].pb(v); G[v].pb(u); ++c[u]; ++c[v]; k=max(k, c[u]); k=max(k, c[v]); }if(k<=2) return printf("0 1"), 0; node p; p.init(); dfs1(1, 0); dfs2(1, 0, {0, 1}); printf("%lld %lld\n", ans.mx, ans.cnt); return 0;
}相关文章:
类直径树上贪心
http://cplusoj.com/d/senior/p/SS231109C 场上想到枚举点,然后最大值为高,然后可以求最大值。但是感觉计数会重 计数其实不会重,如图中,红色线段显然比蓝色线段优 所以我们枚举3叉点时没错的 #include<bits/stdc.h> usin…...
求职招聘小程序源码系统+社交招聘+多城市招聘 带完整搭建教程
大家好,今天罗峰来给大家分享一款求职招聘小程序源码系统。目前,求职招聘市场在不断变革。传统的招聘网站已经无法满足人们对于高效、便捷、多元化的招聘需求。该系统集求职招聘、社交招聘、多城市招聘等功能于一体,旨在为用户提供更加便捷、…...
Java Web 安全实战:从登录到退出
Java Web 安全实战:从登录到退出 1. 介绍 在当今互联网时代,用户信息安全至关重要。在Java Web开发中,Spring Security是一个强大且灵活的身份验证和访问控制框架,它可以帮助我们构建安全可靠的应用程序。本文将介绍如何使用Spr…...
08.Diffusion Model数学原理分析(下)
文章目录 denoising matching term σ t z \sigma_tz σtz的猜想Diffusion Model for SpeechDiffusion Model for TextMask-Predict 部分截图来自原课程视频《2023李宏毅最新生成式AI教程》,B站自行搜索。 书接上文。 denoising matching term E q ( x t ∣ x 0 …...
什么样的CRM系统更适合外贸企业?
外贸CRM系统作为外贸客户关系管理的工具,已经成为了当下外贸企业对外贸易过程中不可或缺的一环。那什么样的CRM系统更适合外贸企业?小Z向您推荐Zoho CRM。下面说说它到底有什么好处和作用。 一、搭建更高效的客户关系管理系统 外贸企业从前期推广、开发…...
selenium自动化测试入门 —— 键盘鼠标事件ActionChains
在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为。比如使用鼠标单击、双击、右击、拖拽等动作;或者键盘输入、快捷键使用、组合键使用等模拟键盘的操作。在 WebDeriver 中,有一个专门的类来负责实现这些测试场…...
高级运维学习(十四)Zabbix监控(一)
一 监控概述 1 监控的目的 (1)报告系统运行状况 每一部分必须同时监控内容包括吞吐量、反应时间、使用率等 (2)提前发现问题 进行服务器性能调整前,知道调整什么找出系统的瓶颈在什么地方 2 监控的资源类别 …...
vite + electron引入itk报错
代码 import { readImageArrayBuffer } from itk-wasm console.log(readImageArrayBuffer)通过itk-wasm官网,创建新的项目vitevue(vue2或者vue3),都没问题。加入electeon后包此错。通过排查,意外找到原因,…...
大厂面试题-MySQL为什么使用B+Tree作为索引结构
从几个方面来回答: 首先,常规的数据库存储引擎,一般都是采用B树或者B树来实现索引的存储。 (如图)因为B树是一种多路平衡树,用这种存储结构来存储大量数据,它的整个高度会相比二叉树来说,会矮很多。 而对…...
Tomcat的Engine容器
https://tomcat.apache.org/tomcat-10.1-doc/config/engine.html Engine元素代表与一个特定的Catalina Service关联的、整体的请求处理系统。它从一个或多个Connector接收并处理请求、返回完整的响应给Connector,以便最终传输给客户端。 在Service元素内部…...
vscode绿色行数设置
"workbench.colorCustomizations": {"editorLineNumber.foreground": "#00ff00"},...
闪站侠洗衣洗鞋管理系统app小程序开发;
闪站侠洗护软件系统为您提供全面的洗衣洗鞋解决方案,系统多门店,多网点。为您开通公中号小程序,并与顺丰、天猫、抖音、美团点评等第三方平台紧密连接。 我们解决洗衣工厂/门店的五大问题: 一、效率 从门店收衣到工厂出库…...
【操作系统】测试一
文章目录 单选题判断题简答题 单选题 ( )不是基本的操作系统。 A. 批处理操作系统 B. 分时操作系统 C. 实时操作系统 D. 网络操作系统 【 正确答案: D】 操作系统提供给程序员的接口是( )。 A. 进程 B. 系统调用 C. 库函数 D. B和…...
如何用sklearn对随机森林调参
文章目录 一、概述二、实操1、导入相关包2、导入乳腺癌数据集,建立模型3、调参 三、总结 Link:https://zhuanlan.zhihu.com/p/126288078 Author:陈罐头 一、概述 sklearn是目前python中十分流行的用来实现机器学习的第三方包,其中…...
Java中单例模式
什么是单例模式? 1. 构造方法私有化 2. 静态属性指向实例 3. public static的 getInstance方法,返回第二步的静态属性 饿汉式是立即加载的方式,无论是否会用到这个对象,都会加载。 package charactor;public class GiantDragon…...
第1章 现代通信网概述
文章目录 1.1 通信网的定义1.2 通信网的分类1.3 通信网的结构1.4 通信网的质量要求 1.1 通信网的定义 1.1.1 通信系统 1.1.2 通信网的定义 通信网是由一定数量的节点 (包括终端节点、交换节点) 和连接这些节点的传输链路有机地组织在一起,以实现两个或多个规…...
99%的时间里使用的14个git命令
学习14个Git命令,因为你将会在99%的时间里使用它们 【赠送】IT技术视频教程,白拿不谢!思科、华为、红帽、数据库、云计算等等 https://xmws-it.blog.csdn.net/article/details/117297837?spm1001.2014.3001.5502 必须了解的命令整理 1&…...
适用于 iOS 的 10 个最佳数据恢复工具分享
在当今的数字时代,我们的移动设备占据了我们生活的很大一部分。从令人难忘的照片和视频到重要的文档和消息,我们的 iOS 设备存储了大量我们无法承受丢失的数据。然而,事故时有发生,无论是由于软件故障、无意删除,甚至是…...
泛微E-Mobile 6.0命令执行漏洞
声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、漏洞原理 泛微E-Mobile 6.0存在命令执行漏洞的问题,在…...
React 共享组件状态及其实践
React 是一个强大的JavaScript库,它提供了一种简单的方式来构建用户界面。然而,随着应用规模的增长,状态管理成为一个复杂的问题。本篇文章将深入探讨如何在React组件之间共享状态。 状态提升 首先,我们来谈谈"状态提升&qu…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
