「LOJ 541」「LibreOJ NOIP Round #1」七曜圣贤
description
- 题面很长,这里给出题目链接
solution
- 用队列维护扔掉的红茶,同时若后扔出的红茶比先扔出的红茶编号更小,那么先扔出的红茶不可能成为答案,所以可以用单调队列维护
- 故每次询问的答案只可能是单调队列的队首或者没有出现过的红茶中编号最小的,后者可以\(O(b)\)暴力计算
code
#include<bits/stdc++.h>
using namespace std;
namespace IO{
int c;
unsigned int seed;
unsigned int randnum(){
seed^=seed<<13;
seed^=seed>>17;
seed^=seed<<5;
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=1;i<=m;i++){
if(randnum()%c==0)p[i]=-1;
else p[i]=randnum()%b;
}
}
inline void update_ans(unsigned int &ans_sum,unsigned int cur_ans,int no){
const static unsigned int mod=998244353;
ans_sum^=(long long)no*(no+7)%mod*cur_ans%mod;
}
}
using IO::read;
using IO::init_case;
using IO::update_ans;
deque<unsigned int> dq;
queue<unsigned int> q;
int w[4000005],ans;
//车上有:w 1
//飞出去了:w 2
//没见过:w 0
int main(){
// freopen("knowledge4.in","r",stdin);
static int p[2000005];
int T;read(T);
int m,a,b,d;
while(T--){
unsigned int ans_sum=0,cur_ans=0;
init_case(m,a,b,d,p);
while(!q.empty()) q.pop();
while(!dq.empty()) dq.pop_back();
memset(w,0,sizeof(w));b=max(a+1,b);
if(a!=-1) for(int i=0;i<=a;++i) w[i]=1;
ans=a+1;
for(int i=1;i<=m;++i){
if(p[i]==-1){
if(q.empty()||d==1) continue;
int t=q.front();
w[t]=1;q.pop();
if(!dq.empty()&&t==dq.front())dq.pop_front();
cur_ans=ans;if(!dq.empty())cur_ans=min(dq.front(),cur_ans);
}//事件三
else if(!w[p[i]]){
w[p[i]]=1;
while(w[ans]) ans++;
cur_ans=ans;if(!dq.empty())cur_ans=min(dq.front(),cur_ans);
}//事件一
else if(w[p[i]]==1){
if(d==1) continue;
w[p[i]]=2;q.push(p[i]);
while(!dq.empty()&&dq.back()>p[i]) dq.pop_back();dq.push_back(p[i]);
cur_ans=ans;if(!dq.empty())cur_ans=min(dq.front(),cur_ans);
}//事件二
else{
if(q.empty()||d==1) continue;
int t=q.front();
w[t]=1;q.pop();
if(!dq.empty()&&t==dq.front())dq.pop_front();
cur_ans=ans;if(!dq.empty())cur_ans=min(dq.front(),cur_ans);
}//事件三
update_ans(ans_sum,cur_ans,i);
}
printf("%u\n",ans_sum);
}
return 0;
}
「LOJ 541」「LibreOJ NOIP Round #1」七曜圣贤的更多相关文章
- LOJ#541. 「LibreOJ NOIP Round #1」七曜圣贤
有一辆车一开始装了编号0-a的奶茶,现有m次操作,每次操作Pi在[-1,b),若Pi为一个未出现过编号的奶茶,就把他买了并装上车:若Pi为一个在车上的奶茶,则把他丢下车:否则,此次操作为捡起最早丢下去 ...
- 「LOJ 537」「LibreOJ NOIP Round #1」DNA 序列
description NOIP 复赛之前,HSD 桑进行了一项研究,发现人某条染色体上的一段 DNA 序列中连续的\(k\)个碱基组成的碱基序列与做题的 AC 率有关!于是他想研究一下这种关系. 现 ...
- LibreOJ #541. 「LibreOJ NOIP Round #1」七曜圣贤(单调队列)
被以前自己瞎YY的东西坑了T T...单调队列的确是可以维护这种操作的.... 显然这题可以转化成维护不在车上的东西的最小值, 支持插入和删去最早出现的值,然后就可以用单调队列了T T #includ ...
- 【LibreOJ】#541. 「LibreOJ NOIP Round #1」七曜圣贤
[题意]一开始车上有编号为0~a的红茶,过程中出现的红茶编号仅有[0,b),有三种操作: 1.买进编号未在车上出现过的红茶. 2.丢掉车上指定编号的红茶. 3.将最早丢出去的红茶捡回来. 每次操作后求 ...
- LOJ#539. 「LibreOJ NOIP Round #1」旅游路线
n<=100,m<=1000的图,在此图上用油箱容量C<=1e5的车来旅行,旅行时,走一条边会耗一单伟油,在点i时,若油量<ci,则可以把油以pi的价格补到ci,pi<= ...
- LOJ #539. 「LibreOJ NOIP Round #1」旅游路线 倍增floyd + 思维
考试的时候是这么想的: 求出每一个点花掉 $i$ 的花费向其他点尽可能走的最长距离,然后二分这个花费,找到第一个大于 $d$ 的就输出$.$然而,我这个记忆化搜索 $TLE$ 的很惨$.$这里讲一下正 ...
- 「LOJ 538」「LibreOJ NOIP Round #1」数列递推
description sosusosu 虐爆 OI 之后成为了一名文化课选手.一天,他做作业碰到了一堆数列问题,每道题给出的数列都是以下形式: 给定一个下标从\(0\)开始,无限长的整数列\({a_ ...
- 「LOJ 539」「LibreOJ NOIP Round #1」旅游路线
description 题面较长,这里给出题目链接 solution 考虑预处理出\(f[i][j]\)表示在第\(i\)个点加满油后,从第\(i\)个点出发,至多消耗\(j\)元钱走过的最大路程,那 ...
- 【LibreOJ】#538. 「LibreOJ NOIP Round #1」数列递推
[题意]LibreOJ [算法]乱搞 [题解]容易发现数列最后一定单调,最后单调递增则最大值赋为最后一个,反之最小值赋为最后一个,然后处理一些细节就可以AC,要注意以下几点: 1.数列连续三项以及数列 ...
随机推荐
- chrome浏览器中调试窗口位置修改
在这里修改就好了
- 缩略图调查——抖音客户端/PC/iphone
最近对抖音有点上瘾,经常看到这样的视频列表: 由于抖音平台的限制,用户最多只能上传60s的视频,因此分段为3个视频.而在视频列表的缩略图模式下,三个视频的封面恰好组合成一张图像.这种方式比较符合审美标 ...
- Java编程思想 笔记
date: 2019-09-06 15:10:00 updated: 2019-09-24 08:30:00 Java编程思想 笔记 1. 四类访问权限修饰词 \ 类内部 本包 子类 其他包 publ ...
- vue 路由知识点(一级路由与二级路由嵌套)
本人小白一个,如果问题,麻烦大神指点, 一级路由: path:'/' 默认为显示; 二级路由: path: '',默认显示为index组件,因为二级路有没有写index组件,所以使用redirect: ...
- JUC---11单例模式
一.什么是单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.这种模式涉及到一个单一的类,该 ...
- 字符串截取 slice,substr,substring 的区别
一 只传递一个参数时候 let str = '0123456'; str.slice(5); //'56' str.substr(5); // '56' str.substring(5); // '5 ...
- mysql presto 函数收集
格式化日期 presto: select date_format(CURRENT_DATE - INTERVAL '1' month, '%Y-%m') mysql:date_format(DATE ...
- SP22343 Norma--序列分治
Norma 传送门 题意简化: 定义一个区间的贡献为 \(max*min*len\),求给定序列中所有子区间的总贡献和 题解 考虑 \(O(n*log_2n)\) 的复杂度的做法 数据结构??? yz ...
- Spring 5的最后一个特性版本5.3发布,4.3将于12月终止维护
10月27日,Spring Framework团队宣布了5.3版本正式GA,Spring用户可以在repo.spring.io和Maven Central上获取到最新版本的依赖包. JDK的版本支持 ...
- 【漏洞复现】Shiro<=1.2.4反序列化漏洞
0x01 概述 Shiro简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从 ...