2018.8.15

Pre

实在是服了这套题是我最崩溃的一套题没有之一
谈一下考试策略的感触:此套题很水啊,T1一上来就定死T1绝对是 Dp 耗了 2 个半小时死也调不出来,最后居然告诉我不是 Dp 而是贪心!我的 Dp 居然一分没有,而且贪心还是我一开始就想了的,但是被我否定了,不划算啊……这导致第二题没有足够的时间思考马上就慌了,打了个暴力然后想正解,最后半途而废又去想第一题,T3 只瞟了一眼感觉像是后缀数组难度的就没管了,结果发现 T3 是一道 Manacher 都不用直接二分哈希求回文串的题我没看题解马上就切了,真的是醉了;T2 模拟退火没有丝毫用处,其实正解很简单我认为自己再想一下性质就出来了,由于做题策略不正确,最后得到了很不理想的分数……

个人认为以后可以先打暴力,在想正解,暴力尽量不考虑骗分,先保底,再深挖……

T1

这是一道贪心的题(我的傻逼 DP 还比它长还一两倍真的是醉了)

首先可以发现遇到一家店能够卖,如果卖能够赚钱,那么一定赚更多才对,所以每次都卖最小的,这个可以用优先队列来存储,但是有一种情况光这样做是不对的,有时候将东西卖到前面的店不比后面的优,这样做就错了,说明我们这个贪心的机制没有办法反悔是吧……

那么我们就让它能够反悔吧,考虑一个物品如果反悔了,那么相当于丢掉当前的利益并获得新的利益,那么是什么样的呢?

原本直接计算的式子:now_selling - previously_bought
但是我们原本获得了:previously_sold - previously_bought
原本已经计算了now_selling - previously_bought,所以现在只需要加上now_selling - previously_sold就好了,每次优先队列会弹出最小的(贪心策略这是最优的),减掉它再加上b就好了,再把b推进去,表示如果有东西没有退掉之前买的重新再买当前的更优的话,这时候弹出来的过程就是“退货”!

T2

就是上一道题导致这一道题完美慌张……
思路很简单,对于一个区间的右端点,它对应的左端点一定为左边的某一段中的一个点,我们可以用线段树维护前缀和的区间最小值,每次在那个区间里面选取一个最优的(前缀和最小的)左端点作为一个最优的选择,A了……

T3

就是上上道题导致这一道题完美略过……
其实就是求:如果序列存在长度为 X 回文串,那么所有回文串按照长度的降序排列,求前 K 大的回文串长度的乘积是多少(加个快速幂而已,这问题不本质)。
回文不卡咱们的话可以直接上二分哈希:枚举回文串中心,二分长度,哈希预处理 O(1) 判断 O(log) 二分 O(N) 枚举直接A啦!

考试的策略十分重要要重视!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值