#O2

BZOJ1607 [Usaco2008 Dec]Patting Heads 轻拍牛头 筛法

  给出n个数,每一个数字<1000000,对于每一个数,让你求剩余的n-1个数中有多少是它的约数。   用桶计数,弄出每一个数字的出现次数。  然后用类似筛法的方法,把每一个数字的倍数都加一下即可。 #include<cstring>#include<algorithm&g...

BZOJ1597 [Usaco2008 Mar]土地购买 动态规划 斜率优化

  有N(1<=N<=50,000)块长方形的土地.每块土地的长宽满足(1<=宽<=1,000,000;1<=长<=1,000,000).每块土地的价格是它的面积,但可以同时购买多快土地.这些土地的价格是它们最大的长乘以它们最大的宽,但是土地的长宽不能交换.如果FJ买一块3x5的地和...

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!  有一个点要注意...

BZOJ1178 [Apio2009]CONVENTION会议中心 贪心 set

  一堆线段,现在取出最多条数,使其互不覆盖,并输出字典序最小的方案。   这题好坑。  首先,注意一点,最后不能有多余的空格。  第一问就是基础的线段覆盖。  关键在于第二问。  我们要准备一个函数——Get_Ans(L,R),用来求解L~R这个区间内,最多可以取多少线段。  这个可...

BZOJ1177 [Apio2009]Oil 二维前缀和 二维前缀最值

  在一个n*m的矩阵中,每一个位置一个数字。  现在让你选出3个k*k的矩阵,它们互不相交,问最大数值和为多少。  注意:n,m<=1500  一开始总想着dp,发现不大可能。  暴搜也不行。  然后突然发现,很简单,情况总数非常的少。  只有以下6种,从3个区域中各选择一个最大的。  然后就很简单了,我们只需...

BZOJ1179 [Apio2009]Atm Tarjan 强连通缩点 动态规划

  有一个有向图,每一个节点有一个权值,其中有一些结束点。  现在,你要从S出发,到达任意一个结束点,使得经过的节点的权值和最大(可以重复经过某一个节点,但是权值只记入一次)。   小码农题。  如果有强连通分量,那么之间的点是可以全部拿到的,傻子才不拿。  所以先Tarjan强连通缩个点。  然后就是一个D...

BZOJ1911 [Apio2010]特别行动队

  UPD(2018-04-01):用Latex重打了公式……把一个整数序列划分成任意连续的段,使得划分出来的每一段的价值和最大。对于某一段,价值的计算公式为 $V=ax^2+bx+c$,其中$x$ 为当前段的数值和。这题是博主大蒟蒻的第一道斜率优化D...

UOJ#206. 【APIO2016】Gap 构造 交互题

原文链接www.cnblogs.com/zhouzhendong/p/UOJ206.htmlT=1的情况直接大力从两边向中间询问即可。T=2的情况挺妙的,我没想到。  考虑首先花费n+1代价得到全局最大值和最小值,也就是a[1]和a[n]。  然后考虑将值域均分为n-1段,每一段询问一下。答案一定在相邻两段区间的左边一...

UOJ#104. 【APIO2014】Split the sequence 动态规划 斜率优化

原文链接www.cnblogs.com/zhouzhendong/p/UOJ104.html首先证明一个结论:对于一种分割方案,分割的顺序不影响最终结果。证明:对于树a[x]和a[y],如果x与y之间有分割,那么它们对答案的贡献就是a[x]*a[y],否则无贡献。于是问题转化成DP:设dp[i][j]表示把前j个数分成...

UOJ#416. 【APIO2018】铁人两项

原文链接www.cnblogs.com/zhouzhendong/p/UOJ416.html完了完了SB选手Tarjan写挂。考虑先Tarjan缩个点双建个圆方树。然后发现,确定起点和终点后,中间点的可选方案数就是  这条路径上的所有点双size之和-2。定义原点表示原图中的点,方点表示圆方树中新加...
首页上一页12345...下一页尾页