【题意】一开始车上有编号为0~a的红茶,过程中出现的红茶编号仅有[0,b),有三种操作:

1.买进编号未在车上出现过的红茶。

2.丢掉车上指定编号的红茶。

3.将最早丢出去的红茶捡回来。

每次操作后求编号最小的不在车上的红茶。

【算法】单调队列

【题解】本题最重要的性质在于早丢早捡

因此,当进行丢掉编号为x的红茶这一操作时,如果编号>x的红茶早丢,那么也一定早捡,所以这些红茶没有贡献。

所以用单调队列维护所有有效的红茶,那么捡回来的时候判断是否队头,每次答案就是min(队头,maxs+1),maxs是当前已买过的红茶编号。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
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;
const int maxn=2000010;
int p[maxn];
bool A[maxn],B[maxn];
int q[maxn],head,tail;
queue<int>Q;
void ins(int x){while(head<tail&&q[tail-1]>x)tail--;q[tail++]=x;
}
int main(){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);memset(A,0,sizeof(A));memset(B,0,sizeof(B));head=0;tail=0;for(int i=0;i<=a;i++)A[i]=B[i]=1;while(!Q.empty())Q.pop();int ans=a+1,maxs=a;for(int i=1;i<=m;i++){bool ok=1;if(p[i]==-1){if(Q.empty()||d)ok=0;else{int x=Q.front();A[x]=1;Q.pop();if(head<tail&&q[head]==x)head++;if(head<tail)ans=min(maxs+1,q[head]);else ans=maxs+1;}}else if(!B[p[i]]){A[p[i]]=B[p[i]]=1;while(B[maxs+1]){if(ans==maxs+1)ans++;maxs++;}if(head<tail&&maxs+1>=q[head])ans=q[head];}else if(A[p[i]]){if(d)ok=0;else{Q.push(p[i]);A[p[i]]=0;ins(p[i]);ans=min(ans,q[head]);}}else{if(Q.empty()||d)ok=0;else{int x=Q.front();A[x]=1;Q.pop();if(head<tail&&q[head]==x)head++;if(head<tail)ans=min(maxs+1,q[head]);else ans=maxs+1;}}if(!ok)cur_ans=0;else cur_ans=ans;update_ans(ans_sum,cur_ans,i);}printf("%u\n",ans_sum);}return 0;
}

View Code

转载于:https://www.cnblogs.com/onioncyc/p/7791471.html

【LibreOJ】#541. 「LibreOJ NOIP Round #1」七曜圣贤相关推荐

  1. LibreOJ NOIP Round #1」七曜圣贤

    B. 七曜圣贤 内存限制:1024 MiB时间限制:2500 ms标准输入输出 题目类型:传统评测方式:文本比较 题目描述 本题 C/C++ 时限 2.5 秒,Pascal 时限 5 秒.最后将改时限 ...

  2. 「LibreOJ NOIP Round #1」旅游路线

    「LibreOJ NOIP Round #1」旅游路线 题目链接 做法: 首先肯定要预处理些东西,来使单词询问达到\(o(logn)\)或者\(o(1)\)的复杂度,又因为距离这个东西的范围太大,我们 ...

  3. LOJ#538. 「LibreOJ NOIP Round #1」数列递推

    description sosusosu 虐爆 OI 之后成为了一名文化课选手.一天,他做作业碰到了一堆数列问题,每道题给出的数列都是以下形式: 给定一个下标从000开始,无限长的整数列ai{a_{i ...

  4. LOJ#539. 「LibreOJ NOIP Round #1」旅游路线

    n<=100,m<=1000的图,在此图上用油箱容量C<=1e5的车来旅行,旅行时,走一条边会耗一单伟油,在点i时,若油量<ci,则可以把油以pi的价格补到ci,pi<= ...

  5. libreoj #514. 「LibreOJ β Round #2」模拟只会猜题意

    给定一个长度为 nnn 的序列 AAA . 定义 f(l,r)=∑i=lrAif(l,r)=\sum_{i=l}^{r} A_{i}f(l,r)=∑​i=l​r​​A​i​​. 询问 mmm 次,每次 ...

  6. [匹配+拓扑] LibreOJ #521. 「LibreOJ β Round #3」绯色 IOI(抵达)

    题意 戳这里 题解 这题一开始感觉无从下手,所以我们要尝试得到一些结论. 自己画一画可以发现,一定是两两互为对方的庇护所.这样才有可能保证任意两个不同的城市庇护所不同.否则由于原图没有环,到后面必定会 ...

  7. [结论] LibreOJ #520. 「LibreOJ β Round #3」绯色 IOI(开端)

    题意 戳这里 题解 这是一道结论题. 我们先把数放到数轴上考虑.定义两个点的距离为几何上的距离的平方. 我们可以把一个回路看作两条从 11 到 nn 的不相交的路径. 有一种经典的二路取数的 O(n2 ...

  8. [loj#539][LibreOJ NOIP Round #1]旅游路线_倍增_dp

    「LibreOJ NOIP Round #1」旅游路线 题目链接:https://loj.ac/problem/539 题解: 这个题就很神奇 首先大力$dp$很好想,因为可以把一维放到状态里以取消后 ...

  9. 「LibreOJ Round #11」Misaka Network 与求和(杜教筛 + Min_25)

    #572. 「LibreOJ Round #11」Misaka Network 与求和 推式子 ∑i=1n∑j=1nf(gcd(i,j))k∑d=1nf(d)k∑i=1nd∑j=1nd[gcd(i,j ...

最新文章

  1. 高性能Sqlite存储模型对象解密
  2. Andriod监听支付宝收款实现个人支付宝支付接口!附安卓App
  3. 【过程改进】 windows下jenkins常见问题填坑
  4. mysql 备份文件太大_mysql数据库太大了怎么备份
  5. 在C#中调用一个dll函数,其中有个参数为 hdc,如何在C#中得到这个值并传给这个参数呢?
  6. 从头学习计算机网络_如何从头开始构建三层神经网络
  7. day34 数据库入门
  8. Java加密与解密的艺术~数字签名~ECDSA实现
  9. vijos 1071 01背包+输出路径
  10. Service Mesh服务网格:8种方式简化微服务部署
  11. vrpie在Visio Studio 中无法调试的问题
  12. 一步一步学Ruby(五): Class, Module, Object,Kernel的关系
  13. 使用Popup窗口创建无限级Web页菜单(4)
  14. 什么时候用DFS,什么时候用BFS?(DFS和BFS的特点和异同)
  15. 计算机中的PS颜色填充快捷键,ps中填充颜色的快捷键是什么(填充Shift+F5)
  16. IDEA 中添加@author注释(live templates)
  17. AI作画的人机战争走向何方?
  18. 开题报告:基于java新冠疫苗在线预约系统 毕业设计论文开题报告模板
  19. NLP 中文分词-双向匹配算法(理论+Python实现)
  20. 关于计算机的英语作文带翻译100字,求30篇100字英语作文带翻译

热门文章

  1. GPT-4参数将达10兆!此表格预测全新语言模型参数将是GPT-3的57倍
  2. 35岁改行做程序员,需要勇气和决心
  3. 2019年上半年收集到的人工智能图神经网络干货文章
  4. 智能安防赛道上 国产AI芯片力挫群雄
  5. 百度李彦宏:人工智能是万物命脉
  6. SAP EWM - 物料主数据 - EWM系统库存规划 - SLOTTING视图属性
  7. 神经网络中激活函数的真正意义?
  8. 2017 人工智能+内容生产研究报告
  9. 一个没有意义的宇宙我们很难想象
  10. 「反向传播非你原创」,Jürgen发文直指Hinton不应获2019本田奖