当前位置: 首页 > news >正文

Luogu P3237 [HNOI2014] 米特运输 题解 [ 蓝 ] [ 树形 DP ] [ 哈希 ]

米特运输

不是很难,但是思路很巧妙的一道题。

手模样例,观察合法方案的性质,容易发现,只要有一个节点权值是固定的,那么整棵树所有节点的权值便也固定了。

而由于每个节点之间是倍数关系,因此我们需要一个基本单位来表示倍数关系。为了方便,我们直接将权值的最大值,即根节点的权值设为基本单位,那么其余节点的系数一定形如 \(\dfrac{1}{k}\)

在得到每个节点的系数后,假设当前节点的权值为 \(x\),那么当 \(kx = a_{root}\) 的时候这两个节点的权值所对应的合法方案是一样的

由此可以想到记录每个节点的 \(k\) 值,然后乘上该点的原权值,丢进一个里,桶中最多的权值即为最终选择的权值。

因为 \(k\) 可能很大,因此需要采用哈希的思想存储。使用 map 实现桶,时间复杂度 \(O(n\log n)\)

#include <bits/stdc++.h>
#define fi first
#define se second
#define eb(x) emplace_back(x)
#define pb(x) push_back(x)
#define lc(x) (tr[x].ls)
#define rc(x) (tr[x].rs)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
using pi = pair<int, int>;
const int N = 500005;
const ll mod = 998442353;
int n;
ll a[N], b[N], ans;
map<ll, ll> tot;
vector<int> g[N];
void dfs(int u, int fa)
{if(u == 1) b[u] = 1;else if(fa == 1) b[u] = g[1].size();else b[u] = (b[fa] * (g[fa].size() - 1)) % mod;for(auto v : g[u]){if(v == fa) continue;dfs(v, u);}tot[(a[u] * b[u]) % mod]++;ans = max(ans, tot[(a[u] * b[u]) % mod]);
}
int main()
{//freopen("sample.in", "r", stdin);//freopen("sample.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;for(int i = 1; i <= n; i++) cin >> a[i];for(int i = 1; i < n; i++){int u, v;cin >> u >> v;g[u].push_back(v);g[v].push_back(u);}dfs(1, 0);cout << n - ans;return 0;
}
http://www.jsqmd.com/news/23783/

相关文章:

  • 「Gym 104901F」Say Hello to the Future
  • 渐进过程中大O与小o混用
  • Navicat 17 超详细保姆级下载安装教程:附激活工具使用步骤​
  • 消息队列的有序性
  • 【LTDC】DMA2D —— 嵌入式系统的 GPU
  • 各个版本的sqlite-jdbc jar下载链接
  • [电脑]win10下SVN图标不显示
  • 2025/10/27~2025/11/2 做题笔记 - sb
  • echart - f
  • 完整教程:LinuxC++——etcd分布式键值存储系统入门
  • 基于MATLAB的光学CCD全息成像仿真程序实现
  • el-date-picker样式修改
  • 我从哪里起飞 从哪里降落 多少不能原谅的错 却不能重来过
  • unity管理器设计:Manager of Managers
  • iview table 排序 columns 里面写 sortable: custom 不要写 sortable: true 不然会进行二次内部排序序号等 字段。
  • 决策不再凭感觉!Tita用数据驱动销售与交付的一体化协同
  • 浅谈 Agent 开发工具链演进历程
  • 为IvorySQL增添PACKAGE语法帮助
  • MATLAB 时间序列小波周期分析
  • # 情绪日历应用(python AI项目)
  • 读《程序员修炼之道:从小工到专家》
  • 本地运行nginx服务,模拟线上环境访问项目
  • git提交远程项目步骤
  • 基于Redis海量数据场景分布式ID生成实践
  • 电梯调度算法结对编程作业
  • 【完结22章】从0到1,LangChain+RAG全链路实战AI知识库
  • 分享精选文章合集 - 2025-10-27
  • 20232416 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025 年搅拌器搅拌设备,侧入式搅拌设备,斜插式揽拌设备,卧式搅拌设备厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读
  • 芯片实现路线图