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. day01计算机组成与操作系统

    1.什么是编程语言编程语言是程序员与计算机之间的沟通介质 2.什么是编程编程的过程就是程序员通过某种语言将命令给到计算机并让计算机表达出来 修改后:编程就是程序员按照某种语法规则将自己想让计算机做的事 ...

  2. HDU 2048:神、上帝以及老天爷(错排公式,递推)

    神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  3. CentOS7为firewalld添加开放端口及相关操作

    1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disabl ...

  4. C++学习(二十八)(C语言部分)之 文件操作

    复习:#define 定义一个宏#include 文件包含#if 条件防止头文件重复包含定义一个宏 判断宏是否定义 判断头文件是否包含#define _STDIO_H_#include<stdi ...

  5. DBUtils和连接池

    今日内容介绍 1.DBUtils 2.连接池 ###01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数 ...

  6. RPC简介及框架选择

    简单介绍RPC协议及常见框架,对比传统restful api和RPC方式的优缺点.常见RPC框架,gRPC及序列化方式Protobuf等 HTTP协议 http协议是基于tcp协议的,tcp协议是流式 ...

  7. jenkins 集成 keycloak 认证

    keycloak 是很不错的sso 工具,当然也有Jenkins 的插件,我们可以使用jenkins 插件,方便用户账户的管理 环境准别 docker-compose version: "3 ...

  8. BinaryReader 自己写序列化

    听说过BinaryReader和BinaryWriter吗? 序列化无非就是网络通信时所使用的传输数据的方式,而BinaryWriter可以将数据以二进制的方式写入到流当中.比如Int32型的1用Bi ...

  9. 笔记:Javascript 会提升变量声明

    笔记:Javascript 会提升变量声明 Javascript 会自动提升变量声明,但不会提升变量赋值. 如下代码, 按 F12 控制器显示的是 Hello, undefined 说明只是把 b 了 ...

  10. reduceByKey和groupByKey区别与用法

    在spark中,我们知道一切的操作都是基于RDD的.在使用中,RDD有一种非常特殊也是非常实用的format——pair RDD,即RDD的每一行是(key, value)的格式.这种格式很像Pyth ...