2019.01.19 codeforces896C.Willem, Chtholly and Seniorious(ODT)
传送门
ODTODTODT出处(万恶之源)
题目简述:
- 区间赋值
- 区间加
- 区间所有数k次方和
- 区间第k小
思路:直接上ODTODTODT。
不会的点这里
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int N=1e5+5;
typedef long long ll;
typedef pair<ll,int> pli;
vector<pli>q;
struct Node{
int l,r;
mutable ll v;
Node(int l_,int r_=-1,ll v_=0):l(l_),r(r_),v(v_){}
friend inline bool operator<(const Node&a,const Node&b){return a.l<b.l;}
};
set<Node>S;
typedef set<Node>::iterator It;
inline It split(int pos){
It it=S.lower_bound(Node(pos));
if(it!=S.end()&&it->l==pos)return it;
--it;
int l=it->l,r=it->r;
ll v=it->v;
return S.erase(it),S.insert(Node(l,pos-1,v)),S.insert(Node(pos,r,v)).first;
}
inline int ksm(ll a,int p,ll mod){int ret=1;a%=mod;for(;p;p>>=1,a=a*a%mod)if(p&1)ret=a*ret%mod;return ret;}
inline void assign(int l,int r,ll v){
It R=split(r+1),L=split(l);
return S.erase(L,R),(void)S.insert(Node(l,r,v));
}
inline void add(int l,int r,ll v){
It L=split(l),R=split(r+1);
for(It it=L;it!=R;++it)(it->v)+=v;
}
inline ll Rank(int l,int r,int kth){
It R=split(r+1),L=split(l);
q.clear();
for(It it=L;it!=R;++it)q.push_back(pli(it->v,it->r-it->l+1));
sort(q.begin(),q.end());
for(ri i=0;i<q.size();++i){
kth-=q[i].second;
if(kth<=0)return q[i].first;
}
return -1;
}
inline ll query(int l,int r,int k,ll mod){
ll ret=0;
It L=split(l),R=split(r+1);
for(It it=L;it!=R;++it)ret=(ret+(ll)(it->r-it->l+1)*ksm(it->v,k,mod)%mod)%mod;
return ret;
}
int n,m,vmax,seed;
inline int rd(){
int ret=seed;
seed=(7ll*seed+13)%1000000007;
return ret;
}
int main(){
n=read(),m=read(),seed=read(),vmax=read();
for(ri i=1;i<=n;++i)S.insert(Node(i,i,rd()%vmax+1));
for(ri i=1,op,L,R,x,y;i<=m;++i){
op=rd()%4+1,L=rd()%n+1,R=rd()%n+1;
if(L>R)swap(L,R);
if(op==3)x=rd()%(R-L+1)+1;
else x=rd()%vmax+1;
if(op==4)y=rd()%vmax+1;
switch(op){
case 1:add(L,R,x);break;
case 2:assign(L,R,x);break;
case 3:cout<<Rank(L,R,x)<<'\n';break;
default:cout<<query(L,R,x,y)<<'\n';
}
}
return 0;
}
2019.01.19 codeforces896C.Willem, Chtholly and Seniorious(ODT)的更多相关文章
- 2019.01.19 洛谷P2787 语文1(chin1)- 理理思维(ODT)
传送门 ODTODTODT水题. 题意:有一个字母序列,支持区间赋值,查询区间某个字母的数量,区间按字母序排序. 思路: 可以开262626棵线段树搞过去,然而也可以用ODTODTODT秒掉. 如果用 ...
- [Codeforces896C] Willem, Chtholly and Seniorious (ODT-珂朵莉树)
无聊学了一下珂朵莉树 珂朵莉树好哇,是可以维护区间x次方和查询的高效数据结构. 思想大致就是一个暴力(相对而言)的树形数据结构 lxl毒瘤太强了,发明了ODT算法(Old Driver Tree老司机 ...
- 【Cf #449 C】Willem, Chtholly and Seniorious(set维护线段)
这里介绍以个小$trick$,民间流传为$Old Driver Tree$,实质上就是$set$维护线段. 我们将所有连续一段权值相同的序列合并成一条线段,扔到$set$里去,于是$set$里的所有线 ...
- CF896C Willem, Chtholly and Seniorious(珂朵莉树)
中文题面 珂朵莉树的板子……这篇文章很不错 据说还有奈芙莲树和瑟尼欧里斯树…… 等联赛考完去学一下(逃 //minamoto #include<bits/stdc++.h> #define ...
- 2019.01.17 bzoj2753: [SCOI2012]滑雪与时间胶囊(最小生成树)
传送门 最小生成树菜题. 题意:给出一些有向边,问有向的最小生成树. 思路:先dfsdfsdfs一把所有有用的边都存起来,然后按终点点权为第一关键字,边权为第二关键字给边排序保证最小生成树的合法性,排 ...
- 2019.01.02 NOIP训练 三七二十一(生成函数)
传送门 生成函数基础题. 题意简述:求由1,3,5,7,9这5个数字组成的n位数个数,要求其中3和7出现的次数都要是偶数. 考虑对于每个数字构造生成函数. 对于1,5,9:∑nxnn!=ex\sum_ ...
- 【2019.5.19】接口测试及python基础(一)
一.接口 1.什么是接口: 简单的说,接口就是从数据库获取数据. 2.前端和后端: 2.1前端client: 对于web来说,打开的网页,我们所看到的就是前端,前端语言包括html.JS.CSS: ...
- Willem, Chtholly and Seniorious
Willem, Chtholly and Seniorious https://codeforces.com/contest/897/problem/E time limit per test 2 s ...
- CF&&CC百套计划1 Codeforces Round #449 C. Willem, Chtholly and Seniorious (Old Driver Tree)
http://codeforces.com/problemset/problem/896/C 题意: 对于一个随机序列,执行以下操作: 区间赋值 区间加 区间求第k小 区间求k次幂的和 对于随机序列, ...
随机推荐
- int 和 Integer 的区别
1.两个New生成的Integer 永远不相等,因为他们的内存地址不相等 2.如果一个是New生成的Integer 另一个是通过赋值生成的话,如果值相等那么他们相等,因为这时Integer会通过自动拆 ...
- unity实现3D物体上的事件监听处理
想要在3D物体上实现全套事件监听处理: OnMouse系列 OnTrigger系列 OnPointer系列 OnDrag系列 1.在相机中添加Physics Raycaster组件 2.3D物体上 ...
- 从零开始写bootloader(2)
下图是设置内核启动参数的存放图示,由于bootloader启动内核时,需要给内核传输一些启动参数,但是由于当bootloader把内核 启动之后,程序就跳转到内核中执行了,再也不会回到bootload ...
- 微信小程序开发——连续快速点击按钮调用小程序api返回后仍然自动重新调用的异常处理
前言: 小程序开发中诸如获取用户手机号码.调起微信支付.领取卡券等api都是会有一定的延迟的.也就是说通过点击按钮调用这些api的时候,从点击按钮调用api,到支付页面或者领取卡券界面展示出来是需要一 ...
- openal支持的通道数和声道数
alext.h: #define AL_FORMAT_QUAD8 0x1204 101 #define AL_FORMAT_QUAD16 0x1205 102 #define AL_FORMAT_Q ...
- f5 Syslog管理
1.本地log保存7天.可输出至syslog服务器 local traffic 对应ltm
- bbs项目富文本编辑器实现上传文件到media目录
media目录是在project的settings中设置的,static目录是django自己使用的静态文件的上传目录,media目录是用户自定义上传文件的目录 # Django用户上传的文件都放在m ...
- [leetcode]449. Serialize and Deserialize BST序列化与反序列化BST
Serialization is the process of converting a data structure or object into a sequence of bits so tha ...
- java 图片的自定义大小
java 小功能,进行图片的自定义大小 package com.project.video.controller; import java.awt.Color; import java.awt.Gra ...
- ios UIScrolloView在storyboard中添加约束
1.在storyboard中如果有UINavigationbar 或 UITabar 布局的时候需要在控制器中勾选掉 Under Top Bars 和 Under Bottom Bars 这两个选项. ...