bzoj3932--可持久化线段树
题目大意:
- #include<cstdio>
- #include<iostream>
- #include<cstring>
- #include<algorithm>
- #include<vector>
- using namespace std;
- #define N 100001
- #define ll long long
- inline void Read(long long& x){
- char c=getchar();
- for(;c<''||c>'';c=getchar());
- for(x=;c>=''&&c<='';x=(x<<)+(x<<)+c-,c=getchar());
- }
- inline void Read(int& x){
- char c=getchar();
- for(;c<''||c>'';c=getchar());
- for(x=;c>=''&&c<='';x=(x<<)+(x<<)+c-,c=getchar());
- }
- vector<int>a1[N],a2[N];
- struct node{
- int l,r,s;
- ll w;
- }c[N*];
- struct gj{
- int x,y,z;
- }b[N];
- struct ls{
- int w,f;
- }a[N];
- int i,j,Rt[N],k,Num,n,m,M;
- ll Last=,w2[N],x,y,z;
- inline void Update(int& Node,int l,int r,int x,int y){
- c[++Num]=c[Node];Node=Num;
- c[Node].w+=w2[x]*y;c[Node].s+=y;
- if(l==r)return;
- int Mid=(l+r)>>;
- if(x<=Mid)Update(c[Node].l,l,Mid,x,y);else Update(c[Node].r,Mid+,r,x,y);
- }
- inline ll Query(int Node,int l,int r,int x){
- if(l==r)return c[Node].w/c[Node].s*x;
- int Mid=(l+r)>>;
- if(c[c[Node].l].s>x)return Query(c[Node].l,l,Mid,x);else if(c[c[Node].l].s==x)return c[c[Node].l].w;else return Query(c[Node].r,Mid+,r,x-c[c[Node].l].s)+c[c[Node].l].w;
- }
- inline bool Cmp(ls a,ls b){
- return a.w<b.w;
- }
- int main()
- {
- Read(m);Read(n);
- for(i=;i<=m;i++)Read(b[i].x),Read(b[i].y),Read(b[i].z),a[i].w=b[i].z,a[i].f=i;
- sort(a+,a+m+,Cmp);
- for(i=;i<=m;i++)if(a[i].w==a[i-].w)b[a[i].f].z=M;else b[a[i].f].z=++M,w2[M]=a[i].w;
- for(i=;i<=m;i++){
- a1[b[i].x].push_back(b[i].z);a2[b[i].y+].push_back(b[i].z);
- }
- for(i=;i<=n;i++){
- Rt[i]=Rt[i-];
- for(j=;j<a1[i].size();j++)Update(Rt[i],,M,a1[i][j],);
- for(j=;j<a2[i].size();j++)Update(Rt[i],,M,a2[i][j],-);
- }
- for(i=;i<=n;i++){
- Read(k);Read(x);Read(y);Read(z);
- x=((x*Last+y)%z)+;
- if(c[Rt[k]].s<=x)Last=c[Rt[k]].w;else Last=Query(Rt[k],,M,x);
- printf("%lld\n",Last);
- }
- return ;
- }
bzoj3932
bzoj3932--可持久化线段树的更多相关文章
- PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树
#44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...
- 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集
3673: 可持久化并查集 by zky Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 1878 Solved: 846[Submit][Status ...
- 【BZOJ-2653】middle 可持久化线段树 + 二分
2653: middle Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1298 Solved: 734[Submit][Status][Discu ...
- HDU 4866 Shooting(持久化线段树)
view code//第二道持久化线段树,照着别人的代码慢慢敲,还是有点不理解 #include <iostream> #include <cstdio> #include & ...
- 【BZOJ-3653】谈笑风生 DFS序 + 可持久化线段树
3653: 谈笑风生 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 628 Solved: 245[Submit][Status][Discuss] ...
- 【BZOJ3673】&&【BZOJ3674】: 可持久化并查集 by zky 可持久化线段树
没什么好说的. 可持久化线段树,叶子节点存放父亲信息,注意可以规定编号小的为父亲. Q:不是很清楚空间开多大,每次询问父亲操作后修改的节点个数是不确定的.. #include<bits/stdc ...
- 【BZOJ3207】花神的嘲讽计划I 可持久化线段树/莫队
看到题目就可以想到hash 然后很自然的联想到可持久化权值线段树 WA:base取了偶数 这道题还可以用莫队做,比线段树快一些 可持久化线段树: #include<bits/stdc++.h&g ...
- 【BZOJ 3674】可持久化并查集加强版&【BZOJ 3673】可持久化并查集 by zky 用可持久化线段树破之
最后还是去掉异或顺手A了3673,,, 并查集其实就是fa数组,我们只需要维护这个fa数组,用可持久化线段树就行啦 1:判断是否属于同一集合,我加了路径压缩. 2:直接把跟的值指向root[k]的值破 ...
- 【BZOJ 3524】【Poi2014】Couriers 可持久化线段树
为什么这个主席树叫可持久化线段树,我不知道,具体得问达神.我无限T,然后DaD3zZ一针见血地指出了我的N*50爆内存导致无限编译超时O)ZO)ZO)Z真是太神啦.以图为鉴: 达神题解传送门:http ...
- BZOJ-3524 Couriers 可持久化线段树
可持久化线段树,其实就是类主席树了.. 3524: [Poi2014]Couriers Time Limit: 20 Sec Memory Limit: 128 MB Submit: 1124 Sol ...
随机推荐
- 日期格式代码出现两次的错误 ORA-01810
错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【Reading Note】算法读书杂记
1 排序 排序基本信息 稳定性:排序前大的数在排序后,大的数依然保持不变就是稳定排序,反之不稳定 内外排序:根据待排序的记录是否放在内存里面区分的.诸如:插入排序(直接插入&希尔).交换排序( ...
- dagger2系列之依赖方式dependencies、包含方式(从属方式)SubComponent
本篇是实战文章,从代码的角度分析这两种方式.本文参考自下列文章: http://www.jianshu.com/p/1d42d2e6f4a5 http://www.jianshu.com/p/94d4 ...
- Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误——SHH框架
SHH框架工程,Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误 1.查看配置文件web.xml中是否配置.or ...
- HttpPost过程中使用的URLEncoder.encode(something, encode)
URLEncoder.encode("刘美美", "utf-8").toString() = %E5%88%98%E7%BE%8E%E7%B ...
- Java 中获取类路径 classpath 的方法
System.out.println("++++++++++++++++++++++++"); String path = System.getProperty("jav ...
- git命令行操作
从本地上传代码到仓库(假设已经建好仓库): 1.初始化: git init 2.将所有文件加入缓存区: git add * 3.提交当前工作空间的修改内容: git commit -m 'commit ...
- 敏捷转型历程 - Sprint4 回顾会
我: Tech Leader 团队:团队成员分布在两个城市,我所在的城市包括我有4个成员,另外一个城市包括SM有7个成员.另外由于我们的BA离职了,我暂代IT 的PO 职位.PM和我在一个城市,但他不 ...
- 第11章 Linux服务管理
1. 服务分类 (1)Linux的服务 ①Linux中绝大多数的服务都是独立的,直接运行于内存中.当用户访问时,该服务直接响应用户,其好处是服务访问响应速度快.但不利之处是系统中服务越多,消耗的资源越 ...