首页 > 其他分享 >CF592D Super M

CF592D Super M

时间:2023-10-25 19:12:36浏览次数:31  
标签:CF592D typedef include long key now Super define

妈的还在做水题

这题乍一看感觉要建虚树,但后面一想建个屁又没有多次询问直接DFS一遍把子树里没有关键点的点全删了就完事了

然后第一直觉是来个树上DP啥的,设两个状态表示子树内走了回来/不回来的最小代价

但后面冷静了一下仔细一想其实每条边都是要走两次的,除了起点到终点这条路径上的所有边可以只走一次

那么现在的问题就变成找直径了,直接两遍DFS解决即可,注意长度相同时保留编号最小的端点

#include<cstdio>
#include<iostream>
#include<utility>
#include<vector>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<set>
#include<array>
#include<random>
#include<bitset>
#include<ctime>
#include<limits.h>
#include<assert.h>
#include<unordered_set>
#include<unordered_map>
#define RI register int
#define CI const int&
#define mp make_pair
#define fi first
#define se second
#define Tp template <typename T>
using namespace std;
typedef long long LL;
typedef long double LDB;
typedef unsigned long long u64;
typedef __int128 i128;
typedef pair <int,int> pi;
typedef vector <int> VI;
typedef array <int,3> tri;
const int N=125000;
int n,m,x,y,key[N],mx,pos,tot,ans; vector <int> v[N];
inline void DFS1(CI now,CI fa=0)
{
	for (auto to:v[now]) if (to!=fa) DFS1(to,now),key[now]|=key[to]; tot+=key[now];
}
inline void DFS2(int now,CI fa=0,CI d=0)
{
	if (!key[now]) return;
	if (d>mx||(d==mx&&now<pos)) mx=d,pos=now;
	for (auto to:v[now]) if (to!=fa) DFS2(to,now,d+1);
}
int main()
{
	//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
	RI i; for (scanf("%d%d",&n,&m),i=1;i<n;++i)
	scanf("%d%d",&x,&y),v[x].push_back(y),v[y].push_back(x);
	for (i=1;i<=m;++i) scanf("%d",&x),key[x]=1;
	if (m==1) return printf("%d\n0",x),0;
	DFS1(x); mx=-1; DFS2(x); ans=pos; mx=-1; DFS2(pos);
	return printf("%d\n%d",min(ans,pos),2*(tot-1)-mx),0;
}

标签:CF592D,typedef,include,long,key,now,Super,define
From: https://www.cnblogs.com/cjjsb/p/17787920.html

相关文章

  • 权限维权——上线supershell
    计划任务后门schtasks命令设定计划自动启动后门程序。#每5分钟自动执行install.exeschtasks/create/tnUpdater/trC:\Users\Administrator\QQBrowser.exe/scminute/mo5直接启动一个定时任务schtasks/rn/rn任务名称定时任务删除schtasks/delete/tn任务名称......
  • 论文阅读:Few-Shot Point Cloud Semantic Segmentation via Contrastive Self-Supervis
    Few-ShotPointCloudSemanticSegmentationvia ContrastiveSelf-SupervisionandMulti-ResolutionAttention基于对比自我监督和多分辨率注意力的小样本点云语义分割摘要本文提出了一种适用于现实世界应用的有效的小样本点云语义分割方法。现有的点云小样本分割方法在很大程......
  • Super Apps 超级应用们背后的道家哲学
    众所周知,ElonMusk想将Twitter重新设计定位成一款“超级应用-X”的野心已经不再是秘密。伴随着应用商店中Twitter标志性的蓝鸟Logo被X取代后,赛博世界充满了对这件事情各种角度的探讨与分析。Musk曾经无数次通过微信这一样本来推广他的“超级App”愿景,但许多不曾熟......
  • CF638D Three-dimensional Turtle Super Computer
    什么大力爆搜题不妨考虑枚举要拿掉的位置,考虑怎么检验它是某两个点之间必经之点简单手玩一下会发现如果存在这么一条路径,那么我们一定可以把该路径的端点定为与要拿掉的点距离为\(1\)的点上(即与要拿掉的点上下左右前后\(6\)连通)因此我们把这些点找出来后爆枚点对,判断路径是否唯......
  • 戴森美发科技,呵护头皮水分0流失 戴森Supersonic™吹风机的头皮功效试验结果经中轻日用
    作为头发护理行业的领军品牌,戴森多年来一直持续研究头发科学,不断探知消费者对头发损伤的困扰与认知,致力于以创新科技为消费者提供健康科学的护发造型体验。自2016年戴森Supersonic™吹风机面世以来,戴森即以创新科技颠覆了传统的护发造型方式,也使健康护发的造型理念逐渐深入人心。日......
  • IDM:Implicit Diffusion Models for Continuous Super-Resolution超分辨率
    摘要当今超分辨领域的模型普遍存在过度平滑(难以保持放大后图像的锐利和纹理,导致高频信息丢失和视觉上变得平滑)和伪影(生成的高分辨率图像中可能出现的不希望出现的失真或瑕疵,包括模糊、马赛克效应或者不自然纹理等)的现象,作者据此提出了IDM模型,IDM模型是在一个统一的端到端框架中集......
  • Graph Laplacian for Semi-Supervised Learning
    目录概符号说明Graph-LaplacianforSSLStreicherO.andGilboaG.Graphlaplacianforsemi-supervisedlearning.arXivpreprintarXiv:2301.04956,2023.概标题取得有一点大,其实是一个很小的点.符号说明\(X=\{x_i\}_{i=1}^n\subset\mathbb{R}^n\),asetof......
  • supervisor托管程序开机自启
    1.supervisor简介#Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可......
  • Implicit Autoencoder for Point-Cloud Self-Supervised Representation Learning论文
    ImplicitAutoencoderforPoint-CloudSelf-SupervisedRepresentationLearning2023ICCV*SimingYan,ZhenpeiYang,HaoxiangLi,ChenSong,LiGuan,HaoKang,GangHua,QixingHuang*;ProceedingsoftheIEEE/CVFInternationalConferenceonComputerVision......
  • G7、Semi-Supervised GAN 理论与实战
    ......