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

题解:P12479 [集训队互测 2024] 长野原龙势流星群

题目:

唉不是,这个 trick 我见过啊 QAQ!

我们想一下特殊点,发现最大的点肯定选自己,然后又会发现他的父亲也必选他,所以每次找最大的点和他父亲合并成新点即可。

合并了贪心选点的过程。

#include<bits/stdc++.h>
using namespace std;
const int QAQ=2e5+7;
#define db double
int n,f[QAQ],fa[QAQ];
vector<int> dian[QAQ];
#define int long longstruct xxx {int sum,cnt,x;};bool operator <(xxx a,xxx b)
{if(a.sum*b.cnt==b.sum*a.cnt) return a.x<b.x;return a.sum*b.cnt<b.sum*a.cnt;
}set<xxx> dui;
bool vis[QAQ];
int cnt[QAQ];
double ans[QAQ],w[QAQ];
int find(int x) {return x==f[x]?x:find(f[x]);}
signed main()
{cin>>n;f[1]=1,cnt[1]=1;for(int i=2;i<=n;i++) cin>>fa[i],f[i]=i,cnt[i]=1;for(int i=1;i<=n;i++) cin>>w[i],dui.insert({w[i],cnt[i],i});while(!dui.empty()){xxx nw=(*--dui.end());dui.erase(nw);if(nw.x==0) continue;ans[nw.x]=(db)nw.sum/nw.cnt;vis[nw.x]=1;int v=find(fa[nw.x]);dui.erase({w[v],cnt[v],v});cnt[v]+=cnt[nw.x];w[v]+=w[nw.x];f[nw.x]=v;dui.insert({w[v],cnt[v],v});}for(int i=1;i<=n;i++) printf("%.7f\n",ans[i]);return 0;
}
http://www.zskr.cn/news/12812.html

相关文章:

  • 详细介绍:Docker(一)—— Docker入门到精通:从基础概念到容器管理
  • linux下nginx
  • 【C++】23. C++11(上) - 教程
  • kali2025搭建ARL灯塔系统
  • 实用指南:AI 术语通俗词典:LLM(大语言模型)
  • java学习 2025-9-27
  • 揭秘JUC:volatile与CAS,并发编程的两大基石
  • 深入解析:Pytorch框架笔记
  • elasticsearch安装插件 - 实践
  • P1731 生日蛋糕 做题记录
  • 详细介绍:【MySQL】MySQL数据库入门指南
  • 深入解析:【Linux】UDP 网络编程
  • Linux目录下有100百万个文件,如何快速删除
  • JavaDay10
  • 【C++】内存管理 - 指南
  • 介绍自己
  • pycharm更换国内源
  • MySQL中的空间碎片率计算分析 - 指南
  • 0voice-2.2.1-服务器百万并发实现
  • 关于SeaTunnel 达梦数据迁移无法自动建表的问题
  • python+springboot+uniapp基于微信小程序的巴马旅居养老系统 旅游养老小程序 - 详解
  • 深入解析:六维力传感器材质选择:影响性能与精度的关键因素
  • 按键精灵安卓/ios辅助工具,脚本开发新手教程ui界面介绍 - 教程
  • 2025年AI大模型赋能智能座舱研究报告:技术、资本与市场|附20+份报告PDF、数据仪表盘汇总下载
  • 专题:2025年AI Agent智能体行业洞察报告|附110+份报告PDF、数据仪表盘汇总下载
  • MYSQL: 时间戳演示
  • 自动化测试用例结构分析
  • 通过mcp-use client 调用mcp 服务方法
  • 详细介绍:**Qwen3-Omni(多模态:文本/图像/音频/视频)**的安装与使用速通手册
  • 谷歌新款具身智能模型 Gemini Robotics 1.5 和 Gemini Robotics-ER 1.5