摘要:
有趣的题目 空间1mb,所以开数组的算法就不要想了(我一开始没看到……) 仔细读题,然后发现这里他限定众数为出现超过n div 2次 也就是说,这个数可以对应每一个不相同的数消掉,最终还剩下这个数 也就是说,我们遍历,遇到不相同的就两两抵消,最终剩下的一定是ans 得解, 1 var n,i,s,a
阅读全文
posted @ 2014-05-02 23:59
acphile
阅读(131)
推荐(0)
编辑
摘要:
先从简单一点的bzoj2431入手; n个数1~n已经限定了,所以 对于1~i-1,新加入i,最多可以增加i-1个逆序对,最少增加0个逆序对 f[i,j]表示1~i形成的序列逆序对为j的方案数 比较容易得出f[i,j]=Σf[i-1,k]; 用前缀和优化即可 1 const mo=10000; 2
阅读全文
posted @ 2014-05-02 23:56
acphile
阅读(172)
推荐(0)
编辑
摘要:
线段树的裸题; 但是操作很奇怪,开方是不能lazy tag的 看来只能暴力修改了 但注意,开放开到1的时候就不用开,立一个flag就可以了 这可以大大的优化; 其实我是来复习线段树的 1 var tree:array[0..400010] of int64; 2 lazy:array[0..4000
阅读全文
posted @ 2014-05-02 23:43
acphile
阅读(183)
推荐(0)
编辑
摘要:
练了这么久,应该就成了裸的最大流了吧 不1Y对不起自己 1 const inf=1000007; 2 type node=record 3 next,point,flow:longint; 4 end; 5 6 var edge:array[0..200010] of node; 7 a:array
阅读全文
posted @ 2014-05-02 20:30
acphile
阅读(159)
推荐(0)
编辑
摘要:
对于这种题很容易看出是费用流吧…… 但这道题不容易建模; 首先是怎么表示目标状态和其实状态,看起来有黑有白很复杂 但实际上,不难发现,白色格子没什么用,起决定作用的是黑格子 也就是我们可以把问题简化:我们怎么把开始的黑格子移到目标位置 但这个移动不是一般的移动; 在一条路径中,不难发现,起始两点是只
阅读全文
posted @ 2014-05-02 20:29
acphile
阅读(291)
推荐(0)
编辑