1987. 粉刷栅栏

农夫约翰发明了一种绝妙的方法来粉刷牛棚旁边的长栅栏(把栅栏想象成一维的数轴)。

他只需要在他最喜欢的奶牛贝茜身上挂一个刷子,然后在一旁悠闲的喝凉水就行了。

贝茜沿着栅栏来回走动时,会将她走过的栅栏部分涂上油漆。

贝茜从栅栏上的位置 0 处开始,共进行 N 次移动。

移动可能形如 10 L,表示向左移动 10 单位距离,也可能形如 15 R,表示向右移动 15 单位距离。

给定贝茜的 N 次移动列表,约翰想知道至少被涂抹了 2 层油漆的区域的总长度。

整个行进过程中,贝茜距离出发地的距离不会超过 109。

输入格式

第一行包含一个整数 N。

接下来 N 行,每一行包含一个行动指令,诸如 10 L 或 15 R。

输出格式

输出至少被涂抹了 2 层油漆的区域的总长度。

数据范围

1≤N≤105
整个行进过程中,贝茜距离出发地的距离不会超过 109。
每次指令移动距离的取值范围是 [1,2×109]。

输入样例:

6
2 R
6 L
1 R
8 L
1 R
2 R

输出样例:

6

样例解释

共有 6 单位长度的区域至少被涂抹 2 层油漆。

这些区域为 (−11,−8),(−4,−3),(0,2)。

代码:

//区间差分不是点 可看成左开右闭区间
#include <bits/stdc++.h>
using namespace std;
int main()
{map<int, int> mp;int n;cin >> n;int cur = 0;for (int i = 0; i < n; i++){char ch[2];int temp;cin >> temp >> ch;if (ch[0] == 'R'){mp[cur]++;mp[cur + temp]--;cur += temp;}else{mp[cur - temp]++;mp[cur]--;cur -= temp;}}int sum = 0, l = 0, ans = 0;for (auto [key, value] : mp){if (sum <= 1 && sum + value > 1)l = key;else if (sum > 1 && sum + value <= 1)ans += key - l;sum += value;}cout << ans << endl;return 0;
}

1987. 粉刷栅栏相关推荐

  1. AcWing 1987. 粉刷栅栏(离散化+差分)

    题目链接 https://www.acwing.com/problem/content/1989/ 思路 通过map进行差分处理,每次处理到前缀和从大于1变到小于等于1的时候就进行一次区间长度统计,每 ...

  2. 寒假每日一题2022【week2 未完结】

    目录 1987. 粉刷栅栏[扫描线] 1978. 奶牛过马路[前缀最值] 1969. 品种邻近[哈希表] 1987. 粉刷栅栏[扫描线] 扫描线,注意将一个区间的左端点表示该区间.这样可以避免处理各种 ...

  3. AcWing2022寒假每日一题(1 月 2 日 ~ 1 月 15 日)

    目录 1/2 AcWing 2058. 笨拙的手指 1/3 (前缀和)AcWing 2041. 干草堆 1/4 (dfs暴力枚举)AcWing 2060. 奶牛选美 1/5 (bfs)AcWing 2 ...

  4. [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列

    题目 描述 题目大意 一个序列,每次可以使一段区间内的所有数加一(模四). 问最少的操作次数. 思考历程 一看这题目,诶,这不就是那道叫密码锁的题目吗? 然后随便打一打,样例过了,就再也没有思考这一题 ...

  5. JZOJ 1220. Pla

    Description 在某条街上有着这么一行比较奇怪的建筑物:每栋建筑物都是一个矩形,而且他们是一 个挨着一个的.每栋建筑物都有它的宽度和高度. Task:现在从左到右给出N 栋建筑物的信息.其中每 ...

  6. 题目汇总(ACWing)

    枚举: 1.拍照 解题思路:枚举a1,求出每个ai,然后检查这个答案是否合法. 2.牛为什么过马路 解题思路:对于一对相同的字母,枚举中间是否存在没有记录的单个字符. 3.牛的基因组学 解题思路:暴力 ...

  7. 2020.2.13 C组模拟赛题解

    目录: T1:晾衣绳 T2:罗密欧与朱丽叶的约会 T3:粉刷栅栏 T4:马蹄印 T1:晾衣绳 题目描述 奶牛们用N(1<=N<=1000)根绳子架起了晾衣绳,以便晒它们刚洗完的衣服.用它们 ...

  8. 献给1986,1987年出生的人

    献给1986,1987年出生的人 花开无声,岁月无痕. 我们这一辈,也就是93年开始上小学,99年上初中,02年上高中,05年上大学的,08.09年毕业的,终于要和年少轻狂说拜拜了,有些不舍,有些迷茫 ...

  9. ​LeetCode刷题实战276:栅栏涂色

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

最新文章

  1. 企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)(原创)
  2. 【Python3_进阶系列_006】Python3-单例模式
  3. 【Python】大数据存储技巧,快出csv文件10000倍!
  4. 字符设备驱动高级篇6——内核提供的读写寄存器接口
  5. java数据库编程之JDBC
  6. class meta
  7. asp.net后台正则表达式验证手机号码邮箱
  8. 做生意做不过中国,于是英国发动了鸦片战争
  9. asp.net生成店铺推广二维码,二维码中间加logo(源码)
  10. scipy库中的stats模块
  11. WoShop分销积分拼团裂变APP小程序商城全开源无加密商城源码
  12. 用VScode写C/C++,从下载安装到配置使用
  13. 计算机怎样设置光盘启动项,怎么设置开机启动项-设置光盘启动教程
  14. 数独算法 java_Java 编写数独计算器
  15. Linux网络知识--DHCP服务(理论部分)
  16. android模拟器命令大全,玩转安卓模拟器命令行
  17. HTML第6章上机练习3(制作京东快报页面)
  18. ARM惹众怒,美国芯片行业也开始抛弃它,跟随中国芯片支持新架构
  19. 辞职两年:自由的代价
  20. Flink系列之Flink流式计算引擎基础理论

热门文章

  1. Java 反射 ---- 方法反射的基本操作
  2. Linux下关闭ASLR(地址空间随机化)的方法
  3. 用vue框架制做购物车
  4. WinCC7.5 SP1调整画面尺寸以适应显示分辨率的方法
  5. 【趣味项目之Excel报表汇总】Python+pandas+xlwings实现批量提取表格信息汇总到表格并发送到邮箱
  6. MAC Book触控板使用技巧
  7. vue给同一元素绑定单击click和双击事件dblclick,双击事件dblclick无效不触发解决办法
  8. 【整理】ubuntu ln命令简单学习
  9. 阿里云备案服务号怎么获取
  10. java计算机毕业设计中药实验管理系统源码+数据库+系统+lw文档