洛谷 P2205 解题报告
P2205 画栅栏Painting the Fence
题目描述
\(Farmer\) \(John\) 想出了一个给牛棚旁的长围墙涂色的好方法。(为了简单起见,我们把围墙看做一维的数轴,每一个单位长度代表一块栅栏)他只是简单的把刷子蘸满颜料,系在他最喜欢的奶牛\(Bessie\)上,然后让\(Bessie\)来回地经过围墙,自己则在一旁喝一杯冰镇的凉水。(……-_-|||) \(Bessie\) 经过的所有围墙都会被涂上一层颜料。\(Bessie\)从围墙上的位置\(0\)出发,并将会进行\(N\)次移动\((1 <= N <= 100,000\))。比如说,“\(10 L\)”的意思就是\(Bessie\)向左移动了\(10\)个单位。再比如说“\(15 R\)”的意思就是\(Bessie\)向右移动了\(15\)个单位。给出一系列\(Bessie\)移动的清单。\(FJ\) 想知道有多少块栅栏涂上了至少\(K\)层涂料。注意:\(Bessie\)最多会移动到离原点\(1,000,000,000\)单位远的地方。
输入输出格式
输入格式:
第1行: 两个整数: \(N K\)
第\(2...N+1\) 行: 每一行都描述了\(Bessie\)的一次移动。 (比如说 “\(15 L\)")
输出格式:
一个整数:被至少涂上\(K\)层涂料的栅栏数
不知道为什么,一开始死活想不到咋离散。。
其实只需要取出现过的区间就行了。
多次修改区间一次询问,差分会比较快,\(O(1)\)修改,\(O(n)\)询问了。
code:
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=200010;
int n,k;
int a[N];
char c;
struct node
{
int d,loc;
friend bool operator <(node n1,node n2)
{
return n1.loc<n2.loc;
}
}t[N],f[N];
int main()
{
scanf("%d%d",&n,&k);
int to,now=0,cnt=0;
for(int i=1;i<=n;i++)
{
scanf("%d %c",&to,&c);
if(c=='R')
{
now+=to,a[i]=now;
t[++cnt].loc=a[i-1];
t[cnt].d=1;
t[++cnt].loc=a[i];
t[cnt].d=-1;
}
else
{
now-=to,a[i]=now;
t[++cnt].loc=a[i];
t[cnt].d=1;
t[++cnt].loc=a[i-1];
t[cnt].d=-1;
}
}
sort(t+1,t+1+cnt);
int cnt0=0;
for(int i=1;i<=cnt;i++)
{
if(f[cnt0].loc==t[i].loc)
f[cnt0].d+=t[i].d;
else
f[++cnt0].d=f[cnt0-1].d+t[i].d,f[cnt0].loc=t[i].loc;
}
int ans=0;
for(int i=1;i<cnt0;i++)
if(f[i].d>=k)
ans+=f[i+1].loc-f[i].loc;
printf("%d\n",ans);
return 0;
}
2018.5.4
洛谷 P2205 解题报告的更多相关文章
- 洛谷 P1462 解题报告
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...
- 洛谷 P1879 解题报告
P1879 [USACO06NOV]玉米田Corn Fields 题目描述 农场主\(John\)新买了一块长方形的新牧场,这块牧场被划分成\(M\)行\(N\)列\((1 ≤ M ≤ 12; 1 ≤ ...
- 洛谷 P1069 解题报告
P1069 细胞分裂 题目描述 \(Hanks\)博士是\(BT\) (\(Bio-Tech\),生物技术) 领域的知名专家.现在,他正在为一个细胞实验做准备工作:培养细胞样本. \(Hanks\) ...
- 洛谷 P2491 解题报告
P2491 消防 题目描述 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这个国家的人对火焰有超越宇宙的热情,所以这个 ...
- 洛谷 P2587 解题报告
P2587 [ZJOI2008]泡泡堂 题目描述 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏 ...
- 洛谷 P1054 解题报告
P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的 ...
- 洛谷 P1053 解题报告
P1053 篝火晚会 题目描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了"小教官".在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有 ...
- 洛谷 P1057 解题报告
P1057 传球游戏 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹 ...
- 洛谷 P1430 解题报告
P1430 序列取数 题目描述 给定一个长为\(n\)的整数序列\((n<=1000)\),由\(A\)和\(B\)轮流取数(\(A\)先取).每个人可从序列的左端或右端取若干个数(至少一个), ...
随机推荐
- How to Enable Trace or Debug for APIs executed as SQL Script Outside of the Applications ?
In this Document Goal Solution 1: How do you enable trace for an API when executed from a SQL ...
- 开源数字媒体资产管理系统:Razuna
Razuna以一个使用Java语言编写的开源的数字媒体资产管理(Digital Asset Management)系统.功能很强大,可以用于管理各种格式的数字媒体资源. Razuna在本机的安装配置还 ...
- Cocos2D v2.0至v3.x简洁转换指南(一)
在该指南开头,我们假设你应经很熟悉Cocos2d 2.x版本. 我们将指出新版本重要的改变,并且给出一些你已经从Cocos2d 2.x版本中熟知的实现. CCNodes,CCScenes和CCLaye ...
- 神奇的layout_weight属性
1.概述 在线性布局有时候为了控制一下屏幕的适配,可以使用layout_weight这个属性来设置权重,要注意一点,这个属性只有在Linearlayout中才有效,这个属性往往会随着android:l ...
- 匿名函数,结合闭包的写法,js对象的案例
/* * name :Zuoquan Tu * mail :tuzq@XXX.com.cn * date :2015/04/1 * version :1.1 * description:modifie ...
- 队列顺序存储 - 设计与实现 - API函数
队列是一种特殊的线性表 队列仅在线性表的两端进行操作 队头(Front):取出数据元素的一端 队尾(Rear):插入数据元素的一端 队列不允许在中间部位进行操作! queue常用操作 销毁队列 清空队 ...
- 如何使用VS2013本地C++单元测试框架
在VS2013中,可以使用VS自带的C++单元测试框架. 在使用该框架前,需要先安装Unit Test Generator(可以通过菜单“工具->扩展和更新”搜索安装). 下边,就阐述一下利用该 ...
- SurfaceView浅析
什么是SurfaceView呢? 为什么是SurfaceView呢?Surface的意思是表层,表面的意思,那么SurfaceView就是指一个在表层的View对象.为什么 说是在表层呢,这是因为它有 ...
- Linux进程管理 - ps,top,pstree,signal,kill,killall举例演示
ps:将某个时间点的进程运行情况撷取下来 [root@www ~]# ps aux <==观察系统所有的进程数据 [root@www ~]# ps -lA <==也是能够观察所有系统的数据 ...
- unity xml序列化与反序列化 多平台
换平台确实是一个头疼的问题,本来在pc用.net的json处理数据很是顺手的,但是发布web版本后,发现他不支持.后面找了好几个开源json都不能很好的支持web,或者不能支持List等.于是我就想着 ...