#Usaco2017

BZOJ4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III

  在n*n的区域里,每一个1*1的块都是一个格子。  有k头牛在里面。  有r个篱笆把格子分开。  如果两头牛可以不经过篱笆走到一起(过程中不能出界),那么他们就是不互相远离的,反之就是互相远离的。  问有多少对牛是互相远离的。注意(x,y)和(y,x)算作同样的。  对于同一区域的牛,我们可以相同对待。  所以我们...

BZOJ4994 [Usaco2017 Feb]Why Did the Cow Cross the Road III 树状数组

  给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次记为bi,求满足ai<aj<bi<bj的对数。  n<=100000(这个数据范围是我凑出来的,但是我没试过更小的范围,BZOJ上没写数据范围(截止2017-08-24))   水题,开一个树状数组在线解决。...

BZOJ4989 [Usaco2017 Feb]Why Did the Cow Cross the Road 树状数组 逆序对

  一条马路的两边分别对应的序列A、B,长度为n,两序列为1到n的全排列。当Ai=Bj时,两边之间会连一条边。你可以选择序列A或序列B进行旋转(只能使队尾或队头位置上的数字变成队头或队尾上的数字)任意K(0<=K<n)步,如123,可以变成231或312。求旋转后,最少的边的交叉数。   两个都可...

BZOJ4990 [Usaco2017 Feb]Why Did the Cow Cross the Road II 动态规划 树状数组

  有上下两行长度为n的数字序列A和序列B,都是1到n的排列,若abs(A[i]-B[j])<=4,则A[i]和B[j]间可以连一条边。现求在边与边不相交的情况下的最大连边数量。  我们用dp[i][j]表示枚举到A序列的第i个位置,与B序列的第j个位置匹配,所得到的最大效益,这样显然是要超时的,但是不妨去思考一...

BZOJ4993 [Usaco2017 Feb]Why Did the Cow Cross the Road II 动态规划 树状数组

  有上下两行长度为n的数字序列A和序列B,都是1到n的排列,若abs(A[i]-B[j])<=4,则A[i]和B[j]间可以连一条边。现求在边与边不相交的情况下的最大连边数量。   我们用dp[i][j]表示枚举到A序列的第i个位置,与B序列的第j个位置匹配,所得到的最大效益,这样显然是要超时的,但是...

BZOJ4992 [Usaco2017 Feb]Why Did the Cow Cross the Road 最短路 SPFA

  在一幅n*n的地图上,Amber从左上角走到右下角,每走一步需要花费时间t,每走完3步时,还要加上到达的那个格子的值。这里的3步不包括起动的那个格子。如果刚好3步到达右下角,则右下角格子的值也要算进花费中,否则不用计算进去。求最小花费。n<=100  最短路写一写就可以了,居然不卡spfa!  有一个点要注意...