选择其中卡片总数较少的一类,当相同时选择$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的更多相关文章

  1. 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 ...

  2. 1.1 NCE21 Daniel Mendoza

    1.text translation Two hundred years ago, boxing matches were very popular in England. At that time/ ...

  3. 代码本色 用编程模拟自然系统 (Daniel Shiffman 著)

    https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/p5.js http://www.box2d.org http://www.jbox2d.org ...

  4. Bad Day -- Daniel Powter

                                     Bad Day Bad Day (坏天气) 来自 Daniel Powter -- 2005年MTV欧洲音乐奖提名最佳新人, 出自专辑 ...

  5. lesson 21 Daniel Mendoza

    lesson 21 Daniel Mendoza bare 赤裸的 :boxers fought with bare fists crude 天然的:crude sugar, crude oil 粗俗 ...

  6. 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 ...

  7. CF1245F: Daniel and Spring Cleaning

    CF1245F: Daniel and Spring Cleaning 题意描述: 给定区间\([L,R]\),其中 \((0\leq L,R\leq 10^9)\),问在区间内有多少数对\((x,y ...

  8. 『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 ...

  9. 『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 ...

随机推荐

  1. 地形鞍部的提取(ArcPy实现)

    1.背景 相邻两山头之间呈马鞍形的低凹部分称为鞍部.鞍部点是重要的地形控制点,它和山顶点.山谷点及山脊线.山谷线等构成地形特征点线,对地形具有很强的控制作用.因此,因此,对这些地形特征点.线的分析研究 ...

  2. Java爬虫系列四:使用selenium-java爬取js异步请求的数据

    在之前的系列文章中介绍了如何使用httpclient抓取页面html以及如何用jsoup分析html源文件内容得到我们想要的数据,但是有时候通过这两种方式不能正常抓取到我们想要的数据,比如看如下例子. ...

  3. SQL Server 数据库单用户模式处理

    在还原数据库bak备份文件时,由于某种原因(具体何种原因在此不进行分析)导致数据库还原后处于单用户模式,如下图: 单个用户模式导致,数据库无法打开,只能通过脚本去查询数据库内的表,然后进行查询数据,极 ...

  4. .Net微信服务商平台ApiV3接口

    最近做个对接微信服务商平台的小程序项目,大概要实现的流程是:a)特约商户进件 > b)生成带参数的小程序码 > c)小程序支付 > d)分账,记录一下,希望能对需要的朋友有所帮助 开 ...

  5. 一文彻底搞通TCP之send & recv原理

    接触过网络开发的人,大抵都知道,上层应用使用send函数发送数据,使用recv来接收数据,而send和recv的实现原理又是怎样的呢? 在前面的几篇文章中,我们有提过,TCP是个可靠的.全双工协议.其 ...

  6. 详解python三大器——迭代器、生成器、装饰器

    迭代器 聊迭代器前我们要先清楚迭代的概念:通常来讲从一个对象中依次取出数据,这个过程叫做遍历,这个手段称为迭代(重复执行某一段代码块,并将每一次迭代得到的结果作为下一次迭代的初始值). 可迭代对象(i ...

  7. bash反弹shell

    part1:不求甚解的本地复现 攻击端Debian 10.x:  192.168.208.134 受害端Ubuntu : 192.168.208.135 攻击端打开(监听)某端口:  键入命令:[nc ...

  8. NOIP模拟83(多校16)

    前言 CSP之后第一次模拟赛,感觉考的一般. 不得不吐槽多校联测 OJ 上的评测机是真的慢... T1 树上的数 解题思路 感觉自己思维有些固化了,一看题目就感觉是线段树. 考完之后才想起来这玩意直接 ...

  9. [Beta]the Agiles Scrum Meeting 5

    会议时间:2020.5.19 20:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 为评测机增加更多评测指标 评测部分增加更多评测指标 tq 为评测机增加更多评测指标 ...

  10. Pandas核心用法

    目录 Numpy和Pandas Numpy科学计算 Pandas数据分析 安装jupyter notebook Numpy语法 创建和基本使用 切片索引 布尔索引 对位运算 矩阵的乘除 其他方法 Pa ...