-----树状数组
LIN452
(*╹▽╹*)
展开
-
USACO2011Open Silver Running Laps题解
//请忽略我把牛看作羊.... 由题意,我们可以得到 t*vi-t*vj=kC.那么i,j相遇的次数就是最大的k(整数).为了得到最大的k就要使t最大,而tmax=L*C/vmax. 那么 把式子整理得到: k=L*(vi-vj)/vmax.(向下取整) 对于第i只,它和速度比它小的每一只羊相遇的次数都能确定, 常见的思路就是运用前缀和把式子累加,但由于k是每两只羊之原创 2016-06-28 17:07:58 · 704 阅读 · 0 评论 -
BZOJ1537/POI2005 The Bus
假设dp[i][j]表示在(i,j)位置能够接到的最多乘客数量,我们会发现很多的状态是无效的,因此只要记录到达站点的状态.由于只能向北或向东走,只可能通过西南的站点到达(i,j),也就是所有满足a<=i&&b<=j的站点(a,b).这样就有两维状态,可以通过排序+区间求值的方法降维. 我们可以按照横坐标从小到大排序,维护纵坐标的区间最值,由于每次求的是前缀最值并且不断增大,可以用树状数组求解.#i原创 2016-10-27 07:18:18 · 470 阅读 · 0 评论