P6111 [USACO18JAN]MooTube S

输出格式

输出 Q 行。在第 i 行,输出 FJ 的第 i 个问题的答案。

输入输出样例

输入

4 3
1 2 3
2 3 2
2 4 4
1 2
4 1
3 1

输出

3
0
2

思路:
如果题目K只有一个值,然后求每个点的推荐的视频数,那就简单了。

但是难在K是个变量,就在要抓破头皮时,发现了洛谷竟然有题解。

一开始对于每一对点,我想将这两个点之间所连的边的权值大于等于K都加进去。但还是老问题,K是个变量!

我们先将问题按K值排序(降),再按边权值将每条边进行排序(降)
因为对于一条边,如果K值大的你都能满足,那么小的也可以,换言之:你不会影响后面的结果,有点像动态规划的无后效性。
接下来,其实就是个加边的问题了。
根据题意,不能自荐,所以答案要-1(-他本身)。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
using namespace std;
const int MAX=2147483647;
const int N=5e3+10;
int n,qu,f[N],num[N],ans[N];
struct node
{int u,v,w;
}edge[N];
struct node1
{int id,k,v;
}q[N];
int find(int x) {return x==f[x]?x:f[x]=find(f[x]);}
void unionn(int x,int y)
{int a=find(x),b=find(y);if(a!=b) f[a]=b,num[b]+=num[a];  //num[i]为父节点i所连满足条件的边数
}
bool cmp1(node x,node y){return x.w>y.w;}
bool cmp2(node1 x,node1 y){return x.k>y.k;}
void input()
{scanf("%d%d",&n,&qu);for(int i=1;i<=n;i++) f[i]=i,num[i]=1;for(int i=1;i<n;i++)  scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w);for(int i=1;i<=qu;i++) scanf("%d%d",&q[i].k,&q[i].v),q[i].id=i;
}
void work()
{sort(edge+1,edge+n,cmp1);sort(q+1,q+qu+1,cmp2);int j=1;for(int i=1;i<=qu;i++){while(edge[j].w>=q[i].k&&j<n) unionn(edge[j].u,edge[j].v),j++;ans[q[i].id]=num[find(q[i].v)]-1;  //这里不要写成num[q[i].v],你是在个集合里面,所以要找集合中的老大才知道有多少成员 }for(int i=1;i<=qu;i++) printf("%d\n",ans[i]);
}
int main()
{//fre();input();work();return 0;
}

P6111 [USACO18JAN]MooTube S相关推荐

  1. 【luogu4185】 [USACO18JAN]MooTube [并查集]

    P4185 [USACO18JAN]MooTube 并查集好合并不好拆开 可以考虑离线 先读入 从大到小排序 再依次合并 技巧:不好断开就倒着来合并 JSOI2008 P1197 也是该思想 #inc ...

  2. luogu4185 [USACO18JAN]MooTube Gold

    http://www.elijahqi.win/2018/02/02/luogu4185-usaco18janmootube-gold/ 题目描述 In his spare time, Farmer ...

  3. ONTAK2010 Peaks加强版(离线在线)

    题面 弱化版:luogu 强制在线版:bzoj 题解 本题有两种解法 离线算法:线段树合并 先看一道简单题[USACO18JAN]MooTube 本题就是在此基础上求第\(k\)高的点 首先把询问和路 ...

  4. [USACO18JAN][luoguP4183 ]Cow at Large P

    前言 这是一道考试题 需要一定的idea 构造好后似乎就是裸的点分治了 题目相关 题目链接 题目大意 这个大意写的很烦,不如看题面 有一棵nnn个点的树 设定一个动点:其每秒可以走到树上相邻的一个节点 ...

  5. [USACO18JAN] Cow at Large G (dfs)

    题目大意:有一只狐狸从给定的S点开始逃跑(出发),向叶节点移动以逃离这棵树,叶节点可能出现农民去抓捕狐狸,当农民和狐狸出现在同一个节点的时候,狐狸会被抓住,农民和狐狸移动速度相同,求抓捕狐狸所需要的最 ...

  6. luogu4188 [USACO18JAN]Lifeguards S

    http://www.elijahqi.win/2018/02/02/luogu4188-usaco18janlifeguards-s/ 题意翻译 FJ为他的奶牛们建造了一个游泳池,FJ认为这将有助于 ...

  7. [Luogu4182][USACO18JAN]Lifeguards P[单调队列]

    题意 给定 \(n\) 个区间,必须去掉其中的 \(K\) 个,询问能够保留的区间并的最大值. \(n \leq 10^5\ ,K \leq 100\) . 分析 定义状态 \(f_{i,j}\) 表 ...

  8. [USACO18JAN] Lifeguards S

    题目描述 FJ为他的奶牛们建造了一个游泳池,FJ认为这将有助于他们放松身心以及生产更多牛奶. 为了确保奶牛们的安全,FJ雇佣了N头牛,作为泳池的救生员,每一个救生员在一天内都会有一定的事情,并且这些事 ...

  9. luogu4182 [USACO18JAN] Lifeguards P (单调队列优化dp)

    显然可以先把被覆盖掉的区间去掉,然后排个序,左.右端点就都是单调的 设f[i][j]表示前i个区间中删掉j个,而且钦定i不能删的最大覆盖长度 (如果不钦定,就要有一个删掉的状态,那我无法确定前面的到底 ...

最新文章

  1. 什么是虚拟专用网(×××)
  2. buffer cache 深度解析
  3. 多租户系统技术实现mysql_SaaS “可配置”和“多租户”架构的几种技术实现方式...
  4. 成人教育还是K12,对网易有道来说都很难
  5. 《系统集成项目管理工程师》必背100个知识点-34项目范围基准
  6. .NET Core 的过去、现在和未来
  7. Top 10 DTrace scripts for Mac OS X
  8. POJ 2299Ultra-QuickSort
  9. Confluence3.4的安装和配置
  10. ubuntu定时关机命令
  11. Java基础教程——字符流
  12. 北京药监局考试计算机操作,考科一电脑操作
  13. Maven到底是个啥?——Maven深入理解
  14. 使用C# 开发Pocket PC 应用程序(转)
  15. 电偶极子的MATLAB场模拟
  16. configure: error: Package requirements (oniguruma) were not met
  17. java版我的世界怎么疾跑,我的世界怎么疾跑?疾跑快捷键介绍
  18. Office365离线安装包
  19. Python实践—微信远程控制电脑
  20. Multisim基础 发光二极管 添加元件的位置

热门文章

  1. 第2课:5G标准小知识
  2. python入门知识点-1
  3. 从代理设计模式到Spring AOP
  4. QQ2010协议技术详细分析QQ登陆过程
  5. leetcode 1365. How Many Numbers Are Smaller Than the Current Number(python)
  6. Intel芯片组大全最新版
  7. 中国互联网生态报告发布
  8. BERT: 理解上下文的语言模型
  9. 再谈深度学习文本的表示
  10. thinkphp5 使用ElasticSearch 做搜索