BZOJ5279: [Usaco2018 Open]Disruption】的更多相关文章

题目大意:给你一棵n个节点的树,这n条边称为原边,另给出m条带权值的额外边,求删去每条原边后通过给出的m额外条边变回一棵树的最小价值.题解:看完题面以为是Tarjan连通性之类的题目,冷静分析后想到是树链剖分,自己真是Too young too simple.首先将这棵树进行树链剖分,对于每条额外边x-y,可以作为原树上x-y的路径上的任意一条边删去时的答案,所以路径更新最小值即可.树链剖分+线段树维护区间最小值,边权转点权的技巧直接把这条边的权值赋到儿子节点上,查找更新时不找LCA即可...输…
Description Farmer John自豪于他所经营的交通发达的的农场.这个农场是由N块牧场(2≤N≤50,000)组成的,N-1条双向道路将它们连接起来,每一条道路的都为一单位长度.Farmer John注意到,从任何一块牧场到另一块牧场,都能通过一组合适的道路到达.尽管FJ的农场现在是连通的,他担心如果有一条道路被阻断会发生什么,因为这事实上会将他的农场分为两个不相交的牧场集合,奶牛们只能够在每一个集合内移动但不能在集合间移动.于是FJ又建造了M条额外的双向道路(1≤M≤50,000…
BZOJ5188 [Usaco2018 Jan]MooTube 突然发现BZOJ没有题目,放题面. 题意翻译 题面描述 在业余时间,Farmer John创建了一个新的视频共享服务,他将其命名为MooTube.在MooTube上,Farmer John的奶牛可以录制,分享和发现许多有趣的视频.他的奶牛已经发布了 N个视频 ( $1 \leq N \leq 100,000 \(),为了方便将其编号为\) 1 \ldots N $.然而,FJ无法弄清楚如何帮助他的奶牛找到他们可能喜欢的新视频. FJ…
5196: [Usaco2018 Feb]Taming the Herd Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 78  Solved: 71[Submit][Status][Discuss] Description 一大清早,Farmer John就被木材破裂的声音吵醒了.是这些奶牛们干的,她们又逃出牛棚了!Farmer John已经厌 烦了奶牛在清晨出逃,他觉得受够了:是时候采取强硬措施了.他在牛棚的墙上钉了一个计数器,追踪从上次出逃…
5194: [Usaco2018 Feb]Snow Boots Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 102  Solved: 79[Submit][Status][Discuss] Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1…N,第i块地砖上积了fi英尺的雪 .在Farmer John的农舍的地窖中,总共有B双靴子,编号为1…B.其中某些比另一些结实,某些比另一些轻便.具 体地说,第…
5280: [Usaco2018 Open]Milking Order Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 123  Solved: 62[Submit][Status][Discuss] Description Farmer John的N头奶牛(1≤N≤105),仍然编号为1…N,正好闲得发慌.因此,她们发展了一个与Farmer John每 天早上为她们挤牛奶的时候的排队顺序相关的复杂的社会阶层.经过若干周的研究,Farmer Joh…
5281: [Usaco2018 Open]Talent Show Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 166  Solved: 124[Submit][Status][Discuss] Description FarmerJohn要带着他的N头奶牛,方便起见编号为1…N,到农业展览会上去,参加每年的达牛秀!他的第i头奶牛重 量为wi,才艺水平为ti,两者都是整数.在到达时,FarmerJohn就被今年达牛秀的新规则吓到了: (一)参加…
5484: [Usaco2018 Dec]Sort It Out https://www.lydsy.com/JudgeOnline/problem.php?id=5484 Sol. 考虑没有在被喊叫集合中的点,他们一定是上升的. 那么最小的集合大小就是n-最长上升子序列长度. 对于第二问,有个转化:因为给出的是排列,求第k小的集合相当于求第k大的最长上升子序列. 那么可以记f[i]表示以i为头的最长上升子序列长度,g[i]表示方案数,转移时一起转移. 用个vector存最长上升子序列长度为i的…
Description 研究证明,有一个因素在两头奶牛能否作为朋友和谐共处这方面比其他任何因素都来得重要--她们是不是喜欢同 一种口味的冰激凌!Farmer John的N头奶牛(2≤N≤50,000)各自列举了她们最喜欢的五种冰激凌口味的清单.为 使这个清单更加精炼,每种可能的口味用一个不超过106的正整数ID表示.如果两头奶牛的清单上有至少一种共同 的冰激凌口味,那么她们可以和谐共处.请求出不能和谐共处的奶牛的对数. Input 输入的第一行包含N 以下N行每行包含5个整数(各不相同),表示一…
https://www.luogu.org/problemnew/show/P4374 一看这道题就是一个妙题,然后题解什么树链剖分...珂朵莉树... 还不如并查集来的实在!我们知道并查集本来就是路径压缩的. 比如这题可以树上的路径压缩!! 直接跳到father,就省去大量上跳的过程(因为我们已经计算过了,不存在最优了). 下面给出题面: 给出n个节点的树,现在有m条边可供替换,对于树上每一条边删除, 为了保证整颗树强连通,需要从给出的边中选出一条添加上, 求对于删除的每一条树边,最小添加上的…
题面:P4269 [USACO18FEB]Snow Boots G 题解: 把所有砖和靴子排序,然后依次处理每一双靴子,把深度小于等于它的砖块都扔线段树里,问题就转化成了求线段树已有的砖块中最大的砖块间距是否小于当前靴子间距. 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define max(a,b) ((a)>(b)?(a):(b)) u…
BZOJ又不给题面... Luogu的翻译看不下去... 题意简述 有一个$n$个节点的树,边有权值,定义两个节点之间的距离为两点之间的路径上的最小边权 给你$Q$个询问,问你与点$v$的距离超过$k$的点有多少个 $n,Q<=100000$ 题解 很妙的做法. 并查集+离线 显然可以把询问离线,按K值排序 处理距离的话可以使用并查集,并不需要带权,只需要把边也按权值排序,用并查集维护. 具体做法:对每个点维护一个$siz$数组表示与它联通的节点数目,用类似双指针的方法把符合规则的边的两端点并起…
BZOJ没有题面QAQ,题目链接 洛谷有:题目链接 这题首先要读懂题..(洛谷的翻译有点迷 就是指定根节点,然后可以在叶子结点放个人,然后奶牛在根,问最少要在叶子结点放多少人才能让奶牛走不到叶子结点(奶牛和人相遇就死掉) 首先对于一个叶子结点和另外一个叶子结点,只需要在其中一个节点放人的条件:当且仅当$2*dep[lca(u,v)]>=dep[u]$($u,v$是两个节点) 所以把所以叶子结点扔进一个set里面,每次取出深度最小的 然后遍历一下剩下的叶子结点,对于满足上面那个条件的叶子结点全删了…
Description FarmerJohn要带着他的N头奶牛,方便起见编号为1…N,到农业展览会上去,参加每年的达牛秀!他的第i头奶牛重 量为wi,才艺水平为ti,两者都是整数.在到达时,FarmerJohn就被今年达牛秀的新规则吓到了:   (一)参加比赛的一组奶牛必须总重量至少为W   (这是为了确保是强大的队伍在比赛,而不仅是强大的某头奶牛),并且   (二)总才艺值与总重量的比值最大的一组获得胜利.   FJ注意到他的所有奶牛的总重量不小于W,所以他能够派出符合规则(一)的队伍.帮助他…
Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1…N,第i块地砖上积了fi英尺的雪 .在Farmer John的农舍的地窖中,总共有B双靴子,编号为1…B.其中某些比另一些结实,某些比另一些轻便.具 体地说,第i双靴子能够让FJ在至多si英尺深的积雪中行走,能够让FJ每步至多前进di.Farmer John从1号地砖出 发,他必须到达N号地砖才能叫醒奶牛们.1号地砖在农舍的屋檐下,N号地砖在牛棚的屋檐下,所以这两块地砖都 没有积雪.帮助Farmer…
题面 Bzoj 洛谷 题解 最暴力的方法是直接判两个点之间的路径最小值是否\(\geq k\),用\(Dijkstra\)可以做到该算法最快效率,但是空间复杂度始终是\(O(n^2)\)的,会\(MLE\),其实仔细观察一下,会发现对于一个满足某个\(k\)的路径\(dis\),它一定会满足\(\forall k'\leq k\),同时,对于任意一条长度大于\(|dis|\)的路径,它也满足又满足这些\(k\),甚至更多的\(k'\),于是我们从这个性质入手. 具体来说,就是将询问离线化,按照\…
有点厉害,,,不会啊 答案就是所有前i个数有多少不在前i个里的max? 为啥啊求助…
可以大胆猜想的一点是,只要有不少于一个长度为k的颜色相同子串,方案就是合法的. 直接算有点麻烦,考虑减去不合法的方案. 一个正(xue)常(sha)的思路是枚举序列被分成的段数,问题变为用一些1~k-1的数组成n的方案数,这显然是可以容斥的.但好像对每一种都进行容斥就不太好办了. 暴力二维dp是很容易想到的.考虑去掉一维的暴力,设f[i]为前i位不合法染色方案数,枚举这一段的长度转移.这显然是可以前缀和的. #include<iostream> #include<cstdio> #…
题目链接 luogu bzoj \(Describe\) 有一个\(n\)个节点的树,边有权值,定义两个节点之间的距离为两点之间的路径上的最小边权 给你\(Q\)个询问,问你与点\(v\)的距离大于等于\(k\)的点有多少个 \(Solution\) 这道题主要用并查集搞一下就好了啊. 离线的做. 首先将边按照权值排序,将询问的按照k排序 然后把权值大于等于\(k\)的放入并查集中,维护一个\(siz\)即节点的个数. \(End\) \(Code\) #include<bits/stdc++.…
我对二分的理解:https://www.cnblogs.com/AKMer/p/9737477.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5281 题目要求我们最大化\(\frac{\sum{t_i}}{\sum{w_i}}\),我们可以二分它的值\(x\).如果存在某一种方案使得\(\frac{\sum{t_i}}{\sum{w_i}}>=x\) ,我们可以将其转化成有一种方案满足\(\sum{t_i}-\sum{w…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5281 把分子乘1000,就能在整数里做了. 这种水题也花了这么久…… #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define ll long long using namespace std; ,M=;…
又又又又又又又被踩爆了 首先容易写出这样的期望方程:f(1)=max(d(1),f(2)/2),f(n)=max(d(n),f(n-1)/2), f(i)=max(d(i),(f(i-1)+f(i+1))/2),d是直接下来的收益 令S(i)等于后面那一个东西,那么f(i)=max(d(i),S(i)) 套了max很难直接求,但是S(i)和d(i)一定是定值,那些由S贡献的点实际上就是被它左右两边各一个点的d贡献的,更确切的,假如把那些点是由d贡献找出来,那些由S贡献的点实际上就是被它左右两边第…
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5192 [算法] 维护树的直径,在树上离一个点最远的点一定是一条直径的端点.         在直径为(x , y)的树上加入一个叶子结点z,则新的直径必然为(x , y) , (x , z) , (y , z)中的一条 , 问题转化为询问树上两点距离 , 倍增即可 , 时间复杂度 :O(MlogN) [代码] #include<bits/stdc++.h> using names…
注意到目录是一颗树结构,然后就简单了,预以1为根的处理出dis[u]为以这个点为根,到子树内的目录总长,si为子树内叶子数 第二遍dfs换根即可 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N=100005; int n,h[N],cnt,tot,si[N],de[N],l[N]; long long f[N],mn,dis[N]; bool v…
首先考虑快排的递归什么时候停下,显然是当前段只剩下一个数了,也就是一个数两边出现分隔符 然后再考虑计算冒泡长度这个操作,因为有分割,所以我们可以把这些放到一起冒泡,这和递归每个区间冒泡是等价的 所以答案就是一个数被动了几次,也就是他两边的分隔符出现的最晚时间 在冒泡排序中,每次冒泡,一个数如果前面有比他大的,就会往前面动一步 否则就会往后移到第一个比他大的那个数的前面 所以分隔符i出现的时间就是最右的小于i的数的位置到i的距离 然后直接计算答案即可 #include<iostream> #in…
注意到sum_t比较小,所以设f[i][j]为选前i头牛,当前sum_t为j的最小sum_w值,转移是f[i][j]=min(f[i-1][j],f[i-1][j-t[i]]+w[i]),然后i维用滚动数组优化即可 注意j<t[i]的部分也要赋值成f[i-1][j]-- #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N=255; int n,…
传送门 不难发现,每一条额外修的路径,会对原树上$(u,v)$路径上的所有边产生贡献 于是这就变成了一个路径修改 那么我们把每一条边赋值到它连接的两个点中深度较大的那个上面,然后每一次用树剖+线段树做路径修改,然后再把权值取回来就行了 几个注意点: 1.记得路径修改的时候$LCA$是不需要改的 2.区间修改要打标记,统计答案之前先把标记全都放掉 3.一个小技巧就是把边从2开始存,这样双向边标号就分别是$(2,3),(4,5)...$,于是每一条双向边的标号除以二都是唯一的,就可以唯一的表示出来…
Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1-N,第i块地砖上积了fi英尺的雪.在Farmer John的农舍的地窖中,总共有B双靴子,编号为1-B.其中某些比另一些结实,某些比另一些轻便.具体地说,第i双靴子能够让FJ在至多si英尺深的积雪中行走,能够让FJ每步至多前进di.Farmer John从1号地砖出发,他必须到达N号地砖才能叫醒奶牛们.1号地砖在农舍的屋檐下,N号地砖在牛棚的屋檐下,所以这两块地砖都没有积雪.帮助Farmer Joh…
Description Farmer John的N头奶牛(1≤N≤10^5),仍然编号为1-N,正好闲得发慌.因此,她们发展了一个与Farmer John每天早上为她们挤牛奶的时候的排队顺序相关的复杂的社会阶层.经过若干周的研究,Farmer John对他的奶牛的社会结构总计进行了M次观察(1≤M≤50,000).每个观察结果都是他的某些奶牛的一个有序序列,表示这些奶牛应该以与她们在序列中出现的顺序相同的顺序进行挤奶.比方说,如果Farmer John的一次观察结果是序列2.5.1,Farmer…
Description FarmerJohn要带着他的N头奶牛,方便起见编号为1-N,到农业展览会上去,参加每年的达牛秀!他的第i头奶牛重量为wi,才艺水平为ti,两者都是整数.在到达时,FarmerJohn就被今年达牛秀的新规则吓到了:(一)参加比赛的一组奶牛必须总重量至少为W(这是为了确保是强大的队伍在比赛,而不仅是强大的某头奶牛),并且(二)总才艺值与总重量的比值最大的一组获得胜利.FJ注意到他的所有奶牛的总重量不小于W,所以他能够派出符合规则(一)的队伍.帮助他确定这样的队伍中能够达到的…