LibreOJ #541. 「LibreOJ NOIP Round #1」七曜圣贤(单调队列)
被以前自己瞎YY的东西坑了T T...单调队列的确是可以维护这种操作的....
显然这题可以转化成维护不在车上的东西的最小值, 支持插入和删去最早出现的值,然后就可以用单调队列了T T

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
#define uint unsigned int
using namespace std;
const int maxn=, inf=1e9;
int n, m, a, b, d, T, l, r, L, R, up, fir, firans;
int p[maxn], h[maxn], q[maxn];
uint ans_sum, cur_ans;
bool fly[maxn], car[maxn];
namespace IO{
int c;
unsigned int seed;
unsigned int randnum(){
seed^=seed<<;
seed^=seed>>;
seed^=seed<<;
return seed;
} inline int read(int &x){scanf("%d",&x);return x;}
inline void init_case(int &m,int &a,int &b,int &d,int p[]){
scanf("%d%u%d%d%d%d",&m,&seed,&a,&b,&c,&d);
for(int i=;i<=m;i++){
if(randnum()%c==) p[i]=-;
else p[i]=randnum()%b;
}
} inline void update_ans(unsigned int &ans_sum,unsigned int cur_ans,int no){
const static unsigned int mod=;
ans_sum^=(long long)no*(no+)%mod*cur_ans%mod;
}
}
using IO::read;
using IO::init_case;
using IO::update_ans;
inline void qpush(int x)
{
while(L<=R && q[R]>=x) R--;
q[++R]=x;
}
inline int min(int a, int b){return a<b?a:b;}
int main()
{
read(T);
while(T--)
{
init_case(m, a, b, d, p);
up=max(a+, b);
memset(fly, , (up+));
memset(car, , (up+));
L=; R=; l=; r=; ans_sum=; firans=a+;
for(int i=;i<=a;i++) car[i]=;
for(int i=;i<=m;i++)
{
cur_ans=;
if(p[i]==-)
{
if(l<=r && !d)
{
if(L<=R && q[L]==h[l]) L++;
fly[h[l++]]=, cur_ans=(L<=R)?min(firans, q[L]):firans;
}
}
else
{
if(!car[p[i]])
{
car[p[i]]=;
while(car[firans]) firans++;
cur_ans=(L<=R)?min(firans, q[L]):firans;
}
else if(car[p[i]] && !fly[p[i]] && !d) fly[p[i]]=, h[++r]=p[i], qpush(p[i]), cur_ans=(L<=R)?min(firans, q[L]):firans;
else if(l<=r && !d)
{
if(L<=R && q[L]==h[l]) L++;
fly[h[l++]]=, cur_ans=(L<=R)?min(firans, q[L]):firans;
}
}
update_ans(ans_sum, cur_ans, i);
}
printf("%u\n", ans_sum);
}
return ;
}
LibreOJ #541. 「LibreOJ NOIP Round #1」七曜圣贤(单调队列)的更多相关文章
- 【LibreOJ】#541. 「LibreOJ NOIP Round #1」七曜圣贤
[题意]一开始车上有编号为0~a的红茶,过程中出现的红茶编号仅有[0,b),有三种操作: 1.买进编号未在车上出现过的红茶. 2.丢掉车上指定编号的红茶. 3.将最早丢出去的红茶捡回来. 每次操作后求 ...
- LOJ#541. 「LibreOJ NOIP Round #1」七曜圣贤
有一辆车一开始装了编号0-a的奶茶,现有m次操作,每次操作Pi在[-1,b),若Pi为一个未出现过编号的奶茶,就把他买了并装上车:若Pi为一个在车上的奶茶,则把他丢下车:否则,此次操作为捡起最早丢下去 ...
- 「LOJ 541」「LibreOJ NOIP Round #1」七曜圣贤
description 题面很长,这里给出题目链接 solution 用队列维护扔掉的红茶,同时若后扔出的红茶比先扔出的红茶编号更小,那么先扔出的红茶不可能成为答案,所以可以用单调队列维护 故每次询问 ...
- 「LibreOJ NOIP Round #1」七曜圣贤
题目啰嗦:支持三个操作: 不可重复集合:1.加入一个数 2.删除一个数 3.恢复目前最早的一次删除的数 操作可能不合法,每次有效操作之后求集合的mex(最小没有出现过的数) 50组数据+1e6,必须O ...
- LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力
二次联通门 : LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 /* LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 叫做计算几 ...
- LibreOJ #528. 「LibreOJ β Round #4」求和
二次联通门 : LibreOJ #528. 「LibreOJ β Round #4」求和 /* LibreOJ #528. 「LibreOJ β Round #4」求和 题目要求的是有多少对数满足他们 ...
- LibreOJ #527. 「LibreOJ β Round #4」框架
二次联通门 : LibreOJ #527. 「LibreOJ β Round #4」框架 /* LibreOJ #527. 「LibreOJ β Round #4」框架 %% xxy dalao 对于 ...
- LibreOJ #526. 「LibreOJ β Round #4」子集
二次联通门 : LibreOJ #526. 「LibreOJ β Round #4」子集 /* LibreOJ #526. 「LibreOJ β Round #4」子集 考虑一下,若两个数奇偶性相同 ...
- LibreOJ #525. 「LibreOJ β Round #4」多项式
二次联通门 : LibreOJ #525. 「LibreOJ β Round #4」多项式 官方题解 : /* LibreOJ #525. 「LibreOJ β Round #4」多项式 由于会有多种 ...
随机推荐
- 纯CSS3实现旋转木马
test.html: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- 发送请求工具—Advanced REST Client的安装使用
1. 0 下载得到Advanced-REST-client_v3.1.9.zip 链接:http://pan.baidu.com/s/1c0vUnJi 密码:z34d 1.1 解压Advanced-R ...
- NO.06--聊一聊“币”吧!
近期博主更新的频率明显慢来 ,一来是最近的工作比较忙碌,几个项目几乎同时要上线.二来是在思考是不是把我平时生活中的一些事情写进来博客,不只是分享分享技术. 趁着区块链.比特币火爆,博主也算是略有涉猎, ...
- JavaScript(js)处理的HTML事件、键盘事件、鼠标事件
示例代码: HTML文件: <!DOCTYPE html><html lang="en"><head> <meta charset=&qu ...
- Openstack 10 云环境安装
概述 资源规划 Undercloud Installation Overcloud Installation Trouble Shooting 附录 本指南介绍了如何使用 Red Hat OpenSt ...
- 创建image
摘要: 本节演示如何通过 Web GUI 和 CLI 两种方法创建 Image. 本节演示如何通过 Web GUI 和 CLI 两种方法创建 Image. OpenStack 为终端用户提供了 Web ...
- Masha and Bears(翻译+思维)
Description A family consisting of father bear, mother bear and son bear owns three cars. Father bea ...
- Thunder--Beta发布--美工+文案
作业:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/1366 内容: 美工:原有功能展示.新增功能展示 程序图标 欢迎页面 我的书架 ...
- 404 Note Found队——现场编程
目录 组员职责分工 github 的提交日志截图 程序运行截图 程序运行环境 GUI界面 基础功能实现 运行视频 LCG算法 过滤(降权)算法 算法思路 红黑树 附加功能一 背景 实现 附加功能二(迭 ...
- 如何打开tensorboard观测训练过程
TensorBoard是TensorFlow下的一个可视化的工具,能够帮助研究者们可视化训练大规模神经网络过程中出现的复杂且不好理解的运算,展示训练过程中绘制的图像.网络结构等. 最近本人在学习这方面 ...