做题记录


并查集: poj1988 模拟栈合并和统计到栈底的深度   

                  cdoj 1338 将矩阵中的数保持每行每列大小关系缩小。

主席树: poj2104 区间第k小,看卿学姐视频写(chao)了一发,不过还不会主席树

  dp:          cdoj1345单调队列优化(用deque模拟单调队列),看着别人博客写了一发。

                  骨牌铺法:hdu1992         

 
  • 第i行不放置,则前一行必须有放置的骨牌。x对应二进制位为0,y对应二进制位为1。
  • 第i行竖放骨牌,则前一行必须为空。x对应二进制位为1,y对应二进制位为0。
  • 第i行横向骨牌,则前一行必须两个位置均有骨牌,否则会产生空位。x对应二进制位为1,y对应二进制位为1
              hdu 5745 bitset+dp (看着题解练习了一下bitset)

              hdu  5735 dp 将dp式子拆分,一个不错的姿势。仅考虑and操作. 不妨令dp(s)=f(s)−wsdp(s)=f(s)-w_s 我们大概要求的就是dp(i)=maxj is ancestor of i{dp(j)+wi and wj}. 然后, 显然dp(j)+wi and wjdp(j)+w_i\text{ and }w_j个式子可以拆成dp(j)dp(j)+[wiw_i后8位] and [wjw_j后8位] + ([wiw_i前8位] and [wjw_j前8位]) << 8.考虑这样一个二维数组ds(x,y)ds(x,y), 表示对于某个wiw_i的后8位为yy, 对于某个wjw_j的前8位为xx时,dp(j)dp(j) + [wiw_i后8位] and [wjw_j后8位]的最值.如果知道了上述数组, 那么对于某个ii, 计算dp(i)的值就十分方便, 不妨令wi=(a<<8)∣bw_i=(a << 8) | b, 即aabb分别是wiw_i前8位和后8位, 那么只需要枚举wj的前8位xx, 用ds(x,b)+((a and x)<<8)ds(x,b)+((a \text{ and } x) << 8)更新dp(i)dp(i). 把新的dpdp值更新到ds(x,y)ds(x,y)也是类似的.链接:https://async.icpc-camp.org/d/493-2016-multi-university-training-contest-2

                 codeforces 425C C. Sereja and Two Sequences    dp + 二分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值