题解

传送门

题解

然而要我来说我感觉只是个爆搜啊……

//minamoto
#include<bits/stdc++.h>
#define R register
#define ll long long
#define ls (p<<1)
#define rs (p<<1|1)
#define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){R int res,f=1;R char ch;while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');return res*f;
}
inline char getop(){R char ch;while((ch=getc())>'Z'||ch<'A');return ch;}
char sr[1<<21],z[20];int C=-1,Z=0;
inline void Ot(){fwrite(sr,1,C+1,stdout),C=-1;}
void print(R ll x){if(C>1<<20)Ot();if(x<0)sr[++C]='-',x=-x;while(z[++Z]=x%10+48,x/=10);while(sr[++C]=z[Z],--Z);sr[++C]='\n';
}
const int N=2e5+5;
int r[N<<2],mx[N<<2],mn[N<<2],v[N],n,m,x0,ql,qr;ll res,a,b,c;char op;
inline int Rand(){x0=(1ll*100000005*x0+20150609)%998244353;return x0/100;}
inline void ppd(R int p){r[p]^=1,swap(mn[p],mx[p]),mn[p]=100000-mn[p],mx[p]=100000-mx[p];}
inline void pd(R int p){if(r[p])r[p]=0,ppd(ls),ppd(rs);}
inline void upd(R int p){mx[p]=max(mx[ls],mx[rs]),mn[p]=min(mn[ls],mn[rs]);}
void build(int p,int l,int r){if(l==r)return mx[p]=mn[p]=v[l],void();int mid=(l+r)>>1;build(ls,l,mid),build(rs,mid+1,r);upd(p);
}
void update(int p,int l,int r,int x,int t){if(l==r)return mx[p]=mn[p]=t,void();int mid=(l+r)>>1;pd(p);x<=mid?update(ls,l,mid,x,t):update(rs,mid+1,r,x,t);upd(p);
}
void rev(int p,int l,int r){if(ql<=l&&qr>=r)return ppd(p);int mid=(l+r)>>1;pd(p);if(ql<=mid)rev(ls,l,mid);if(qr>mid)rev(rs,mid+1,r);upd(p);
}
inline ll calc(R int x,R int y){return 1ll*x*a+1ll*y*b+1ll*x*y*c;}
void query(int p,int l,int r){int mid=(l+r)>>1;pd(p);if(ql<=l&&qr>=r){if(l==r)return cmax(res,calc(l,mx[p])),void();if(calc(r,mx[rs])>res)query(rs,mid+1,r),void();if(calc(mid,mx[ls])>res)query(ls,l,mid),void();return;}if(ql<=mid)query(ls,l,mid);if(qr>mid)query(rs,mid+1,r);
}
int main(){
//  freopen("testdata.in","r",stdin);n=read(),m=read(),x0=read();fp(i,1,n)v[i]=Rand()%100001;build(1,1,n);while(m--){op=getop(),ql=Rand(),qr=Rand();if(op=='C')ql=ql%n+1,qr=qr%100001,update(1,1,n,ql,qr);else{ql=ql%n+1,qr=qr%n+1;if(ql>qr)swap(ql,qr);if(op=='R')rev(1,1,n);else a=read(),b=read(),c=read(),res=0,query(1,1,n),print(res);}}return Ot(),0;
}

转载于:https://www.cnblogs.com/bztMinamoto/p/10451332.html

uoj#119. 【UR #8】决战圆锥曲线(线段树+复杂度分析)相关推荐

  1. UOJ #164 [清华集训2015]V (线段树)

    题目链接 http://uoj.ac/problem/164 题解 神仙线段树题. 首先赋值操作可以等价于减掉正无穷再加上\(x\). 假设某个位置从前到后的操作序列是: \(x_1,x_2,..., ...

  2. 【loj6029】「雅礼集训 2017 Day1」市场 线段树+均摊分析

    题目描述 给出一个长度为 $n$ 的序列,支持 $m$ 次操作,操作有四种:区间加.区间下取整除.区间求最小值.区间求和. $n\le 100000$ ,每次加的数在 $[-10^4,10^4]$ 之 ...

  3. UOJ#7. 【NOI2014】购票 | 线段树 凸包优化DP

    题目链接 UOJ #7 题解 首先这一定是DP!可以写出: \[f[i] = \min_{ancestor\ j} \{f[j] + (d[j] - d[i]) * p[i] + q[i]\}\] 其 ...

  4. AcWing 蓝桥杯AB组辅导课 05、树状数组与线段树

    文章目录 前言 一.树状数组 1.1.树状数组知识点 1.2.树状数组代码模板 模板题:AcWing 1264. 动态求连续区间和 例题 例题1.AcWing 1265. 数星星[中等,信息学奥赛一本 ...

  5. UOJ #164 【清华集训2015】V (线段树)

    题目链接 http://uoj.ac/problem/164 题解 神仙线段树题. 首先赋值操作可以等价于减掉正无穷再加上\(x\). 假设某个位置从前到后的操作序列是: \(x_1,x_2,..., ...

  6. 模板三连击:树状数组+线段树+主席树

    没事儿干,复习模板...... 1.树状数组 本来不想写这个的,但是反正就几分钟就打完了,所以就写了,水AC数. 洛谷 P3374 [模板]树状数组 1 1 #include<cstdio> ...

  7. 【UOJ#388】【UNR#3】配对树(线段树,dsu on tree)

    [UOJ#388][UNR#3]配对树(线段树,dsu on tree) 题面 UOJ 题解 考虑一个固定区间怎么计算答案,把这些点搞下来建树,然后\(dp\),不难发现一个点如果子树内能够匹配的话就 ...

  8. BZOJ 4732 UOJ #268 [清华集训2016]数据交互 (树链剖分、线段树)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=4732 (UOJ) http://uoj.ac/problem/268 题解 ...

  9. UOJ #268 BZOJ 4732 [清华集训2016]数据交互 (树链剖分、线段树)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=4732 (UOJ) http://uoj.ac/problem/268 题解 ...

最新文章

  1. 梭子鱼推出Microsoft Office 365 邮件威胁扫描服务
  2. win10只有c盘怎么分区_电脑技巧分享:安装win10系统时系统盘C盘分区多大空间适合?...
  3. Python字典中你必须知道的用法
  4. ML.NET机器学习、API容器化与Azure DevOps实践(四):持续集成与k8s持续部署
  5. 【C++grammar】析构、友元、拷贝构造函数、深浅拷贝
  6. fastai学习——第二个问题
  7. Oracle Spatial 创建空间表、添加空间原表信息、添加删除空间索引
  8. SQL Server时间粒度系列----第4节季、年时间粒度详解
  9. javaScripct入门教程
  10. 网上图书商城项目学习笔记-034订单管理
  11. ajax java servlet_$.ajax(); 对应后台java servlet?
  12. 42pinQFN芯片焊接总结
  13. 【Lintcode】507. Wiggle Sort II
  14. 厦门大学LaTeX毕业论文模板:中英文双目录
  15. gpio引脚介绍 树莓派3b_树莓派4的GPIO接口介绍
  16. Excel从手机号和座机号混合文本中提取手机号码
  17. Dell OptiPlex 7040拆机组装全记录
  18. 关于*.md文件打开的问题及图片丢失
  19. VMware下安装win10启动后进入Boot Manger界面如何解决
  20. Linux内核4.14版本——mmc core(4)——card相关模块(mmc type card)

热门文章

  1. linux 运行pfx文件,Linux下pfx证书导出key和crt
  2. 全国计算机等级考试题库二级C操作题100套(第89套)
  3. python dataframe 查看为空值_Python pandas.DataFrame 找出有空值的行
  4. html中免费的四级联动,利用JS实现省市区街道四级联动插件
  5. android java 指针,opencv android:向我的代码中添加cascade分类器后出现空指针异常
  6. css改变指针形状,css 指针样式
  7. java 负数存储结构_负数在java中的存储和读取过程 | 学步园
  8. 前端:JS实现数组去重常用的六种方法介绍
  9. 开发工具:IDEA 2021.1 的 Win/Mac 快捷键大全!!
  10. linux vim基本操作,vim基本操作笔记