JOISC 2016 回转寿司
题目
分块题都先考虑一个操作:
如果每次操作都是[1,n][1,n][1,n],
那么我们建一个大根堆,每次删除最大值,再把AAA塞进去即可。
再考虑一个操作:
操作完之后要根据堆和初始的数组更新出现在的数组。
看一行代码:
for(int i=st[id];i<=ed[id];i++) q[id].push(a[i]),a[i]=q[id].top(),q[id].pop();
所以我们就完成了整块打标记和散块重构。
ACCode\mathcal{AC \ Code}AC Code
#include <bits/stdc++.h>
#define maxn 400005
#define S 705
#define rep(i, j, k) for (int i = (j), LIM = (k); i <= LIM; i++)
#define per(i, j, k) for (int i = (j), LIM = (k); i >= LIM; i--)
using namespace std;int n, Q, a[maxn], id[maxn], st[maxn], ed[maxn];
priority_queue<int> h[S];
priority_queue<int, vector<int>, greater<int> > q[S];void Sol_sig(int id, int l, int r, int &A) {for (int i = st[id]; i <= ed[id]; i++) q[id].push(a[i]), a[i] = q[id].top(), q[id].pop();for (int i = l; i <= r; i++)if (a[i] > A)swap(A, a[i]);for (; !h[id].empty(); h[id].pop());for (; !q[id].empty(); q[id].pop());for (int i = st[id]; i <= ed[id]; i++) h[id].push(a[i]);
}void Sol(int l, int r, int &A) {if (id[l] == id[r])Sol_sig(id[l], l, r, A);else {Sol_sig(id[l], l, ed[id[l]], A);for (int i = id[l] + 1; i < id[r]; i++) {q[i].push(A);if (h[i].top() > A) {int t = h[i].top();h[i].pop();h[i].push(A);A = t;}}Sol_sig(id[r], st[id[r]], r, A);}
}int main() {scanf("%d%d", &n, &Q);for (int i = 1; i <= n; i++)scanf("%d", &a[i]), id[i] = i / S, h[id[i]].push(a[i]), (!st[id[i]]) && (st[id[i]] = i),ed[id[i]] = i;for (int l, r, A; Q--;) {scanf("%d%d%d", &l, &r, &A);if (l <= r)Sol(l, r, A);elseSol(l, n, A), Sol(1, r, A);printf("%d\n", A);}
}
JOISC 2016 回转寿司相关推荐
- android消息池,回转寿司你一定吃过!——Android消息机制(构造)
消息机制的故事寿司陈放在寿司碟上,寿司碟按先后顺序被排成队列送上传送带.传送带被启动后,寿司挨个呈现到你面前,你有三种享用寿司的方法. 将Android概念带入后,就变成了Android消息机制的故事 ...
- 俄罗斯套娃(JOISC 2016 Day 1)
俄罗斯套娃(JOISC 2016 Day 1) 题目描述 你开了一家卖俄罗斯套娃的店.因此,你向厂家订购了 \(N\)个俄罗斯套娃,这些娃娃被编号为 \(1\) 到 \(N\),其中第 \(i\) 个 ...
- (线段树)P5459 [BJOI2016]回转寿司
P5459 [BJOI2016]回转寿司 添加链接描述https://www.luogu.com.cn/problem/P5459 思路:题目意思就是求出有多少个区间和在L~R范围内,这符合线段树的区 ...
- bzoj 4627: [BeiJing2016]回转寿司 -- 权值线段树
4627: [BeiJing2016]回转寿司 Time Limit: 10 Sec Memory Limit: 256 MB Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店. ...
- BZOJ4627 回转寿司 值域线段树
Problem Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都 ...
- bzoj 4627 回转寿司(权值线段树)
回转寿司 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个 ...
- K - 回转寿司(值域段数(板题) + 动态开点)
回转寿司 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个 ...
- Bzoj4627 [BeiJing2016]回转寿司
Time Limit: 10 Sec Memory Limit: 256 MB Submit: 329 Solved: 149 [Submit][Status][Discuss] Descript ...
- bzoj4627[BeiJing2016]回转寿司
bzoj4627[BeiJing2016]回转寿司 题意: 求在一个序列中和在区间[l,r]中的连续子序列的个数.序列大小≤100000,序列元素可以为负数. 题解: 题目要求这个:l<=sum ...
最新文章
- android LinkedList的基本用法
- bzoj千题计划169:bzoj2463: [中山市选2009]谁能赢呢?
- WindowsForm 窗体属性和控件
- 论文笔记-Leverage Lexical Knowledge for Chinese Named Entity Recognition via Collaborative Graph Network
- HBuilderx中编译sass文件
- 全球超高精度 IP 实时定位系统--捕风者
- html 中加flash,用HTML代码添加FLASH
- 《Git 教程 - 廖雪峰》
- 鼠标计算机英语怎么说,鼠标英语
- ValueError: You are trying to load a weight file containing 0 layers into a model with 16 layers.
- listview增大条目间距
- 符号函数操作 符号积分变换
- 使用 k3d 在Windows上安装 k3s
- 如何用Python和hashlib实现文件MD5码的批量存储
- IBIS SPICE模型对比 (转帖)
- Docker Swarm 命令
- Solidworks二次开发:获取零件选中边的圆心坐标
- webmsxyw x-s分析
- PHPer为什么被认为是草根?
- i春秋女黑客熊猫TV女主播激情碰撞,极客挑战赛24小时在线直播
热门文章
- 国际电话组件封装使用以及vuephonenumberinput属性解读
- 精选收集50个计算机热门视频教程免费下载
- Swift Invalid bitcode version (Producer: '802.0.41.0_0' Reader: '800.0.42.1_0')
- OCA认证背后的思考
- 基于几个多分类的算法实现中风预测(准确率95.5%)
- cwl的网络流24题练习
- 2017年程序猿的九大提升点(微记录)
- 论文阅读_Robust Counterfactual Explanations on Graph Neural Networks
- 【Axure教程】中继器版视频播放列表
- 女生学计算机好吗有辐射,电脑辐射对女人有害吗