http://uoj.ac/problem/119

可以认为数据基本随机,于是可以直接用线段树维护,对每个询问在线段树上进行剪枝搜索。

#include<bits/stdc++.h>
typedef long long i64;
char ib[],*ip=ib,ob[],*op=ob;
int _(){
int x=;
while(*ip<)++ip;
while(*ip>)x=x*+*ip++-;
return x;
}
void pr(i64 x){
int ss[],sp=;
do ss[++sp]=x%;while(x/=);
while(sp)*op++=ss[sp--]+;
*op++=;
}
i64 max(i64 a,i64 b){return a>b?a:b;}
int n,m,seed,_l,_r;
i64 A,B,C,ans;
int mt(){
seed=(seed*100000005ll+)%;
return seed/;
}
struct node{
node*lc,*rc;
int L,R,M;
int rv;
i64 y1,y2,xy1,xy2;
void _rv(){
std::swap(y1,y2);
std::swap(xy1,xy2);
rv^=;
}
void dn(){
if(rv){
rv=;
lc->_rv();
rc->_rv();
}
}
void up(){
y1=max(lc->y1,rc->y1);
y2=max(lc->y2,rc->y2);
xy1=max(lc->xy1,rc->xy1);
xy2=max(lc->xy2,rc->xy2);
}
void init(int v){
y1=v,y2=-v;
xy1=i64(L)*y1,xy2=i64(L)*y2;
}
void chg(){
if(L==R)return init(A);
dn();
(_l<=M?lc:rc)->chg();
up();
}
void rev(){
if(_l<=L&&R<=_r)return _rv();
dn();
if(_l<=M)lc->rev();
if(_r>M)rc->rev();
up();
}
i64 cal(){
return A*R+B*y1+C*xy1;
}
void find(i64 v){
if(_l>R||_r<L||v<=ans)return;
if(L==R)return void(ans=v);
dn();
i64 vl=lc->cal(),vr=rc->cal();
if(vl>vr)lc->find(vl),rc->find(vr);
else rc->find(vr),lc->find(vl);
}
}ns[],*np=ns,*rt;
node*build(int L,int R){
node*w=np++;
w->L=L,w->R=R;
if(L<R){
int M=w->M=L+R>>;
w->lc=build(L,M);
w->rc=build(M+,R);
w->up();
}else w->init(mt()%);
return w;
}
int main(){
fread(ib,,sizeof(ib),stdin);
n=_(),m=_(),seed=_();
rt=build(,n);
while(m--){
int o=_();
if(o=='C'-){
_l=mt()%n+,A=mt()%;
rt->chg();
}else{
_l=mt()%n+,_r=mt()%n+;
if(_l>_r)std::swap(_l,_r);
if(o=='R'-){
rt->rev();
}else{
A=_(),B=_(),C=_();
ans=;
if(A|B|C)rt->find(rt->cal());
pr(ans);
}
}
}
fwrite(ob,,op-ob,stdout);
return ;
}

uoj#119. 【UR #8】决战圆锥曲线的更多相关文章

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

    题解 传送门 题解 然而要我来说我感觉只是个爆搜啊-- //minamoto #include<bits/stdc++.h> #define R register #define ll l ...

  2. UOJ 【UR #5】怎样跑得更快

    [UOJ#62]怎样跑得更快 题面 这个题让人有高斯消元的冲动,但肯定是不行的. 这个题算是莫比乌斯反演的一个非常巧妙的应用(不看题解不会做). 套路1: 因为\(b(i)\)能表达成一系列\(x(i ...

  3. UOJ #22 UR #1 外星人

    LINK:#22. UR #1 外星人 给出n个正整数数 一个初值x x要逐个对这些数字取模 问怎样排列使得最终结果最大 使结果最大的方案数又多少种? n<=1000,x<=5000. 考 ...

  4. UOJ.52.[UR #4]元旦激光炮(交互 思路)

    题目链接 \(Description\) 交互库中有三个排好序的,长度分别为\(n_a,n_b,n_c\)的数组\(a,b,c\).你需要求出所有元素中第\(k\)小的数.你可以调用至多\(100\) ...

  5. UOJ【UR #12】实验室外的攻防战

    题意: 给出一个排列$A$,问是否能够经过以下若干次变换变为排列$B$ 变换:若${A_i> A_i+1}$,可以${swap(A_i,A_i+1)}$ 考虑一个数字从A排列到B排列连出来的路径 ...

  6. ZJOI2019Round#1

    考的这么差二试基本不用去了 不想说什么了.就把这几天听课乱记的东西丢上来吧 这里是二试乱听课笔记ZJOI2019Round#2 ZJOI Round#1 Day1 M.<具体数学>选讲 罗 ...

  7. 【UOJ#33】【UR#2】树上GCD 有根树点分治 + 容斥原理 + 分块

    #33. [UR #2]树上GCD 有一棵$n$个结点的有根树$T$.结点编号为$1…n$,其中根结点为$1$. 树上每条边的长度为$1$.我们用$d(x,y)$表示结点$x,y$在树上的距离,$LC ...

  8. uoj #118. 【UR #8】赴京赶考 水题

    #118. [UR #8]赴京赶考 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/118 Description ...

  9. uoj #31. 【UR #2】猪猪侠再战括号序列 贪心

    #31. [UR #2]猪猪侠再战括号序列 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/31 Descript ...

随机推荐

  1. ZOJ - 4089 :Little Sub and Isomorphism Sequences (同构 set)

    Little Sub has a sequence . Now he has a problem for you. Two sequences of length and of length are ...

  2. 深入java final关键字

    Java final关键字详解:https://blog.csdn.net/kuangay/article/details/81509164 深入java final关键字 用法注意点和JVM对其进行 ...

  3. 2018.10.25 CCSP马拉松摸铜归来

    24号体测跑50+1000米. 50米抢跑被罚重跑???然后老年人就只能吊着一口仙气跑第二次50米.然后跑1000米,然后再到宿舍收拾行李赶往地铁站,然后再冲到火车站...(卒) 宾馆,三人挤入二人房 ...

  4. Linux命令对应英文全称

    https://blog.csdn.net/yrc_note/article/details/72598780 拓展:https://blog.csdn.net/u010613363/article/ ...

  5. 【BZOJ2300】【SCOI2011】糖果

    差点就忘了还有差分约束这个东西……看见了就要学习一个 原题: 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要 ...

  6. Module Sources

    转自:https://www.terraform.io/docs/modules/sources.html 主要记录module source 的格式 The source argument in a ...

  7. Computer Go Programming 学习

    https://senseis.xmp.net/?ComputerGoProgramming https://www.worldscientific.com/doi/pdf/10.1142/S0218 ...

  8. Unity 5 Game Optimization (Chris Dickinson 著)

    1. Detecting Performance Issues 2. Scripting Strategies 3. The Benefits of Batching 4. Kickstart You ...

  9. 贪吃蛇(c语言实现)

    总结出以下几点: 1.需要多次被包含的头文件里不能定义全局变量,否则会报错“重定义” 2.char *strncpy(char *dest, const char *src, int n), 把src ...

  10. Typescript学习总结之模块

    面向对象的特性 模块 模块可以帮助开发者将代码分割为可重用的单元.开发者可以自己决定将模块中的哪些资源(类.方法.变量) 暴露给外部使用,哪些资源只在模块内使用. 如下图, 创建了a.ts 和b.ts ...