noip2016

已经2017中旬了,我才开始改2016的noip题。。

toy:

    太水了,模拟即可。
    处理好圈的问题。

running:

    这是这一年最难的题。
    我还是来讲讲具体做法吧!
    首先我们考虑每个跑步的人如果会给观察者有贡献,则观察者一定是在跑步的人的s到lca,或lca到t上。这两者都是一条链。
    dep[]表示深度,w[]为观察这出现的时间,i为观察者的点,T为已经走了的时间,len为路径的长度
    则当路径为s到lca时,则会满足

        dep[s]=dep[i]+w[i]  


    此时可以对于每一个点,找出满足条件的观察者。
    当路径为lca到t时,满足

        dep[t]-dep[i]=len-T

    统计则可以用一个桶,lca用tarjan离线搞。

classroom:

    这是一道概率dp。
    dp[i][j][2]:
        dp[i][j][0]表示第i天,申请了j次,这一天没有申请
        dp[i][j][1]表示第i天,申请了j次,这一天申请了
    然后用期望的公式算即可。
    dp公式还是比较简单,明确期望的概念,基本可推。

组合数问题:

    ans[i][j]表示[0,i]和[0,j]中满足条件的组合数。
    题目可以转为满足条件的C[i][j]有多少个是0
    但是需要前缀和。
    注意的是:矩形前缀和有一点,统计C[i][i]时,需要注意ans[i-1][i]是没有计算过的,需要重新计算。

蚯蚓:

    这是三个队列就可以解决,只是我想不到。
    q1,q2,q3为三个队列
    q1为原序列
    q1是排好序的。
    在切除后的两条x和y中,较大的放在q2,较小的放在q3。
    则可以证明,q2,q3是单调递减的。
    则这题就可做了。

angrybirds:

    状态压缩dp
    预处理每个二次函数最多可以打掉的bird,用二进制表示。
    然后记忆化搜索即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值