Alice and Hairdresser
Alice's hair is growing by leaps and bounds. Maybe the cause of it is the excess of vitamins, or maybe it is some black magic...
To prevent this, Alice decided to go to the hairdresser. She wants for her hair length to be at most ll centimeters after haircut, where ll is her favorite number. Suppose, that the Alice's head is a straight line on which nn hairlines grow. Let's number them from 11 to nn. With one swing of the scissors the hairdresser can shorten all hairlines on any segment to the length ll, given that all hairlines on that segment had length strictly greater than ll. The hairdresser wants to complete his job as fast as possible, so he will make the least possible number of swings of scissors, since each swing of scissors takes one second.
Alice hasn't decided yet when she would go to the hairdresser, so she asked you to calculate how much time the haircut would take depending on the time she would go to the hairdresser. In particular, you need to process queries of two types:
- 00 — Alice asks how much time the haircut would take if she would go to the hairdresser now.
- 11 pp dd — pp-th hairline grows by dd centimeters.
Note, that in the request 00 Alice is interested in hypothetical scenario of taking a haircut now, so no hairlines change their length.
The first line contains three integers nn, mm and ll (1≤n,m≤1000001≤n,m≤100000, 1≤l≤1091≤l≤109) — the number of hairlines, the number of requests and the favorite number of Alice.
The second line contains nn integers aiai (1≤ai≤1091≤ai≤109) — the initial lengths of all hairlines of Alice.
Each of the following mm lines contains a request in the format described in the statement.
The request description starts with an integer titi. If ti=0ti=0, then you need to find the time the haircut would take. Otherwise, ti=1ti=1 and in this moment one hairline grows. The rest of the line than contains two more integers: pipi and didi (1≤pi≤n1≤pi≤n, 1≤di≤1091≤di≤109) — the number of the hairline and the length it grows by.
For each query of type 00 print the time the haircut would take.
4 7 3
1 2 3 4
0
1 2 3
0
1 1 3
0
1 3 1
0
1
2
2
1
Consider the first example:
- Initially lengths of hairlines are equal to 1,2,3,41,2,3,4 and only 44-th hairline is longer l=3l=3, and hairdresser can cut it in 11 second.
- Then Alice's second hairline grows, the lengths of hairlines are now equal to 1,5,3,41,5,3,4
- Now haircut takes two seonds: two swings are required: for the 44-th hairline and for the 22-nd.
- Then Alice's first hairline grows, the lengths of hairlines are now equal to 4,5,3,44,5,3,4
- The haircut still takes two seconds: with one swing hairdresser can cut 44-th hairline and with one more swing cut the segment from 11-st to 22-nd hairline.
- Then Alice's third hairline grows, the lengths of hairlines are now equal to 4,5,4,44,5,4,4
- Now haircut takes only one second: with one swing it is possible to cut the segment from 11-st hairline to the 44-th.
模拟:
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <queue>
#include <map>
#include <sstream>
#include <cstdio>
#include <cstring>
#include <numeric>
#include <cmath>
#include <unordered_set>
#include <unordered_map>
//#include <xfunctional>
#define ll long long
#define mod 998244353
using namespace std;
int dir[][] = { {,},{,-},{-,},{,} };
const long long inf = 0x7f7f7f7f7f7f7f7f;
const int INT = 0x3f3f3f3f; int main()
{
int n, m, l, ans = ;
cin >> n >> m >> l;
vector<int> a(n + );
for (int i = ; i <= n; i++)
{
cin >> a[i];
if (a[i] > l && (i + > n || a[i + ] <= l) && (i - < || a[i - ] <= l))
ans++;
}
while (m--)
{
int t;
cin >> t;
if (t)
{
int p, d;
cin >> p >> d;
if (a[p] <= l)
{
a[p] += d;
if (a[p] > l && (p + > n || a[p + ] <= l) && (p - < || a[p - ] <= l))
{
ans++;
}
if (a[p] > l && p + <= n && a[p + ] > l && p - >= && a[p - ] > l)
ans--;
}
}
else
{
cout << ans << endl;
}
}
return ;
}
Alice and Hairdresser的更多相关文章
- 【Mail.Ru Cup 2018 Round 2 B】 Alice and Hairdresser
[链接] 我是链接,点我呀:) [题意] [题解] 因为只会增加. 所以. 一开始暴力算出来初始答案 每次改变一个点的话. 就只需要看看和他相邻的数字的值就好. 看看他们是不是大于l 分情况增加.减少 ...
- Mail.Ru Cup 2018 Round 2 B. Alice and Hairdresser (bitset<> or 其他)
传送门 题意: 给出你序列 a,在序列 a 上执行两种操作: ① 0 :查询有多少连续的片段[L,...,R],满足 a[L,...,R] > l: ② 1 p d :将第 p 个数增加 d: ...
- Mail.Ru Cup 2018 Round 2 Solution
A. Metro Solved. 题意: 有两条铁轨,都是单向的,一条是从左往右,一条是从右往左,Bob要从第一条轨道的第一个位置出发,Alice的位置处于第s个位置,有火车会行驶在铁轨上,一共有n个 ...
- (HDU 5558) 2015ACM/ICPC亚洲区合肥站---Alice's Classified Message(后缀数组)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5558 Problem Description Alice wants to send a classi ...
- 2016中国大学生程序设计竞赛 - 网络选拔赛 J. Alice and Bob
Alice and Bob Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- bzoj4730: Alice和Bob又在玩游戏
Description Alice和Bob在玩游戏.有n个节点,m条边(0<=m<=n-1),构成若干棵有根树,每棵树的根节点是该连通块内编号最 小的点.Alice和Bob轮流操作,每回合 ...
- Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)
Alice and Bob Time Limit: 1000ms Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ...
- 阿里前端框架Alice是个不错的选择
BootStrap虽然用户群体广大,其整体风格尽管有不少skin可选,但以国情来看还是不好看. 阿里开源的前端框架,个人觉得还是很不错,Alice处处透着支付宝中界面风格的气息,电商感挺强. 以下内容 ...
- poj 1698 Alice‘s Chance
poj 1698 Alice's Chance 题目地址: http://poj.org/problem?id=1698 题意: 演员Alice ,面对n场电影,每场电影拍摄持续w周,每周特定几天拍 ...
随机推荐
- centos6.8 安装.net core2.1 sdk 或 .net core2.1 runtime
前段时间看.net core 更更更新了,大家反应都挺好,想有机会也学习一下,正好这两天要写一个简单的服务在centos上面跑,于是决定放弃使用java,直接.net core走起来,事情进行的非常顺 ...
- Android中通过数组资源文件xml与适配器两种方式给ListView列表视图设置数据源
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...
- java 正则表达式空格无法匹配
举个例子 Boolean xx= Pattern.matches("^[a-zA-Z0-9\\s]*$", " 801 Tampines Ave 4 Singapore ...
- Maven 仓库、坐标、常用命令
maven中的仓库 需要jar包时,先到本地仓库中找,没有就从中央仓库去下载到本地仓库. 中央仓库很多都在国外,下载速度慢.国内的一些公司在自己的服务器上搭建了maven仓库(中央仓库的镜像),供内部 ...
- fish 设置环境变量;fish shell 相关使用说明记录;
最近使用 fish进行工作,发现环境变量忘记如何设置: fish 环境变量保存在两个地方: ~ 目录下,.config/fish 目录下: /etc/fish/ 目录下 如果配置所有用户都能用的环境变 ...
- Ubuntu 1910安装Openshift 4.0单机版 (CRC)
Openshift默认可以在CentOS等RHEL系的发行版上安装. 本文转述一下如何在Ubuntu 1910上安装Openshift4.0单机版(CRC). 原文请参考: https://gith ...
- .net core 中如何运用 appsettings.json 进行配置开发、生产不同配置
.net core 默认会有 appsettings.Development.json 文件,这是根据ASPNETCORE_ENVIRONMENT来读取的. 新建架构appsettings.Produ ...
- MySQL 8 复制
MySQL 8.0 支持的复制方法: 传统方法(基于二进制日志文件位置) 新方法(基于GTID) MySQL 8.0 支持的同步类型: 异步复制(内置) 同步复制(NDB集群) 半同步复制(半同步复制 ...
- C# 数组冒泡排序复习
using System; namespace runoob { class MyClass { static void Main(string[] args) { MyClass1 myClass ...
- OpenCV学习记录(C++版本)
HighGUI组件 图像的载入:imread()函数 Mat imread(const string& filename, int flag = 1)其中flag=1代表读入RGB彩色图像,- ...