
USACO
NOVA1127
。。
展开
-
[BZOJ]1601: [Usaco2008 Oct]灌水
题目大意:要给n块地灌水,对于每一块地,可以选择从另一块地引水过来,也可以选择建造水库,引水和建造水库都需要费用,问给N块地灌水的最小费用。 最终状态是个森林,对于每一棵树,都有一个点建造了水库,我们人工加入一个点,把建造了水库看做是连了这个点,最终状态就成了一棵树,这题也就转化为了最小生成树。 #include <cstdio> #include <cstring> using namespace原创 2017-02-15 08:56:47 · 381 阅读 · 1 评论 -
[BZOJ]1602: [Usaco2008 Oct]牧场行走
题目大意:给你一棵树以及相邻节点之间的距离,之后询问2点之间的距离。 用dis数组存根节点到其他节点的距离,则有distance(a,b)=dis[a]+dis[b]-dis[lca(a,b)]*2,所以这题可以用树上倍增求LCA。#include <cstdio> #include <cstring> #include <vector> #include <algorithm> using na原创 2017-02-16 10:31:27 · 312 阅读 · 1 评论 -
[BZOJ]1610: [Usaco2008 Feb]Line连线游戏
水一下#include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> using namespace std; inline char tc(void) { static char fl[100000],*A=fl,*B=fl; return A==B&&(B=(A=fl)+fread(fl,1,1原创 2017-06-13 19:43:25 · 260 阅读 · 1 评论 -
[BZOJ]1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
水#include <cstdio> #include <algorithm> using namespace std; inline char tc(void) { static char fl[100000],*A=fl,*B=fl; return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++; } inline原创 2017-06-13 19:44:37 · 296 阅读 · 1 评论