8.21练习——动态规划-决策单调性

蒟蒻的垂死挣扎

昨天咕咕咕了。。。什么鬼爬岳麓山?反正是累得一批。

这两天都做的一道题,真是坑死了。各种坑,spj啊,longdouble啊,yyb啊。。。。

行。小总结,今晚放假,不过大概不会断吧。

 luogu P1912 [NOI2009]诗人小G

没想到yyb的第一道题就这么牛逼,贴总结了。

决策单调性
首先明确一点,如果i>j 则i的决策点一定大于等于j的决策点
那么我们考虑一个点怎么向后转移,我们可以二分找到当前点转移比以前所有点都更加优秀的一个后缀区间,为什么是后缀区间,因为如果x从i转移而来更优,则x以后的所有点从i转移一定更优。那么我们就能够确定这个i的影响范围了,经过一次次的不断更新,就能确认一个点的最优转移点。我们考虑用单调队列来维护这个更新,记录每个点的影响区间,每次先弹掉不合法区间以及一定不优的区间,然后我们二分到那个i点影响的后缀区间,修改上一位的区间右端点,并将当前区间加入队列。
>1e18问题
可以利用double类型的自带高精度来解决,但是会掉精度,所以开long double,最后转化为longlong输出即可。

题目不难,重在理解决策单调性的优化模式。

为什么说yyb坑,因为这货 define double long double. 我被这个卡了很久。

我待会儿再找他算账。 下面是代码。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmat
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值