2017/9/30 在线赛(A~E)

    这是国庆放假前的一场国庆欢乐组队赛,一点也不欢乐(ಥ﹏ಥ),全机房一起比,我跟南佬一队。比的时候不上心,卡在了C题,二分想到之后就想不出来了,我也是服了我自己。因此比的很臭,才300分。╰(‵□′)╯

    老师说只用把前五题写掉就好了,我也就只写了五题,其实都不难,就是比的时候不一定想得到(因为马上就要放假了,大家心里不都想着回家怎么玩么ヽ(゚Д゚)ノ,不过也许有大佬会想着怎么认真学习_(:з」∠)_,反正我是前者٩(๑❛ᴗ❛๑)۶,话说最近怎么喜欢上用颜文字了ヽ(´•ω•`)、)

A 回文数字

    这题其实看样例就可以看出一点名堂。一个回文串满足从中间断开后两边是对称的,因此我们只要考虑一边即可,也就是说改变一边,另一边直接对称过去,显然改变左边更优,因为这样得到的串肯定最小。接下来我们只要在 mid (即中间位置,假如长度是偶数则为左边的最后一个数)位置加 1 即可,然后不断进位,最后对称过来。

    除了以上,我们还要考虑两种情况:1.全是9,也就是说,进位以后长度会变长;2.不用加1,左边对称过来就比原数大,那就直接判就好了(比赛的时候我就被这里卡了,判断两个数大小的时候判错了)。

B 基因补全

    这题要转化一下思路,题目故意说是有多少种补全方案,实际就是有多少种匹配的方案,只要求出 S 串能与T串匹配的子序列有多少个就行了,这样就很明显了, O(n2) dp ,但由于答案很大,所以要敲个高精度加法,这样就 OK 啦。

C 武装士兵

    答案显然满足二分的性质,重点在于如何 check ,我们肯定要选花费最小的 k 个装备和钱最多的k个人。那第二个值怎么求呢?反正总花费是一样的,只要让政府花的钱最多就好了,我比赛的时候不知道是怎么想的,一直想着要让哪些人花钱,实际上只要能满足条件,我们可以让这些人少拿出来点钱啊,不用让他们把钱花完啊。

D 刺杀

    首先要明确一个简单的性质:假如杀死了一个带子弹的人,那么所有带子弹的人都可以杀死,留下的子弹可以用来杀没带子弹的人,那肯定是留下来的子弹越多越好啊。如何处理没有子弹的人呢?肯定是有的肉搏,有的用子弹杀,肉搏的肯定是体力消耗小的人, 因为用子弹杀体力消耗小的人就是浪费。因为我们枚举肉搏多少个没子弹的人,然后二分找到最多能肉搏杀掉几个带子弹的人(两者都是按体力消耗从小到大排序),算出剩余的子弹数即可。

E 安全路径

    这题我只能说,最重要的看清楚题目的条件,最重要的一句话就是最短路径是唯一的,这就表明是一棵树,我们把最短路径树造出来也就容易解了。对于一个点 i ,根到i的路径就是牛 i 的最短路径,i到父亲的那条边就是最短路径的最后一条边,删掉这条边后, 就只能从子树中通过非树边从根走到 i 了,对于一条非树边p=(u,v),我们设 u i子树内的点, v 为非i子树的点,那么结果就是 dis[u]+dis[v]+cost[p]dis[i] ,我们只要找到 i <script type="math/tex" id="MathJax-Element-3778">i</script>子树里最小的结果就好了。由于是在子树里找,我们可以由儿子网上更新,遇到一条非树边就往上更新答案。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值