首页 > TAG信息列表 > USACO19DEC
P5831 [USACO19DEC]Cow Gymnastics B
P5831 [USACO19DEC]Cow Gymnastics B - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc++.h> using namespace std; int a[30][30], t[30]; int main() { int k, n; scanf("%d%d",&k,&n); while(k--) //k天 , n头奶牛 { for(int i = 1; i &洛谷 P5851 [USACO19DEC]Greedy Pie Eaters P(区间dp)
传送门 解题思路 设dp[i][j]为吃掉派[i,j]的最大收益。 枚举中间点k进行转移,表示k这个派没被吃掉。 dp[i][j]=max(dp[i][k-1]+dp[k+1][j]+maxx[k][i][j]); 其中maxx[k][i][j]表示奶牛的喜欢吃的区间[l,r]符合i<=l<=k<=r<=j的最大的w值。 如何求maxx呢? 首先对每头牛进行初始化: 每洛谷 P5853 - [USACO19DEC]Tree Depth P(生成函数+背包)
洛谷题面传送门 神仙题。 首先考虑一个点的深度是什么,注意到对于笛卡尔树而言直接从序列的角度计算一个点的深度是不容易的,因为这样会牵扯到序列中多个元素,需要 fixed 的东西太多,计算起来太复杂了。因此考虑从树本身的角度计算一个点的深度。注意到对于一棵树上所有点 \(u\) 而题解 P5851 [USACO19DEC]Greedy Pie Eaters P
题解 P5851 [USACO19DEC]Greedy Pie Eaters P 应该比较好看出是区间 DP( n 个派, m 个奶牛 f[l][r][i] 表示第 i 个派尚未被吃时能吃掉它和能吃掉派区间 [l,r] 的奶牛(们)的最大体重 d[l][r] 表示派 [l,r] 全被吃掉后最大的奶牛总体重 对于每一个 f[l][r][i], 派 i 只能是位于区间[USACO19DEC]Milk Visits G
[USACO19DEC]Milk Visits G 题目链接: https://www.luogu.com.cn/problem/P5838 这道题的离线做法的题解还是比较多的,这里介绍一种在线做法。暴力一点,我们可以对于个节点都建一棵权值线段树。这颗权值线段树记录从这个节点到根节点的途中每一个品种奶牛的数量。空间肯定是爆P5837 [USACO19DEC]Milk Pumping G
题目描述 Farmer John 最近为了扩张他的牛奶产业帝国而收购了一个新的农场。这一新的农场通过一个管道网络与附近的小镇相连,FJ 想要找出其中最合适的一组管道,将其购买并用来将牛奶从农场输送到小镇。 这个管道网络可以用 $N$ 个接合点(管道的端点)来描述,将其编号为 $1…N$。接合点P5838 [USACO19DEC]Milk Visits G
题解 并不需要什么高级数据结构 用树链剖分维护 对于每种颜色开个 \(\text{vector}\),然后把是这种颜色的点的 \(\text{dfs}\) 序加进来排序 对于 \([dfn[top[x]],dfn[x]]\) 这一区间问有没有某种颜色 相当于问某种颜色有没有至少一个在这个区间内 直接二分查 \(\text{vector}\) 即P5837 [USACO19DEC]Milk Pumping G (单源最短路,dijkstra)
题意:有一\(n\)个点,\(m\)条边的双向图,每条边都有花费和流量,求从\(1\)~\(n\)的路径中,求\(max\frac{min(f)}{\sum c}\). 题解:对于c,一定是单源最短路,我们可以用dijkstra,但是这个最小流量不是很好搞,但是题目所给的数据范围较小,所以我们可以直接枚举最小流量,然后每次初P5836 [USACO19DEC]Milk Visits S 从并查集到LCA(最近公共祖先) Tarjan算法
为什么以它为例,因为这个最水,LCA唯一黄题。 首先做两道并查集的练习(估计已经忘光了)。简单来说并查集就是认爸爸找爸爸的算法。先根据线索理认爸爸,然后查询阶段如果发现他们的爸爸相同,那就是联通一家的,不同就不是一家的。 两道简单例题 P1551 亲戚 P1536 村村通 以P15[USACO19DEC]Milk Visits(gold)题解
看到这题的第一个想法就是:树链剖分+线段树套平衡树(set)对于每个线段树节点维护一个set,记录该节点代表的区间有哪几种奶牛。效率大概是$O(Nlog^2N)$(也可能是$log^3$?,我太蒻了不会证),吸个氧就过了。代码: 1 #include<cstdio> 2 #include<algorithm> 3 #include<set> 4 #define题解 USACO19DEC 【Meetings会议】
\(solution\) 首先此题如果不考虑重量,那么我们可以忽略每头牛的个性。从整体来看,如果两头牛相遇可以看作他们穿过对方并继续前进。但如果每头牛有不同的重量,那么它们就有了个性,不能再等价于穿过对方。 这时候我们从两个角度来考虑: \(1.\) 如果有\(x\)头牛回窝,那么一定是靠近端点的