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 ...
随机推荐
- 踩石行动:ViewPager无限轮播的坑
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
- TODO:Laravel 内置简单登录
TODO:Laravel 内置简单登录 1. 激活Laravel的Auth系统Laravel 利用 PHP 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...
- 百度 flash html5自切换 多文件异步上传控件webuploader基本用法
双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name=& ...
- PowerShell过滤文件中的重复内容
Get-Content -Path E:\test11\data.txt | Sort-Object | Get-Unique 源文件: AA0001 2014-06-30 15:27:13.073 ...
- Android Ormlite 学习笔记2 -- 主外键关系
以上一篇为例子,进行主外键的查询 定义Users.java 和 Role.java Users -- Role 关系为:1对1 即父表关系 Role -- Users 关系为:1对多 即子表关系 下面 ...
- Entity Framework 手动使用migration里面的up 和down方法。
add-migration -IgnoreChanges 201606100717405_201606100645298_InitialCreate 执行这一句后 ,清空使用map生成的代码,个人不太 ...
- MSYS2环境下编译X265
HEVC(High Efficiency Video Coding),是一种新的视频压缩标准.可以替代H.264/ AVC编码,使得保持相同质量的情况下,体积减少40%左右.目前有多种实现版本,x26 ...
- java中if和switch哪个效率快
首先要看一个问题,if 语句适用范围比较广,只要是 boolean 表达式都可以用 if 判断:而 switch 只能对基本类型进行数值比较.两者的可比性就仅限在两个基本类型比较的范围内.说到基本类型 ...
- 12个小技巧,让你高效使用Eclipse
集成开发环境(IDE)让应用开发更加容易.它们强调语法,让你知道是否你存在编译错误,在众多的其他事情中允许你单步调试代码.像所有的IDE一 样,Eclipse也有快捷键和小工具,这些会让您感觉轻松许多 ...
- PHP安装
工具 http://www.cnblogs.com/xiwang6428/p/4315049.html http://www.iteye.com/news/22672 1 安装:sudo apt-ge ...