首页 > TAG信息列表 > USACO18JAN

[USACO18JAN]MooTube G

题目链接 感觉排个序会非常好做,就能省了很多事 但是询问是不讲顺序的,那就离线一下 #include <iostream> #include <algorithm> using namespace std; #define MAXN 100005 int f[MAXN],size[MAXN]; int find(int x) { return f[x]==x ? x : f[x] = find(f[x]); } inline vo

洛谷 P4183 - [USACO18JAN]Cow at Large P(点分治)

洛谷题面传送门 点分治 hot tea。 首先考虑什么样的点能够对以 \(u\) 为根的答案产生 \(1\) 的贡献。我们考虑以 \(u\) 为根对整棵树进行一遍 DFS。那么对于一个点 \(v\),我们记其 \(mn_v\) 为其子树内距离其最近的叶子,\(dep_v\) 为 \(u\) 到 \(v\) 的距离,那么如果 \(mn_v\ge dep_v

[USACO18JAN]MooTube G

题目 【并查集】 思路 >=k即符合条件的边才给它合并,这样的话这个连通块中所有的点都符合条件啦 每次询问都重新合并一次的话会超时 用到两个快排,把每条边从大到小排,再把询问的k从大到小排 先做最大的k,把符合条件的点合并后,那么下一个k肯定比这个小啦 那么符合大k的点肯定符合小k

[USACO18JAN]MooTube

[USACO18JAN]MooTube 首先我们先理解并转化模型。 这道题问的是:一棵树,\(n\)个点上给边权,定义两个点的相关性为简单路径上最小边权。给一些询问,让你回答所有点与\(v\)的相关性不小于给的\(k\)的有多少个? 这道题一看到最小边权,我会想到LCA,通过DP求解出每个点到\(k\)级祖先的路径上

【USACO18JAN】MooTubeKruskal

原文链接:https://blog.csdn.net/Patrickpwq/article/details/86656456 给定一棵n个点的树(n=1e5),有边权, 两点间距离定义为两点路径上的 边权最小值。m个询问(m=1e5),k,v, 询问对于点v,距离>=k的点有多少个(不含v) Inputn个点,m个询问下面n-1行为边的信息下面m行ki和vi Output Sample

[USACO18JAN]Stamp Painting

题目 考虑正难则反,拿总方案数\(m^n\)减掉不合法的方案 由于我们最后一次涂了一段长度为\(k\)的连续颜色段,所以合法的方案有一段长度至少为\(k\)的颜色相同段 不合法的方案一定没有,于是我们求一下有多个颜色序列没有长度大于等于\(k\)的颜色相同段就好了 显然我们强制往后加一段长

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

P4185 [USACO18JAN]MooTube  并查集好合并不好拆开 可以考虑离线 先读入 从大到小排序 再依次合并 技巧:不好断开就倒着来合并 JSOI2008 P1197 也是该思想 #include<bits/stdc++.h>using namespace std;#define Max(x,y) (x)<(y)?(y):(x)#define Min(x,y) (x)<(y)?(x):(y)#defi

[USACO18JAN]Sprinklers

[USACO18JAN]Sprinklers  一个矩形要符合什么条件 右上角的右上有点,左下角的左下有点 所以每列的选择高度为一个区间,小于后缀最大值大于前缀最小值(不管是作为右上角还是左下角) 然后对于一个: 求完全在这个区域里的矩形个数   从上往下考虑,处理左下角在这一行,右上角在上面的方案

【题解:洛谷4186||USACO18JAN Cow at Large G】

传送门 题目描述 最后,Bessie被迫去了一个远方的农场。这个农场包含N个谷仓(2 <= N <= 105)和N-1条连接两个谷仓的双向隧道,所以每两个谷仓之间都有唯一的路径。每个只与一条隧道相连的谷仓都是农场的出口。当早晨来临的时候,贝西将在某个谷仓露面,然后试图到达一个出口。 但当贝西露