当前位置: 首页 > news >正文

打卡信奥刷题(2540)用C++实现信奥 P2070 [USACO13JAN] 刷墙 Painting the Fence B

P2070 [USACO13JAN] 刷墙 Painting the Fence B

题目描述

Farmer John 已经设计了一种方法来装饰谷仓旁边的长栅栏(把栅栏认为是一根一维的线)。他把一只画刷绑在他最喜爱的奶牛 Bessie 身上,之后就去喝一杯冰水,而 Bessie 隔着栅栏来回走,当她走过某个地方,这里的一段栅栏就被刷上了涂料。

Bessie 从栅栏上的位置000开始,并且遵循着一个NNN次移动的次序(1≤N≤1051\le N\le10^51N105)。例如10 L表示 Bessie 向左移动了101010个单位长度,15 R表示 Bessie 向右移动了151515个单位长度。现给出 Bessie 所有移动的列表,Farmer John 想要知道哪些区域的栅栏至少涂了两层涂料(只涂一层涂料的区域可能在大雨中被洗掉)。Bessie 在她的行走中最远到达距起始点10910^9109个单位长度。

输入格式

111行:一个整型数NNN

2∼N+12 \sim N+12N+1行:每行描述了 Bessie 的NNN次移动中的一次,例如15 L

输出格式

111行:被至少涂了两层涂料的区域总数。

输入输出样例 #1

输入 #1

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

输出 #1

6

说明/提示

【样例解释】

Bessie 从位置000开始,向右移动222个单位长度,向左移动666个单位长度,向右移动111个单位长度,向左移动888个单位长度,最后向右移动333个单位长度。

666个单位区域至少被涂了两层涂料,是[−11,−8],[−4,−3],[0,2][-11,-8],[-4,-3],[0,2][11,8],[4,3],[0,2]这些区域。

C++实现

#include<bits/stdc++.h>usingnamespacestd;template<typenameT>inlinevoidread(T&FF){T RR=1;FF=0;charCH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;}//快读template<typenameT>voidwrite(T x){if(x<0)putchar('-'),x*=-1;if(x>9)write(x/10);putchar(x%10+48);}//快写constintMAXN=1e5+10;structnode{intl,r;//每次染色的左端点和右端点booloperator<(constnode&b)const{returnl<b.l;//按左端点从小到大排序}}a[MAXN];intposition,ans,lft,rgt,n;intmain(){read(n);for(inti=1;i<=n;i++){intx;chary;read(x);cin>>y;a[i].l=position;if(y=='L')position-=x;//Bessie往左走elseposition+=x;//Bessie往右走a[i].r=position;if(a[i].l>a[i].r)swap(a[i].l,a[i].r);}sort(a+1,a+n+1);//排序lft=a[1].l;rgt=a[1].r;//给lft和rgt赋上初值for(inti=2;i<=n;i++)if(a[i].r>lft){//如果跟可能被覆盖到的区间有交a[i].l=max(a[i].l,lft);//这里是使得之后的代码可以少写一点,因为显然,a[i].l<lft,a[i].l~lft这1段也没有用了if(a[i].r>rgt){//比之前的右端点大ans+=rgt-a[i].l;//从rgt到a[i].llft=rgt;//之前的右端点显然就是左端点,显然,新的可能被覆盖到的区间就是之前的rgt~a[i].rrgt=a[i].r;//更新右端点}else{//比之前的右端点小ans+=a[i].r-a[i].l;//从a[i].r到a[i].llft=a[i].r;//更新左端点}}write(ans);//输出return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/92466/

相关文章:

  • 3、渗透测试侦察阶段技术指南
  • 2025六安新能源汽车升级改装企业TOP5权威推荐:实力强企 - myqiye
  • 7、Docker 镜像构建、注册与存储全解析
  • 当本科生面对论文“三座大山”:选题迷茫、文献堆积、格式焦虑——书匠策AI如何用智能科研工具悄然化解
  • 2025年诚信的联想服务器渠道机构排名:看哪家口碑好? - 工业品牌热点
  • 集合已修改;可能无法执行枚举操作
  • 2025真空热压烧结炉生产厂家TOP5权威推荐:高温真空烧结 - mypinpai
  • 9、现代持续集成工具:Jenkins与Drone CI深度解析
  • 3、Linux系统信息查找、文档编写与用户支持全解析
  • 4、网络渗透测试工具使用指南
  • 10、持续集成与基础设施即代码实践指南
  • 毕业论文的“智能进化论“:书匠策AI如何重构高阶学术研究的底层逻辑?
  • 2025年12月高压细水雾,高压细水雾灭火系统,管廊高压细水雾公司推荐:消防设备行业测评与选择指南 - 品牌鉴赏师
  • 6、Linux文件系统:全面指南
  • 11、Terraform与服务器配置管理全解析
  • 2025年质量好的水田打浆机厂家最新实力排行 - 品牌宣传支持者
  • 2025年西双版纳靠谱的装修公司推荐服务商排行榜,专业诚信装 - 工业推荐榜
  • 当毕业论文不再是“孤勇者”的苦旅:一个本科生如何在AI科研助手的温柔陪伴下完成学术初体验?
  • photoshop CS6 绿色精简中文版免费领,免安装,老电脑也能飞! - 指南
  • 如何选择FAISS的索引类型
  • Nordic经过全球认证的、多传感器、电池供电的蜂窝物联网原型平台:Thingy91X套件
  • 3、DevOps与云服务:从组织架构到AWS实践
  • 代码更新--高精度空间(Xenium、CosMx)细胞外基因表达的数据分析
  • 知识分享--Mapping the inflammatory origins of lung cancer
  • 5、Google Cloud Platform:功能特性与使用指南
  • 10、SSH 认证机制全解析:从密码到公钥的安全之旅
  • 11、SSH 密钥使用与管理全攻略
  • 12、Ansible 实战指南:从入门到应用
  • 10、GNU和UNIX命令使用指南
  • C++核心特性精讲:从C语言痛点出发,掌握现代C++编程精髓(超详细)