最新要闻
- 美国遭史上最严重禽流感疫情:鸡蛋价格创纪录 真吃不起节奏
- 每日短讯:剪映上线团队剪辑“神技”:异地多端一起剪视频成为可能
- 3299元起 vivo S16 Pro手机发布:首发双面柔光人像拍摄
- 环球信息:童年的味道 大白兔奶糖促销:1斤20元到手
- 环球聚焦:自拍绝了!vivo发布新机S16e:2099元起、行业首创“玉质玻璃”工艺
- 雷军宣布小米人事调整:总裁王翔退休 卢伟冰晋升
- 环球热消息:特斯拉北美大降价5.2万 超高折扣只为保住销量?
- vivo S16系列亮相:标准版搭载骁龙870 Pro版搭载天玑8200
- vivo S16系列出厂预装OriginOS 3 虚拟内存提升8G
- vivo S16系列7.36mm机身塞进4600mAh:苹果iPhone都没做到
- 【天天聚看点】男子开宝马专挑外地牌照车碰瓷 套路防不胜防:扔石头制造声响
- 迪士尼神话剧《美生中国人》新剧照:杨紫琼饰演观音 吴彦祖变身孙悟空
- 环球滚动:FIFA年终国家队排名:国足降至第80 美加墨世界杯出线希望增加
- 【报资讯】RTX 40系列移动显卡参数曝光:价格可不低
- 世界通讯!一加首款键盘曝光:全铝机身、自带USB-C/A接口
- 焦点热议:历史总是惊人地相似:复古主机Atari VCS宣告停产 一个时代终结
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
精彩看点:Codeforces 1654 G Snowy Mountain 题解 (重心分治)
(资料图片仅供参考)
题目链接
假设现在起点已经确定,我们观察从这个起点开始能走的最长路径长什么样。把这条最长路径中所有的非平地路径拿出来,它们肯定连成一线,因为不允许上坡;而一条路径重复走的情况只可能是在几个连续的平地那里来回走。所以路径的形状是一条主链(链上的边可以是下坡或者平地),上面挂着一些平地组成的环。由于图是树,所以"挂着的环"可以简化为只有一条边,但来回走了多次。
把原树中与平路相连的点称为好点,不与任何平路相连的点称为坏点。假设现在已经确定了主链,那么如果只走这条主链不走环,如果剩下了一些能量就浪费了。而当我们碰到主链中一个好点的时候就可以用与它连着的任意一条平路消耗能量。注意我们只能用这些平路额外消耗偶数个的能量,因为走这些平路总是来回来回地走的。发现只用这条主链上最靠后的一个好点来消耗能量是最优的。如果最后一个好点与起点的距离是奇数,那么在到达这个好点时,能量值是奇数,所以就会浪费1的能量值。令\(d\)为最后一个好点到起点的距离,则答案就是\(最后一个好点前面下坡的个数\cdot 2+最后一个好点后面的主链长度-d\ mod\ 2\)。
思考了这么多,可能会想到直接遍历树,并用两个线段树或者平衡树什么的分别维护最后一个好点到子树根距离为奇数和偶数的,在每个点处合并。但是这样非常难写,其实用一个点分治就解决了。对于每一层分治,仍然是套路地计算当前重心的不同子树互相之间的贡献,以及重心和子树之间的贡献。维护信息仍然是用两棵线段树,分别维护最后一个好点到子树根距离为奇数和偶数的信息。从左到右遍历重心的所有子树,对于每个子树,先把它dfs一遍,把子树中的节点挨个当做起点,用线段树中的信息求最长路径;然后再dfs一遍,把子树内节点作为终点的贡献也计入线段树。从前往后遍历一遍,再从后往前做同样的操作,就能处理所有的贡献关系了。哦,还需要第三棵线段树维护压根没有好点的信息。两次dfs时需要维护巨量的信息,细节很多,写的时候要小心。
时间复杂度\(O(nlog^2n)\)。
点击查看代码
#include #define rep(i,n) for(int i=0;i#define fi first#define se second#define mpr make_pair#define pb push_backvoid fileio(){ #ifdef LGS freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif}void termin(){ #ifdef LGS std::cout<<"\n\nEXECUTION TERMINATED"; #endif exit(0);}using namespace std;int n,hei[200010],sz[200010],ans[200010];vector g[200010];queue q;bool vis[200010],isGood[200010];pii mn;struct SegTree{ int n2,dat[800010],tag[800010]; //tag=clear ? 1:0 void init() { n2=1;while(n2dat[k]) dat[k]=val; return; } if(tag[k]) pushDown(k); int mid=(lb+ub)>>1; if(to<=mid) upd(k+k+1,lb,mid,to,val);else upd(k+k+2,mid+1,ub,to,val); dat[k]=max(dat[k+k+1],dat[k+k+2]); } void upd(int k,int val){upd(0,0,n2-1,k,val);} int qry(int k,int lb,int ub,int tlb,int tub) { if(ub=0&&gooddep%2==0) t0.upd(-mnv,tot); else if(gooddep>=0&&gooddep%2==1) t1.upd(-mnv,tot); else tn.upd(-mnv,tot); rep(i,g[pos].size()) if(g[pos][i]!=par&& !vis[g[pos][i]]&&hei[pos]>=hei[g[pos][i]]) { int ev=(hei[pos]>hei[g[pos][i]] ? 1:-1),ntot=tot+1,ngd=gooddep,nc1=cnt1+(int)(ev==1); if(isGood[g[pos][i]]) ngd=dep+1,ntot=nc1*2; dfsAdd(g[pos][i],pos,ngd,ntot,nc1,min(mnv,curv+ev),curv+ev,dep+1); }}void dfsAsk(int pos,int par,int gooddep,int tot,int cnt1,int mnv,int curv,int dep){ if(isGood[pos]&&gooddep==-1) gooddep=dep; //cout<=0) ans[pos]=max(ans[pos],qry(curv,dep%2,tot-(gooddep>-1&&(dep-gooddep)%2==1 ? 1:0),cnt1)); rep(i,g[pos].size()) if(g[pos][i]!=par&& !vis[g[pos][i]]&&hei[pos]<=hei[g[pos][i]]) { int ev=(hei[pos] son; rep(i,g[pos].size()) if(!vis[g[pos][i]]) son.pb(g[pos][i]); //cout<<"curpos "<=hei[pos]) dfsAsk(son[i],pos,-1,1,(hei[son[i]]==hei[pos] ? 0:1),(hei[son[i]]==hei[pos] ? -1:0),(hei[son[i]]==hei[pos] ? -1:1),1); if(hei[son[i]]<=hei[pos]) { int ev=(hei[son[i]]=0;--i) { if(hei[son[i]]>=hei[pos]) dfsAsk(son[i],pos,-1,1,(hei[son[i]]==hei[pos] ? 0:1),(hei[son[i]]==hei[pos] ? -1:0),(hei[son[i]]==hei[pos] ? -1:1),1); if(hei[son[i]]<=hei[pos]) { int ev=(hei[son[i]]>n; rep(i,n+3) hei[i]=1e9; repn(i,n) { int x; scanf("%d",&x); if(x==1) q.push(i),hei[i]=0; } int x,y; rep(i,n-1) { scanf("%d%d",&x,&y); g[x].pb(y);g[y].pb(x); } while(!q.empty()) { int f=q.front();q.pop(); rep(i,g[f].size()) if(hei[g[f][i]]==1e9) { hei[g[f][i]]=hei[f]+1; q.push(g[f][i]); } } repn(i,n) rep(j,g[i].size()) if(hei[i]==hei[g[i][j]]) isGood[i]=true; t0.init();t1.init();tn.init(); solve(1); repn(i,n) printf("%d ",ans[i]); puts(""); termin();}
-
精彩看点:Codeforces 1654 G Snowy Mountain 题解 (重心分治)
题目链接假设现在起点已经确定,我们观察从这个起点开始能走的最长路径长什么样。把这条最长路径中所有...
来源: -
环球速看:FreeSWITCH学习笔记:Lua脚本
本文更新于2022-06-03,使用FreeSWITCH1 10 7。argv命令行参数。argv[0]为脚本文件名。freeswitch APIAPI=freeswitch API()
来源: 精彩看点:Codeforces 1654 G Snowy Mountain 题解 (重心分治)
美国遭史上最严重禽流感疫情:鸡蛋价格创纪录 真吃不起节奏
环球速看:FreeSWITCH学习笔记:Lua脚本
每日短讯:剪映上线团队剪辑“神技”:异地多端一起剪视频成为可能
3299元起 vivo S16 Pro手机发布:首发双面柔光人像拍摄
环球信息:童年的味道 大白兔奶糖促销:1斤20元到手
环球聚焦:自拍绝了!vivo发布新机S16e:2099元起、行业首创“玉质玻璃”工艺
软链接和硬链接
世界热消息:渗透实录-02
雷军宣布小米人事调整:总裁王翔退休 卢伟冰晋升
环球热消息:特斯拉北美大降价5.2万 超高折扣只为保住销量?
vivo S16系列亮相:标准版搭载骁龙870 Pro版搭载天玑8200
vivo S16系列出厂预装OriginOS 3 虚拟内存提升8G
vivo S16系列7.36mm机身塞进4600mAh:苹果iPhone都没做到
快资讯:教你用JavaScript实现鼠标特效
【天天聚看点】男子开宝马专挑外地牌照车碰瓷 套路防不胜防:扔石头制造声响
迪士尼神话剧《美生中国人》新剧照:杨紫琼饰演观音 吴彦祖变身孙悟空
环球滚动:FIFA年终国家队排名:国足降至第80 美加墨世界杯出线希望增加
【报资讯】RTX 40系列移动显卡参数曝光:价格可不低
世界通讯!一加首款键盘曝光:全铝机身、自带USB-C/A接口
当前动态:基于Netty的IM聊天加密技术学习:一文理清常见的加密概念、术语等
JDK源码分析实战系列-PriorityBlockingQueue
资讯:Altium Designer v23.0.1.38图文详解
焦点热议:历史总是惊人地相似:复古主机Atari VCS宣告停产 一个时代终结
网友称考研民宿房费暴涨近20倍 店家:每年都一样
中国企业站稳全球LCD市场!李东生:TCL部分技术领先三星
消息!超可爱!《王者荣耀》梦奇赛年皮肤来了 特效贼棒
环球热讯:《王者荣耀》《合金弹头》联动:联名首发新英雄莱西奥
【世界播资讯】高能吸水 洁丽雅纯棉毛巾:15.9元/3条
今日报丨Intel显卡事业部突然解散!掌门人Raja回归首席架构师
全球新消息丨国内油价要止步“三连跌”!元旦后或迎新一轮价格上调
世界微头条丨比iPhone 14 Pro Max还轻 OPPO Find N2明天首销:7999元
Go 快速入门指南 - 环境安装
环球快看:什么是 HTML?
热讯:基础可视化图表之堆叠条形图
环球新动态:window系统增强优化工具
世界今热点:智创万物,数赢未来——如何助推数智时代的发展浪潮
每日时讯!入口脆甜 林家铺子乌龙茶蜜桃罐头19.9元四罐
今日讯!5年了 网易云音乐终于撕下了“网抑云”标签
全球热资讯!羊被冻死牧羊犬贴身供暖试图唤醒 网友:边牧聪明又有情
每日速读!山东一地120和119到路口秒变绿灯 网友:建议全国推广
天天看点:腾讯智能车技术花样用 数万人疯狂点赞转发
世界消息!(笔记)PID算法讲解
低代码:让企业“活”起来,赋能企业数字转型
今日要闻!大四上 | 计算机综合课设答辩经验帖
一、【Java】多线程与高并发
世界热资讯!小米史上最强!雷军确认小米13 Pro支持Wi-Fi 7:国内认证后开放
全球最资讯丨今天突然发现谷歌翻译用不了,发现是谷歌域名解析问题,现提供以下方法解决
快报:高帧畅玩《巫师3》!满血3060游戏本华硕天选3双旦入手7599 性价比超高
天天热头条丨豆瓣评分跌至6.3!《三体》动画播放量破2亿
东西生锈了是什么原因?东西生锈了怎么去除?
cbz是什么文件格式?cbz文件格式怎么打开?
快讯:创元集团的数智化实践 这次选择了和火山引擎 VeDI 搭档
大喜之日是什么意思?大喜之日祝福语
碳化硅是什么材料?碳化硅的用途有哪些?
越南十二生肖是哪些动物?越南十二生肖和中国的区别
newjeans为什么叫吴晓梅?newjeans女团成员个人资料
省略号的快捷键是什么?省略号的快捷输入方式
皮卡全面解禁再下一城!广西南宁:明年起进城无需办通行证
登陆火星4年电量即将耗尽:探测器洞察号发文告别
【新要闻】中国汽车流通协会:建议全面取消汽车限购 买车可抵税
世界百事通!如何在Word表格中拆分或合并单元格?
当前速讯:Kubernetes监控手册02-宿主监控概述
【全球新要闻】STM32 SPI DMA 源码解析及总结
全球快看点丨MySQL-带你上官网看索引
天天简讯:图算法、图数据库在风控场景的应用
热头条丨Redmi K20 Pro钉子户三年多不换机:就等卢伟冰发K60
最强性能旗舰!一加11配置公布:二代骁龙8、直接12GB+256GB起步
速读:QQ音乐iOS版12.0版发布:新增“臻品母带” 无损音质升级
“灵魂”没了!育碧确认《刺客信条:英灵殿》Steam版将无成就系统
天天观速讯丨美版《西游记》剧照公布:吴彦祖悟空、杨紫琼观音亮相
赛尔号动画片的结局是什么?赛尔号动画片精灵实力排名
流浪地球小说结局是什么?流浪地球小说经典语录
二极管如何判断正负极?二极管工作原理
世界快消息!Visual Studio Code 安装教程
Redis集群的三种方式详解(附优缺点及原理区别)
全球即时:echarts设置单位的偏移
每日速看!网约车司机一路刷抖音吓坏女乘客 司机:投诉去吧 无所谓的
天天快资讯:因收购动视暴雪 微软被美国十名玩家集体诉讼
天天视讯!气场百万 比亚迪仰望高端越野车预告:L形尾灯头次见
【独家】OPPO部分旗舰能升级到Android 17:国产手机独此一家
TCP套接字
全球即时:认证管理(锐捷无线篇)
热资讯!基于 Dubbo-Admin 实现根据请求条件路由
最新快讯!教你用Java实现动态调色板
4090也秒怂!东北网友晒NV RTX 3070显卡温度:这效果我服!
大众ID.Xtreme概念车曝光:旗下最野性的电动车
当前快讯:员工漏打卡11次被辞 法院判决:公司赔大发了
“兔圆圆”!2023年总台春晚标识和吉祥物官宣 附春晚节目单
每日速讯:网易MOBA游戏《无尽战区》宣布复活!曾于两年前停运
世界快看点丨Spring Cloud 2022 正式发布!我的天,OpenFeign 要退出历史舞台了?!
焦点快播:君子不玩物丧志,亦常以借物调心,网站集成二次元网页小组件(widget)石蒜模拟器,聊以赏玩
天天播报:让人诧异!浙江台州天上突然飘落大量羽毛:宛如鹅毛大雪
环球热文:美国动物园将归还大熊猫丫丫和乐乐 结束20年租期:曾被质疑虐待国宝
除了蔚来:大多数车企都给黑客赎金了
全球看热讯:韩国刷新世界最低生育率纪录 上学人减半:日本欧洲更慌了
天天速看:性能超RX7900 XTX!RTX 4070/4070 Ti确定:这售价给老黄买单?
焦点速读:世界最慢的PC诞生 单核跑分不到13900K的百分之一
跟着TDP配电源怎么就蓝屏了?原因揭开
环球新消息丨vue-router