[Ynoi2015] 我回来了 题解
\(NOIP\) 考前祈福。
实际上,每种伤害 \(d\) 打出的亵渎次数可以转化为:
\]
其中 \(sum(i,j)\) 表示血量为 \([i,j]\) 这个区间的随从数量。
容易想到记录每种伤害 \(d\) 最早亵渎 \(x+1\) 次时的位置 \(g_{d,x}\)。设 \(a_i\) 表示第一个血量为 \(i\) 的随从出现的时间,则有:
\]
括号内的部分直接用 \(ST\) 表简单维护,于是轻松求解。
由于总的区间段数为 \(\sum\limits_{i=1}^n\lceil\frac{n}{i}\rceil\),与 \(n\log n\) 同级,所以枚举区间段数的时间复杂度为 \(O(n\log n)\)。
考虑一句废话:当亵渎次数增加 \(1\) 时,包含该伤害的询问答案也加 \(1\)。
于是建立树状数组,统计现在每种伤害能打出的亵渎次数,询问时区间求值即可。
离线,时间复杂度 \(O(n\log^2n)\)。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
const int M=1e6+5;
int n,m,c[M],opt[M],a[N];
int lq[M],rq[M],st[N][20];
vector<int>ad[M];
void add(int x,int y){
for(;x<=m;x+=x&-x) c[x]+=y;
}int sum(int x){
int re=0;
for(;x;x-=x&-x) re+=c[x];
return re;
}void get_ST(){
for(int i=1;i<=n;i++) st[i][0]=a[i];
for(int i=0;i<19;i++)
for(int j=1;j+(1<<(i+1))-1<=n;j++)
st[j][i+1]=min(st[j][i],st[j+(1<<i)][i]);
}int rmq(int l,int r){
int k=log2(r-l+1),x=r-(1<<k)+1;
return min(st[l][k],st[x][k]);
}int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++) a[i]=m+1;
for(int i=1;i<=m;i++){
cin>>opt[i];
if(opt[i]==1){
int h;cin>>h;
if(a[h]>m) a[h]=i;
}else cin>>lq[i]>>rq[i];
}get_ST();
for(int i=1;i<=n;i++)
for(int j=1,t=0;j<=n;j+=i)
t=max(t,rmq(j,min(j+i-1,n))),ad[t].push_back(i);
for(int i=1;i<=n;i++) add(i,1);
for(int i=1;i<=m;i++){
for(auto x:ad[i]) add(x,1);
if(opt[i]==1) continue;
cout<<sum(rq[i])-sum(lq[i]-1)<<"\n";
}return 0;
}
[Ynoi2015] 我回来了 题解的更多相关文章
- 【题解】Luogu P5068 [Ynoi2015]我回来了
众所周知lxl是个毒瘤,Ynoi道道都是神仙题,这道题极其良心,题面好评 原题传送门 我们先珂以在\(O(n^2)\)的时间内bfs求出任意两点距离 我们考虑如何计算从一个点到所有点的最短路长度小于等 ...
- [洛谷P5068][Ynoi2015]我回来了
题目大意:给你一张$n(n\leqslant10^3)$个点$m(m\leqslant10^5)$个点的无向无权图,多组询问,每次询问给你一些二元组$(x_i,y_i)$,求有多少个$u$于至少一个二 ...
- [Ynoi2015]我回来了
题目大意: 给定一张无向无权图,每次给定若干个二元组\((x_i,y_i)\),定义点\(u\)满足条件,当且仅当存在\(i\),并满足\(dist(u,x_i)\leqslant y_i\)(\(d ...
- luoguP5068 [Ynoi2015]我回来了
https://www.luogu.org/problemnew/show/P5068 ynoi 中的良心题啊 考虑用 bitset 来维护里一个点距离小于 $ y_i $ 的点,那么答案就是一堆 b ...
- P5068 [Ynoi2015]我回来了
传送门 解锁成就:ynoi的题目都做到过原题 因为\(n\)很小,我们可以用\(sss[u][i]\)表示到点\(u\)的距离不超过\(i\)的点的集合,这个可以用bitset存,然后先一遍bfs,再 ...
- Luogu P5068 [Ynoi2015]我回来了
题目 Ynoi难得的水题. 首先我们可以\(O(n^2)\)地求出任意两点之间的距离. 然后我们可以\(O(n^3)\)地求出对于任意一个点\(u\),跟它距离\(\le d\)的点的集合. 然后对于 ...
- bzoj 4842 [Neerc2016]Delight for a Cat 最小费用最大流,线性规划
题意:有n个小时,对于第i个小时,睡觉的愉悦值为si,打隔膜的愉悦值为ei,同时对于任意一段连续的k小时,必须至少有t1时间在睡觉,t2时间在打隔膜.如果要获得的愉悦值尽 量大,求最大的愉悦值和睡觉还 ...
- 「SCOI2011」糖果
蒟蒻又回来写题解了... 题面 幼儿园里有 N 个小朋友, lxhgww 老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红 ...
- [USACO10OPEN]牛跳房子Cow Hopscotch
题目描述 奶牛们正在回味童年,玩一个类似跳格子的游戏,在这个游戏里,奶 牛们在草地上画了一行N个格子,(3 <=N <= 250,000),编号为1..N. 就像任何一个好游戏一样,这样的 ...
- 2018ICPC赛后总结
南京: 南京是我们队第一场区域赛,而且和一队二队一起,心里总有种踏实感.之前我们仨在一起讨论过我们打大型比赛出现的问题,晨哥说我们在封榜后总是出不了题,确实是这样,我觉得在之前的比赛中,我们队胜负欲都 ...
随机推荐
- 【Kotlin】select简介
1 前言 协程的 select 是一种用于异步操作的选择器,它允许同时等待多个挂起函数的结果,并在其中一个完成时执行相应的操作. 能够被 select 的事件都是 SelectClause,在 ...
- cve-2021-3156-sudo堆溢出简单分析
调试方式 首先从github下载代码 https://github.com/sudo-project/sudo/archive/SUDO_1_9_5p1.tar.gz 编译 tar xf sudo-S ...
- GraphRAG+文档结构:打造高性能实体溯源方案
作者:陈梓康 众所周知,GraphRAG将文档内容抽取为知识图谱三元组后,实际上仅保留了关联性知识信息,因此不可避免地会丢失原文的一些内容细节.在对数据完整度要求严格的业务场景,如金融.医疗.保险等行 ...
- sqlalchemy 的 schema 合并模块 alembic 使用
alembic 很好的解决了升级数据库改变表结构的传统难题,官方的推荐用法是当一个工具用,这是从 Stack Overflow 扒到的直接用内部 api 的代码,操作有点像 diff_patch. 来 ...
- 【人工智能】【深度学习】CUDA与CUDNN安装
cuDA安装 基础 CUDA工具包 NVIDIA CUDA 工具包提供了开发环境,可供创建经 GPU 加速的高性能应用.借助 CUDA 工具包,您可以在经 GPU 加速的嵌入式系统.台式工作站.企业数 ...
- Qt/C++开源作品45-CPU内存显示控件/和任务管理器一致
一.前言 在很多软件上,会在某个部位显示一个部件,专门显示当前的CPU使用率以及内存占用,方便用户判断当前程序或者当前环境中是否还有剩余的CPU和内存留给程序使用,在不用打开任务管理器或者资源查看器的 ...
- Qt音视频开发45-音视频类结构体参数的设计
一.前言 视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用的结 ...
- Redis源码历史版本下载地址和Redis的Windows版本服务端/客户端下载地址
Redis源码历史版本下载地址:http://download.redis.io/releases/ Redis的Windows版本服务端/客户端下载地址:https://github.com/mic ...
- 聊一聊 C#异步 任务延续的三种底层玩法
一:背景 1. 讲故事 最近聊了不少和异步相关的话题,有点疲倦了,今天再写最后一篇作为近期这类话题的一个封笔吧,下篇继续写我熟悉的 生产故障 系列,突然亲切感油然而生,哈哈,免费给别人看程序故障,是一 ...
- 谈谈flutter的线程
本文同步发布于公众号:移动开发那些事谈谈flutter的线程 刚接触flutter的同学肯定会对fluter所谓的单线程架构很蒙逼,因为这与我们学开发时,各种语言里的多线程的介绍有点出入,而且手机的C ...