首页 > 其他分享 >[NOIP2018] 赛道修建

[NOIP2018] 赛道修建

时间:2024-11-10 19:46:06浏览次数:1  
标签:赛道 begin return int sum NOIP2018 ++ 修建 mx

好题好题,太棒了这题!


直接想是十分困难的,你连 \(dp\) 状态都想不出合理的,因此考虑二分答案,转化成一个判定问题。下文 \(d\) 表示二分出的答案。

设 \(sum_i\) 表示 \(i\) 子树内的合法路径数,那他就一共分为两部分:

  1. 来自于 \(sum_{son}\),直接累加即可。
  2. 经过 \(i\) 的路径。

我们用一个 \(multiset\) 来存储每个儿子的 \(multiset\) 中还没有被配对的点中,距离子树根 最远的点。对于到 \(i\) 合法的路径,直接 \(sum_i++\) 即可;对于其他,从小到大进行配对,最后剩下的点中取最大值,再传递到子树根的父亲即可。

正确性显然,时间复杂度 \(O(n\log^2n)\)。

#include<bits/stdc++.h>
#define par pair<int,int>
#define int long long
using namespace std;
const int N=5e4+5;
int n,m,sum[N];
vector<par>g[N];
multiset<int>s[N];
int dfs(int x,int fa,int d){
	s[x].clear(),sum[x]=0;
	for(auto c:g[x]){
		int y=c.first;
		int z=c.second;
		if(y==fa) continue;
		int a=dfs(y,x,d)+z;
		sum[x]+=sum[y];
		if(a>=d) sum[x]++;
		else s[x].insert(a);
	}int mx=0;
	while(s[x].size()){
		int c=(*s[x].begin());
		if(s[x].size()==1)
			return max(mx,c);
		auto y=s[x].lower_bound(d-c);
		if(y==s[x].begin()) y++;
		if(y==s[x].end()) mx=max(mx,c);
		else s[x].erase(y),sum[x]++;
		s[x].erase(s[x].begin());
	}return mx;
}int check(int x){
	dfs(1,0,x);
	return (sum[1]>=m);
}signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n>>m;
	for(int i=1,a,b,l;i<n;i++){
		cin>>a>>b>>l;
		g[a].push_back({b,l});
		g[b].push_back({a,l});
	}int l=0,r=5e8,ans;
	while(l<=r){
		int mid=(l+r)/2;
		if(check(mid))
			l=mid+1,ans=mid;
		else r=mid-1;
	}cout<<ans;
	return 0;
} 

标签:赛道,begin,return,int,sum,NOIP2018,++,修建,mx
From: https://www.cnblogs.com/chang-an-22-lyh/p/18538376/noip2018-sai_dao_xiu_jian-tj

相关文章

  • [NOIP2018 提高组] 旅行
    算法对于一棵树的情况,dfs+贪心选取显然是正确的对于基环树的情况我们观察到城市不能重复行走所以长为\(L\)的环最多只会被访问\(L-1\)条边枚举断边,再跑dfs+贪心即可代码#include<bits/stdc++.h>constintMAXN=5e3+20;intn,m;std::vector<int>e......
  • AI赛道盈利模式揭秘——以AIStarter为例【AI数字人、大模型、工作流...】
    随着人工智能技术的飞速发展,越来越多的企业涌入这一赛道,试图在激烈的市场竞争中占据一席之地。作为其中的一员,AIStarter凭借其独特的商业模式和技术创新,成功地在市场上站稳了脚跟。本文将深入探讨AIStarter的盈利模式,揭示其成功的秘密。AIStarter概述AIStarter是一家专注于提......
  • 保姆级教程 | 小某书爆款新赛道,水晶水果新玩法,AI带你轻松涨粉!
    这两天刷小红书,发现了一个新奇的赛道,感觉蛮不错的,满足了小红书里面大部女生的少女心。这种图片制作简单,涨粉也不难。置顶的这两张苹果和水晶橘子,很吸引观众眼球!苹果透亮透亮的,橘子看着非常可口,十分治愈。这份完整版的AI绘画全套学习资料已经上传CSDN,朋友们如果需要可......
  • 【python-程序设计赛道-模拟题笔记整理】2024年第六届全国高校计算机能力挑战赛
    Python知识点整理不都正确是指要求找错误的如果没有错误的,全都是事实就没有符合题意的所以选选项D,三个选项不都正确模块模块不能被多次导入模块是构造程序的方式在执行时,一个模块只会被导入一次python程序文件是一个模块包语法空行不是python语法的一部分缩进是p......
  • ctf web赛道基础 万字笔记
    《Java代码审计》http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484219&idx=1&sn=73564e316a4c9794019f15dd6b3ba9f6&chksm=c0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene=21#wechat_redirect《Web安全》http......
  • 计蒜客:修建大桥(并查集/DFS/BFS)
     找到有几张连通图即可解决问题。DFS:1#include<bits/stdc++.h>2usingnamespacestd;3intn,m;4intgraph[1005][1005]={0};5boolvisited[1005]={false};6voiddfs(intp){7if(visited[p]){8return;9}10visited[p]......
  • 【AI副业变现】普通人如何利用AI每月多赚5K+?推荐6个适合用AI做小红薯的细分赛道,涨粉变
    前言大家好,我是小南,2024年AllinAI副业变现!相信很多家长都给自己孩子网上买过儿童绘本故事,在AI没有出现之前,特别这种电子视频版的儿童故事不论从制作还是成片整个流程都非常复杂。制作成本也很高,自从AI绘画的出现,儿童绘本故事制作就没那么难了。翻看小红薯,搜索儿童睡前......
  • 纽北赛道 All In One
    纽北赛道AllInOne紐博格林賽道/Nürburg-Ringhttps://www.nuerburgring.de/en/纽北:传说中的绿色地狱20.8公里、73个弯道、300米高差——这些数字立刻让赛车手和赛车迷心跳加速。北环赛道位于埃菲尔地区中心,布局壮观,是世界上最长的永久赛道,也是最美丽、最著名的赛......
  • 2024 年 MathorCup 数学应用挑战赛——大数据竞赛 赛道 A:台风的分类与预测 思路和代码
                       问题1:台风分类模型问题2:台风路径预测模型问题3:台风登陆后降水量与风速关系模型总结该题目分为三个主要问题,分别要求构建台风的分类模型、路径预测模型和降水风速模型。为了完成此任务,我们将运用大数据分析和机器学习建模技术,并......
  • 2024 年 MathorCup 数学应用挑战赛——大数据竞赛 赛道 B:电商品类货量预测及品类分仓
    2024年所有数学建模类比赛的个人思路和代码都会发布到专栏内,会结合最新的chatgpt发布思路,开赛一天后恢复原价99,不代写论文,不回复私信.没有群,只需订阅一次目录问题分析与解决思路问题1:货量预测模型问题2:一品一仓分仓规划问题3:一品多仓分仓规划总结这类大数据竞赛......