2019.11.6日总结

2019.11.6日总结今天由于部分原因,早上只有部分时间在刷题,下午3:00-6:00在刷题1256F - Equalizing Two Strings感悟:精妙之处,就是通过交换两个相邻的字符来使得另一个字符串变为该字符串。1256E - Yet Another Division Into Teams错误:首先读错题意了,以为是每组的最大值最小为多少感悟:可以考...
摘要由CSDN通过智能技术生成

2019.11.6日总结

今天由于部分原因,早上只有部分时间在刷题,下午3:00-6:00在刷题

1256F - Equalizing Two Strings

感悟:

  • 精妙之处,就是通过交换两个相邻的字符来使得另一个字符串变为该字符串。
1256E - Yet Another Division Into Teams

错误:

  • 首先读错题意了,以为是每组的最大值最小为多少

感悟:

  • 可以考虑到一个团队的人数只能是3,4,5。所以,首先我们从小到大排序,然后我们用 d p [ i ] dp[i] dp[i] 代表以 最后一个团队以 i i i 结尾的的最小价值,这时候我们只需枚举最后一个团队的人即可。
1250J - The Parade

很简单就能想到二分枚举每行的人数(单调性),因为一个团队的跨度不会超过2,所以我们很容易check。

1250B - The Feast and the Bus

错误

  • 因为不细心,结果超int了,计算但是算错了,导致没有开long long

  • 极致情况只有一个数的时候导致出错,没有考虑到,样例中有这么一组样例,但是没有测样例

感悟:

  • 没有想到枚举每个的容量,如果我们枚举容量的话,可以在O(k)时间内check,但是枚举容量的范围可以优化到很低,首先从小到大排序,为了让所有人都坐上车,那么下界 m a x ( a i ) max(a_i) max(ai),容量最大的时候,即使用的车次最小为两次,对于这种情况我们只需两边对称的坐一个车,然后取最大值就是上界
    • 我们求某个容量的最小车次,贪心从大到小遍历,如果能带一个小的就带一个小的即可。
1249D2 - Too Many Segments (hard version)

感悟:

  • 因为数据范围较小,所以我们可以差分求出被覆盖次数大于k的点。但是当时没想到这一点,差点要离线+树状数组处理。
  • 对于覆盖次数大于k的点,如果我们先考虑最左边的这样的点就好办了,对于最左边这样的点,我们要删除一条线段,那么必定删除覆盖到这个点的最靠右的线段。所以我们只需考虑从左到右考虑覆盖次数>k,维护一个待选线段集合,然后将覆盖到这个点的线段都加入集合中,每次取出最靠右的线段删除即可,
Gym - 102056I

感悟

  • 这道DP的题实在是太妙了。由于增加攻击力,只会被后面攻击的次数影响。增加投资,会被后面攻击的位置的和影响,所以我们可以倒着回来dp, d p [ i ] [ k ] [ s u m ] dp[i][k][sum] dp[i][k][sum]状态为倒着回来考虑第 i i i 个点,并且从该点开始,后面攻击共k次,攻击的位置的和为sum。
  • 如果第 i i i 次是攻击,则 d p [ i ] [ k ] [ s u m ] = d p [ i − 1 ] [ k − 1 ] [ s u m − i ] + a i dp[i][k][sum]=dp[i-1][k-1][sum-i]+a_i dp[i][k][sum]=dp[i1][k1][sumi]+ai
  • 如果第 i i i 次是投资攻击力,对于后面攻击位置 j j j,那么对该攻击的贡献是 c i c_i ci,则 d p [ i ] [ k ] [ s u m ] = d p [ i − 1 ] [ k ] [ s u m ] + c i ∗ k dp[i][k][sum]=dp[i-1][k][sum]+c_i*k dp[i][k][sum]=dp[i1][k][sum]+cik
  • 如果第 i i i 次是投资,对于后面攻击位置 j j j,那么对该攻击的贡献是 ( j − i ) ∗ b i (j-i)*b_i (ji)bi,则 d p [ i ] [ k ] [ s u m ] = d p [ i − 1 ] [ k ] [ s u m ] + ( s u m − k ∗ i ) ∗ b i dp[i][k][sum]=dp[i-1][k][sum]+(sum-k*i)*b_i dp[i][k][sum]=dp[i1][k][sum]+(sumki)bi
  • 需要注意的细节是状态合法性需要check或无效处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值