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

[USACO18JAN] G/S 题解

P4185 [USACO18JAN] MooTube G 题解

P6111 [USACO18JAN] MooTube S 题解(数据弱化版)

题目链接
题目链接(弱化版)
我的博客

前言

如标题所言,是双倍经验。不同的是P6111可以用DFS暴力过去,但是P4185不行。本篇重点讲的是非暴力做法。

思路

这道题显然不需要在线查询。所以我们可以考虑离线。每次查询每条边的边权显然是T飞了,因此我们可以考虑给查询的数组拍一下序,然后每次加边。

因此我们可以将询问按 \(k,w\) 的值降序排序后离线解决本题。

做法过程:

  1. 把边按照 \(w\) 从大到小排序。
  2. 把查询按照 \(k\) 从大到小排序。
  3. 对于每次查询的 \(k\),我们可以把所有边权 \(w \geq k\) 的边加入一个并查集,用并查集维护当前可以推荐的视频。
  4. 满足条件的推荐视频数量即为 \(size_v-1\)。(因为不能包含 \(v\) 本身)

代码

const int N=1e5+10;
int n,Q;
struct node{int u,v,w;
}e[N];//读入的边
bool cmpw(node A,node B){return A.w>B.w;}
struct qry{int k,v,id;int ans;
}a[N];//读入的询问
bool cmpk(qry A,qry B){return A.k>B.k;}
bool cmpid(qry A,qry B){return A.id<B.id;}
int fa[N],siz[N];
int findf(int x){//并查集查找if(fa[x]==x) return x;return fa[x]=findf(fa[x]);
}
void merge(int x,int y){//并查集合并int fx=findf(x),fy=findf(y);if(fx!=fy){fa[fx]=fy;siz[fy]+=siz[fx];//这里一定要搞清谁合并到谁里面了,不要搞反了!return ;}
}
signed main(){n=Read();Q=Read();for(int i=1;i<=n;i++) fa[i]=i,siz[i]=1;//初始化,不要忘了!for(int i=1;i<n;i++){e[i].u=Read();e[i].v=Read();e[i].w=Read();}sort(e+1,e+n,cmpw);for(int i=1;i<=Q;i++){a[i].k=Read();a[i].v=Read();a[i].id=i; }sort(a+1,a+Q+1,cmpk);int j=1;//当前加到第 j 个边for(int i=1;i<=Q;i++){while(j<n&&e[j].w>=a[i].k){merge(e[j].u,e[j].v);j++;}a[i].ans=siz[findf(a[i].v)]-1;}sort(a+1,a+Q+1,cmpid);for(int i=1;i<=Q;i++){printf("%d\n",a[i].ans);}return 0; 
} 
http://www.jsqmd.com/news/38737/

相关文章:

  • 计算机网络 —— 交换机 —— 二层交换机 or 三层交换机
  • IDM超详细安装下载教程,一次安装免费使用 Internet Download Manager
  • P7912 [CSP-J 2021] 小熊的果篮
  • 完整教程:对于环形链表、环形链表 II、随机链表的复制题目的解析
  • 第六章蓝墨云班习题
  • [network] IPv4 vs. IPv6 address pool
  • [Network] subnet mask
  • flask: 用flask-cors解决跨域问题
  • Linux小课堂: 用户管理与权限控制机制详解 - 实践
  • 分享一个MySQL万能备份脚本
  • 实用指南:构建AI智能体:六十五、模型智能训练控制:早停机制在深度学习中的应用解析
  • 解码LVGL 布局与多界面编程
  • 【为美好CTF献上祝福】浅学花指令
  • FreeSql自动分表
  • 20251112
  • 能耗在线监测体系:革新能源管理模式,助推企业节能减排
  • SAP SQL 加法不生效问题
  • 2025/11/14
  • 一份用pyhon生成word/wps蓝墨云班题库的代码
  • 公开仓库中的哈希值暴露安全风险分析
  • Kibana基本命令操作
  • linux版本微信打开关闭快捷键
  • Linux shell映射表(变量的变量)
  • 详细介绍:显卡算力过高导致PyTorch不兼容的救赎指南
  • 2025/11/13
  • Linux《网络基础》 - 教程
  • 《程序员修炼之道》阅读笔记4
  • 记一次 .NET 某医联体管理系统 崩溃分析
  • 如何构建可信智能 Data Agent?推荐 Aloudata Agent 分析决策智能体
  • #题解#牛客:牛牛的构造#DP#构造#