B. Welfare State(RMQ问题的逆向考虑)
\(对于操作1,我们只关心最后一次操作。\)
\(对于操作2,我们只关心值最大的一次操作。\)
\(也就是说,我们记录每个居民最后一次被修改的位置\)
\(然后它的最终答案就是从这个位置起,max(操作2最大的一次,最后一次修改的值)\)
\(当然,如果没有被修改过,默认被修改的位置在0.\)
\(\color{Red}{话说回来真的很佩服那些写线段树的人,为什么我不会用线段树呢(●ˇ∀ˇ*|}\)
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e5+9;
int n,w,da[maxn],b[maxn],vis[maxn];
inline int max(int a,int b){return a>b?a:b;}
struct p{
int lei,num,x;
}a[maxn];
int main()
{
cin>>n;
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
scanf("%d",&w);
for(int i=1;i<=w;i++)
{
scanf("%d",&a[i].lei);
if(a[i].lei==1)
{
scanf("%d%d",&a[i].num,&a[i].x);
vis[a[i].num]=i,b[a[i].num]=a[i].x;
}
else
scanf("%d",&a[i].x);
}
for(int i=w;i>=1;i--)
{
if(a[i].lei==1) da[i]=da[i+1];//不是修改区间就继承最大
else da[i]=max(da[i+1],a[i].x);//否则尝试更新最大
}
da[0]=da[1];
for(int i=1;i<=n;i++)
{
int xu=vis[i];//最后一次被修改的位置
printf("%d ",max(da[xu],b[i]));
}
}
B. Welfare State(RMQ问题的逆向考虑)的更多相关文章
- [Codeforces 1199D]Welfare State(线段树)
[Codeforces 1199D]Welfare State(线段树) 题面 给出一个长度为n的序列,有q次操作,操作有2种 1.单点修改,把\(a_x\)修改成y 2.区间修改,把序列中值< ...
- Codeforces - 1199D - Welfare State - 单调栈 / 线段树
https://codeforc.es/contest/1199/problem/D 其实后来想了一下貌似是个线段树的傻逼题. 单调栈是这样思考的,每次单点修改打上一个最终修改的时间戳.每次全体修改就 ...
- codeforces 1198B - Welfare State
题目链接:http://codeforces.com/problemset/status 题目大意为有n个市民,每个市民有ai点数财富,以下有q次操作,操作类型为两类,1类:把第p个市民的财富改为x, ...
- Codeforces Round #576 (Div. 2) D. Welfare State
http://codeforces.com/contest/1199/problem/D Examples input1 output1 input2 output2 Note In the firs ...
- D. Welfare State
There is a country with
- 【CodeForces】CodeForcesRound576 Div1 解题报告
点此进入比赛 \(A\):MP3(点此看题面) 大致题意: 让你选择一个值域区间\([L,R]\),使得序列中满足\(L\le a_i\le R\)的数的种类数不超过\(2^{\lfloor\frac ...
- Codeforces Round #576 (Div. 1)
Preface 闲来无事打打CF,就近找了场Div1打打 这场感觉偏简单,比赛时艹穿的人都不少,也没有3000+的题 两三个小时就搞完了吧(F用随机水过去了) A. MP3 题意不好理解,没用翻译看了 ...
- Browse Princeton's Series (by Date) in Princeton Economic History of the Western World
Browse Princeton's Series (by Date) in Princeton Economic History of the Western World Joel Mokyr, S ...
- Codeforces Round #576 (Div. 2) 题解
比赛链接:https://codeforc.es/contest/1199 A. City Day 题意:给出一个数列,和俩个整数\(x,y\),要求找到序号最靠前的数字\(d\),使得\(d\)满足 ...
随机推荐
- Python pip高级用法
1.pip 高级用法为了便于用户安装和管理第三方库和软件,越来越多的编程语言拥有自己的包管理工 具,如 nodejs 的 npm, ruby 的 gem. Python 也不例外,现在 Python ...
- std::string::substr函数
string substr (size_t pos = 0, size_t len = npos) const;
- Android电池信息获取
Android 可以通过BroadcastReceiver来获取电池信息改变的广播(ACTION_BATTERY_CHANGED),从而获取到相关的电池信息. 电池信息,及其对应的相关常数(参考网址: ...
- SVG 案例:动态去创建分支节点,当鼠标经过某个节点时,分支线会高亮
css: <style> #div1{ width:780px; height:400px; background:#fff; margin:20px auto; overflow:hid ...
- 这价格看得我偷偷摸了泪——用python爬取北京二手房数据
如果想了解更多关于python的应用,可以私信我,或者加群,里面到资料都是免费的 http://t.cn/A6Zvjdun 近期,有个朋友联系我,想统计一下北京二手房的相关的数据,而自己用Excel统 ...
- api_DZFPKJ & api_DZFPCX(get_AES_url代码优化)
通过AES加密网站的接口来传值,不需要手动加密字符串后复制过来传值. #coding:utf-8 import requests import re def get_aes_url(key, text ...
- Jmeter系列(2)- Jmeter工具介绍、Jmeter安装目录介绍、Jmeter面板介绍
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html Jmeter支持哪些测试场景? Jme ...
- Java标识符中常见的命名规则
标识符:就是给类,接口,方法,变量等起名字.组成规则:A:英文字母大小写B:数字字符C:$和_注意事项:A:不能以数字开头B:不能使Java中的关键字C:Java语言严格区分大小写常见的命名规则:见名 ...
- Java 多线程 -- lambda 表达式推导
jdk 8 开始 java 引入了lambda 表达式. lambda适用场景: 1.接口或父类 2.接口或父类只有一个方法 我们从多线程写法来推导一下: 1.外部类写法: package com.x ...
- Spiking-YOLO : 前沿性研究,脉冲神经网络在目标检测的首次尝试 | AAAI 2020
论文提出Spiking-YOLO,是脉冲神经网络在目标检测领域的首次成功尝试,实现了与卷积神经网络相当的性能,而能源消耗极低.论文内容新颖,比较前沿,推荐给大家阅读 来源:晓飞的算法工程笔记 公众 ...