东师附中B层团队冲刺NOIP2019知识点模拟(5)题解版

传送门 password:12345ssdlh

T1

很容易看出一个物品的实际价值为E-X+C

按照这个价值贪心即可

代码

  T1

T2

高精度*低精度

太水了

代码

  T2

T3

显然,对于B[i][j]来讲,一共有五个贡献可以使它翻转,即B[i][j],B[i][j+1],B[i+1][j],B[i-1][j],B[i][j-1]

在这些里,只有B[i][j+1]在第i行的下方

即,如果填完了第i行,对于B[i][j+1]是否要翻转,完全取决于B[i][j]的颜色

所以说,我们只需O(2n)填完第一层,之后O(nm)就可以将剩下的行填完

填完后,判断最后一层是否都是白色就好了

代码

  T3

T4

原题再现

一个贪心

先按照时间排序

如果第i个数还有时间学或者比现在学的里面收益最小的大,那就学他,否则就不学

用一个堆维护

代码

  T4

T5

设dp[i][0/1]表示到达第i个跨栏的左/右需要经过的最小距离

那么,dp[i][0]=min(dp[x][0]+dis(l[x],l[i]),dp[x][1]+dis[r[x],l[i]),x表示从往上走碰到的第一个栅栏

正确性请脑补

dp[i][1]=min(dp[x][0]+dis(l[x],r[i]),dp[x][1]+dis[r[x],r[i]),x表示从往上走碰到的第一个栅栏

最后要求的相当于是dp[n+1][0](l[n+1]=r[n+1]=0)

代码

  T5

T6

设dp[i]表示1--i架缆车所需的最少段数

那么,dp[i]=min(dp[j]+1)

其中,j需要

{

1、j<i

2、i-j>=k

3、i---所有取过的j---j是一个下凸包

}

其中第三个条件用斜率判一下就好了

代码

  T6

T7

显然直接枚举TLE

考虑优化

我们发现,如果现在取过的数相同,而且最后一个取得也相同,那么它在往后取的方案数也是相同的

那么,我们就加个记忆化,记录下状态及最后一个取的数,就可以把复杂度从O(n!)优化到O(n*2n)

代码

  T7

转载于:https://www.cnblogs.com/yanghaokun/p/11370697.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值