10.16模拟赛

sol:

原题 CF444E

引理:考虑把xi像size一样记录出某个子树的大小,如果这个子树的大小大于除这个子树外的节点数,那这条边就可以满足条件。

但是不能用整个树来做判断,可以把他们看成一块块的,首先对每条边按边权排序,然后用并查集把点并起来,顺便把sz合起来,顺便同时判断是否满足

#include <cstdio>
#include <algorithm>
using namespace std;
const int N=100005;
int n,fa[N],sz[N],bo=0,pp[N],S=0;
inline int Find(int x){return (x==fa[x])?x:fa[x]=Find(fa[x]);}
struct node{int x,y,w;}a[N];
inline bool cmp(node a,node b){return a.w<b.w;}
inline void merg(int x,int y)
{
  fa[x]=y; sz[y]+=sz[x]; pp[y]+=pp[x]; if(sz[y]>S-pp[y])bo=1;
}
int main()
{
  int i,x,y,re=0; scanf("%d",&n);
  for(i=1;i<n;i++)
  {
    scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w); fa[i]=i; sz[i]=1;
  }fa[n]=n; sz[n]=1; sort(a+1,a+n,cmp); for(i=1;i<=n;i++)scanf("%d",&pp[i]),S+=pp[i];
  for(i=1;i<n;i++)
  {
    if(bo)break; x=Find(a[i].x); y=Find(a[i].y); re=a[i].w; merg(x,y);
  }printf("%d\n",re);
}

原文地址:https://www.cnblogs.com/gaojunonly1/p/9800817.html

时间: 2024-10-10 19:42:59

10.16模拟赛的相关文章

10.2模拟赛总结

10.2 模拟赛总结 T1. 数位dp: 一个非常非常非常非常显然的数位 DP \([L,R] = [1,R]-[1,L-1]\) 所以是分别求两次小于等于某个数字的方案数 \(f(i,j,k)\) 表示从低位数起的第 \(i\) 位,按照规则计算后答案为 \(j\quad (j=0,1)\) \(k\) 表示只考虑后面结尾和 \(lmt\)后面几位 的大小关系 \((k=0,1)\) 考虑第 \(i+1\) 位,算一下新构成的数字并判断下大小就可以了 注意到 \(L,R\) 数据范围特别大,需

10.22 模拟赛

10.22 模拟赛 T1 染色 考虑每个连通块删成一棵树就好了. mmp场上就我路径压缩写炸.... #include<iostream> #define MAXN 200006 using namespace std; int n , m; int fa[MAXN] , siz[MAXN] , book[MAXN] , sz[MAXN]; int find(int x) { return x == fa[x] ? x : fa[x] = find(fa[x]); } int main() {

10.31 模拟赛

10.31 模拟赛 A LIS 考虑每个数字前从 $ m $ 降序构造到 $ a_i $ 即可. #include <iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<vector> using namespace std; #define MAXN 300006 int n , m , k; int A[MAXN]; vector<int&g

10.5模拟赛

这么多模拟赛都没整理,能整理一天算一天吧qaq T1题面 sol:应该不难吧,分别对横坐标和纵坐标取差的绝对值,易知:如果互质就可以看到,否则就不行.然后出题人很毒瘤要用unsigned long long. #include <cstdio> #include <algorithm> using namespace std; long long x1,y1,x2,y2,c1=0,c2=0; unsigned long long x,y; unsigned long long AB

9 16 模拟赛

昨天 又考模拟赛 考场上心态再次爆炸 导致一道题爆零. 总结 :慌了..当T1看了30min还不知道怎么做的时候我就已经慌了..觉得要GG了.(以后还是不能慌 把送的分数都拿到手才是正道... 考试策略还行 大概是先写自己会写的暴力 再写陌生的题目.放题么?还是放吧 反正没人看..(当然.. 当然 考试是最暴露出自己的短板的 可能这次不爆下次就爆了. 原文地址:https://www.cnblogs.com/chdy/p/11526312.html

10 01模拟赛订正

好吧,这是我第一次写模拟赛的订正,主要是有时间而且这次的题确实好... 第一题确实好,用的算法人人都会,就是看你能不能想到,我考只打了O(n^4)的暴力,最后还苦逼的MLE,爆零了... 暴力就不多说了...枚举两个点更新其他的点... 其实我考场上思考的是,能被标记的点都与其他的点有什么联系,可惜,除了模拟题目的做法,就不会了... 那让我们就认真地思考一发:我们设A(x1,x2),B(x2,c2),C(x3,c3)来更新D点,只有:有两个点横坐标相等,有两个点纵坐标相等,才可以更新出来一个新

10.1 模拟赛

由于算错了inf 又ak失败了 过于菜 T1 年轮蛋糕 loj 2758 题目大意: n个数构成的环 把这个环分成三段 使最小的最大 求这个最小段的和的最大值 思路: 可以想到二分 因为log方可以过 所以可以二分长度后lower_bound找断点 或者使用滑动窗口 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<cma

10.27 模拟赛

这一次终极被吊打 甚至没进前十 T2 最后改错 T3 没写正解 T1 elim 题目大意: n 行 m 列的游戏棋盘,一行或一列上有连续 三个或更多的相同颜色的棋子时,这些棋子都被消除 当有多处可以被消除时,这些地方的棋子将同时被消除 求消除后的棋盘 思路: sb模拟 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<cm

2019.10.24模拟赛赛后总结

本文原创,如果有不到位的地方欢迎通过右下角的按钮私信我! A.Icow Player 题目描述 被无止境的农活压榨得筋疲力尽后,Farmer John打算用他在MP3播放器市场新买的iCow来听些音乐,放松一下.FJ的iCow里存了N(1 <= N <= 1,000)首曲子,按1..N依次编号.至于曲子播放的顺序,则是按一个Farmer John自己设计的算法来决定: * 第i首曲子有一个初始权值R_i(1 <= R_i <= 10,000). * 当一首曲子播放完毕,接下来播放的