[cf1495E]Qingshan and Daniel
选择其中卡片总数较少的一类,当相同时选择$t_{1}$所对应的一类(以下记作$A$类)
如果$t_{1}$不是$A$类,就先对$t_{1}$操作一次(即令$a_{1}$减少1)
下面,问题即不断删去$A$类中的一张卡片,再删除另一类中的一张卡片,直至$A$中卡片被删光
事实上,$A$类中卡片删除顺序与最终另一类卡片剩余卡片的位置无关,具体证明考虑交换$A$中两张相邻卡片的删除顺序,并分类讨论来说明不影响即可
由此,不妨假设$A$类卡片是从左到右依次删除(即删完一叠后删除下一叠),每一张删除时都找到下一叠未完全删除的非$A$类卡片,并删除其中一张
对于这个过程,可以用下述方法维护:
记录一个变量$s$,表示$A$中当前还有几张卡片没有对应的删除
若当前为$A$类,令$s$加上这一叠的卡片数
若当前为$B$类,从中删除$\min(s,这一叠的卡片数)$,同时$s$也减去这个值
由于是环,所以重复一次即可
时间复杂度为$o(n)$,可以通过

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 5000005
4 #define mod 1000000007
5 #define ll long long
6 int n,m,p,x,y,seed,base,a[N],t[N],ans[N];
7 ll s,tot[3];
8 int rnd(){
9 int ans=seed;
10 seed=(1LL*seed*base+233)%mod;
11 return ans;
12 }
13 int main(){
14 scanf("%d%d",&n,&m);
15 int lst=0;
16 for(int i=1;i<=m;i++){
17 scanf("%d%d%d%d",&x,&y,&seed,&base);
18 for(int j=lst+1;j<=x;j++){
19 t[j]=rnd()%2+1;
20 a[j]=rnd()%y+1;
21 }
22 lst=x;
23 }
24 for(int i=1;i<=n;i++)tot[t[i]]+=a[i];
25 if (tot[1]!=tot[2]){
26 if (tot[1]<tot[2])p=1;
27 else p=2;
28 }
29 else p=t[1];
30 if (p!=t[1]){
31 a[1]--;
32 ans[1]++;
33 }
34 for(int i=1;i<=n;i++)
35 if (t[i]==p){
36 s+=a[i];
37 ans[i]+=a[i];
38 a[i]=0;
39 }
40 else{
41 int x=min((ll)a[i],s);
42 ans[i]+=x;
43 s-=x;
44 a[i]-=x;
45 }
46 for(int i=1;i<=n;i++)
47 if (t[i]==p){
48 s+=a[i];
49 ans[i]+=a[i];
50 a[i]=0;
51 }
52 else{
53 int x=min((ll)a[i],s);
54 ans[i]+=x;
55 s-=x;
56 a[i]-=x;
57 }
58 ans[0]=1;
59 for(int i=1;i<=n;i++)ans[0]=((ans[i]^(1LL*i*i))+1)%mod*ans[0]%mod;
60 printf("%d",ans[0]);
61 }
[cf1495E]Qingshan and Daniel的更多相关文章
- Disposable microfluidic devices: fabrication, function, and application Gina S. Fiorini and Daniel T
Disposable microfluidic devices: fabrication, function, and application Gina S. Fiorini and Daniel T ...
- 1.1 NCE21 Daniel Mendoza
1.text translation Two hundred years ago, boxing matches were very popular in England. At that time/ ...
- 代码本色 用编程模拟自然系统 (Daniel Shiffman 著)
https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/p5.js http://www.box2d.org http://www.jbox2d.org ...
- Bad Day -- Daniel Powter
Bad Day Bad Day (坏天气) 来自 Daniel Powter -- 2005年MTV欧洲音乐奖提名最佳新人, 出自专辑 ...
- lesson 21 Daniel Mendoza
lesson 21 Daniel Mendoza bare 赤裸的 :boxers fought with bare fists crude 天然的:crude sugar, crude oil 粗俗 ...
- Codeforces Round #597 (Div. 2) F. Daniel and Spring Cleaning 数位dp
F. Daniel and Spring Cleaning While doing some spring cleaning, Daniel found an old calculator that ...
- CF1245F: Daniel and Spring Cleaning
CF1245F: Daniel and Spring Cleaning 题意描述: 给定区间\([L,R]\),其中 \((0\leq L,R\leq 10^9)\),问在区间内有多少数对\((x,y ...
- 『BASH』——Learn BashScript from Daniel Robbins——[003]
ABSTRACT: Daniel Robbins is best known as the creator of Gentoo Linux and author of many IBM develop ...
- 『BASH』——Learn BashScript from Daniel Robbins——[001-002]
ABSTRACT: Daniel Robbins is best known as the creator of Gentoo Linux and author of many IBM develop ...
随机推荐
- Winfrom窗体初始化和窗体Load方法前后
运行结果为 [窗体初始化之前!]>[窗体初始化!]>[窗体Load!]
- Nginx安装及核心配置解析
安装 使用yum进行安装 yum install -y nginx 查看nginx的安装位置 whereis nginx 启动测试 nginx 核心配置文件结构 读取Nginx自带的Nginx配置文件 ...
- 深入理解java中main方法
理解main方法语法 深入理解main方法: 解释main方法的形式:public static void main(String[] args){} main方法调用者:虚拟机 java虚拟机需要调 ...
- 第五课第四周笔记2:Self-Attention 自注意力
Self-Attention 自注意力 让我们跳进去谈谈transformer的self-attention机制.如果您能了解本视频背后的主要思想,您就会了解变压器网络工作背后最重要的核心思想. 让我 ...
- Sequence Model-week1编程题2-Character level language model【RNN生成恐龙名 LSTM生成莎士比亚风格文字】
Character level language model - Dinosaurus land 为了构建字符级语言模型来生成新的名称,你的模型将学习不同的名字,并随机生成新的名字. 任务清单: 如何 ...
- [no_code]团队任务拆解Alpha
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 团队任务拆解 我们在这个课程的目标是 远程协同工作,采用最新技术开发软件 这个作业在哪个具体方面帮 ...
- 2019OO第三单元作业总结
OO第三单元的作业主题是JML规格化设计,作业以图及图的最短路径相关计算为载体,体现接口的规格化设计. ------------------------------------------------ ...
- Ubuntu用apt安装MySQL
这里以MySQL5.7为例. # 如果之前有安装旧版,先移除sudo apt-get --purge remove mysql-server mysql-client mysql-common # 安 ...
- uvm_subscriber
subscriber是消费,用户的意思 uvm_subscriber主要作为coverage的收集方式之一 uvm_subscriber的代码非常简单,继承于uvm_component,再加上一个an ...
- 力扣 - 剑指 Offer 58 - I. 翻转单词顺序
题目 剑指 Offer 58 - I. 翻转单词顺序 思路1 假如题目要求我们翻转字符串,那么我们可以从末尾往前开始遍历每一个字符,同时将每一个字符添加到临时空间,最后输出临时空间的数据就完成翻转了, ...