2019.10.19日常总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ZHUYINGYE_123456/article/details/102642711

洛谷 P 1638 P1638

【题目链接】:http://www.luogu.org/problem/P1638
【题目描述】:
在这里插入图片描述
【数据范围】:
在这里插入图片描述
【思路】: 经典的two-pointer双指针法(即尺取法
t w o p o i n t e r two-pointer双指针法(尺取法)祥讲
双指针就是有两个指针 a a b b 。这个方法目的一般是为了统计这样 的二元组的一些信息(比如数量、极值等)
这样的二元组可能描述了一些其他东西,比如说一个闭合区间
如果分析题目性质可以发现,一个指针向一个方向动,另一个指 针也只会单向移动,也就是所谓的“单调性”,那就可以用这个方 法,移动指针的时间复杂度也是线性的

for(int l=r=1;l<=n;l++){
    while (r<=n&&check(l,r)) r++;//check(l,r)表示l,r满足条件
    r--;//此时,r-1是满足条件的,但r不满足条件
    处理一个合法区间[l,r]
}

回归本题,从小到大枚举这个区间的右端点 b b ,能够满足条件的最靠右的左端点 a a 单调不降(当然也可以枚举 a a ,求 b b
记录一个数组表示当前区间中每幅画有多少个,再记录一个变量 表示能看到多少幅画。那么区间端点的移动只会带来一个元素的 加入和删除,这两个信息可以很好维护
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ZHUYINGYE_123456/article/details/102642711
今日推荐