
USACO
commonc
这个作者很懒,什么都没留下…
展开
-
BZOJ3387: [Usaco2004 Dec]Fence Obstacle Course栅栏行动
题目大意:给定一个初始点和n个与x轴平行的y轴坐标互不相同的栅栏,问水平距离至少移动多少能使得从该初始点回到原点且不从中间跨越任何一条栅栏首先可以确定,最终行进的路线一定可以等价于在几个栅栏的边界和起点终点间连线产生的路径,也就是说只有栅栏的边界是有用的,所以我们可以在这些点上建边跑最短路但是这样的话边数是N^2级别的,所以我们要优化一下建图考虑什么样的边是有效的,对于一个栅栏原创 2016-08-22 08:30:13 · 822 阅读 · 0 评论 -
BZOJ4411: [Usaco2016 Feb]Load balancing
题目大意:给定n个点,请你确定一条横线和一条竖线,使得平面划分成的四个区域内点最大值最小首先枚举横着的那条线,然后考虑在这条线上方随着竖线的平移,上面两个区域的max函数是一个单峰函数,下面同理,所以将两个函数取max之后还是一个单峰函数,那么我们就可以用二分或者三分来求这个峰,这个答案就是当横线在这里的最小值#include#include#include#incl原创 2016-09-07 11:15:34 · 891 阅读 · 0 评论 -
BZOJ3939: [Usaco2015 Feb]Cow Hopscotch
题目大意:给定一个棋盘,从左上角走到左下角,每次必须严格向右下走一步并且两个各自的标号不能相同,问一共有多少种走法设F[i][j]表示走到(i,j)这个格子的方案数,那么转移方程就是严格左上的所有格子的F值和减去和他相同颜色的F值和,前者可以直接维护前缀和得出,后者可以对每种颜色建一个动态开点的线段树来维护,时间复杂度O(NMlognm),空间复杂度O(NMlognm)原创 2016-08-11 16:18:16 · 906 阅读 · 0 评论 -
BZOJ1590: [Usaco2008 Dec]Secret Message 秘密信息
题目大意:给n条01信息以及m条01密码,求对于每条密码,有多少条信息与他的最长公共前缀=min(密码长度,该条信息长度)先对于信息建出一颗字典树,终止节点权值+1,然后每条密码的答案=路径上所有点的权值和+终止节点子树(不包括终止节点)权值总和所以我们可以建出Trie树之后pushup一下,就能得到每个点子树的权值总和,这样就可以O(密码长度)回答每个询问了#incl原创 2016-09-01 15:31:14 · 651 阅读 · 0 评论 -
BZOJ3364: [Usaco2004 Feb]Distance Queries 距离咨询
题目大意:给一棵树,求两点间的距离方向什么的根本没用,挺无聊的一道题随便以一个点为根,x,y之间的距离=d[x]+d[y]-2*d[LCA(x,y)]只需要求LCA就可以啦,树倍增随便搞#include#include#include#include#define N 100010using namespace std;int fa[N][21];in原创 2016-09-01 15:01:43 · 960 阅读 · 0 评论 -
BZOJ4391: [Usaco2015 dec]High Card Low Card
题目大意:给定对方的出牌序列以及你的手牌,双方手牌一共是一个1到2n的全排列,一开始是点大胜出,你可以在任意时刻改一次规则变成点小胜出,求最多能赢多少次用贪心的思想,肯定一开始尽量用点大的,改规则之后用点小的,每次用卡的时候都用那个恰好能赢的卡是最优的,如果没有就用最小的,然后枚举一下改规则的时间,这样可以O(N^2)算出答案我们考虑先不枚举改规则的中间点,用F[i]表示前i个回合原创 2016-08-22 11:01:26 · 957 阅读 · 0 评论 -
BZOJ4580: [Usaco2016 Open]248
题目大意:给定一个1*n的地图,在里面玩2048,每次可以合并相邻两个,问最大能合出多少挺神的一道题F[i][j]表示以i为结尾合出j的话开头的位置在哪,如果不能合出就等于0,转移的时候先让末尾合出j-1,然后在那个开头的地方前一个为结尾再合一个j-1就好了因为输入的数不超过40,所以答案不会超过57时间复杂度上限是O(NlogN),空间复杂度O(57N)#in原创 2016-08-22 11:40:22 · 587 阅读 · 0 评论 -
BZOJ1635: [Usaco2007 Jan]Tallest Cow 最高的牛
题目大意:有n头牛,给定一些限制条件,每个限制条件是a的身高小于等于b的身高且a到b之间的牛身高都小于a的身高,求每头牛最高是多少首先因为题目数据保证合法了,所以a≤b这个条件没什么用,其次最高的牛的编号也没有用,因为这个我们也能求出来然后假设我们把每个限制条件想象成一对括号,那么就是说括号里面的身高都要比括号外面的身高矮一截....然后当一对括号层层嵌套时,这些牛的身高就是越往里越矮原创 2016-08-22 10:30:23 · 676 阅读 · 0 评论 -
BZOJ3312: [Usaco2013 Nov]No Change
题目大意:给定一个账单序列,每张消费卡可以支付连续的一段账单,问最少用价值多少的消费卡能支付所有账单一眼状压DP,f[i]表示i状态下最远能付到哪张账单,然后预处理一下每张消费卡从每张账单开始最远能付到哪,转移一下就行了时间复杂度O(2^K*N)#include#include#include#include#define N 100010using namespac原创 2016-08-22 09:52:01 · 687 阅读 · 0 评论 -
BZOJ1576: [Usaco2009 Jan]安全路经Travel
题目大意:求从1到每个点不经过最短路的最后一条边的所有方案中的最短路首先构出最短路径树(有所有在最短路上的边构成的树)这样所有的答案路径都是从起点开始沿着树上的边走到一个点然后走一个不是树上的边,然后再在树上走这样对于一条非树边(u,v)他能更新的答案就是对于所有的在(u,v)树上路径上的点(不包括LCA)x,ans[x]=min(ans[x],dis[u]+dis[v]+w-原创 2016-09-07 11:21:33 · 844 阅读 · 0 评论