解题:UOJ #46 玄学
二进制分组,修改把区间拆开丢在后面,合并的时候归并最后两块;查询在对应节点上二分答案
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,Max=1e5;
struct a{int p,k,b;}ope[N*];
int seq[*N],lef[*N],rig[*N];
int n,T,t1,t2,t3,t4,op,ans,cnt,tot,mod,oni;
void Change(int nde,int l,int r,int ll,int rr,int k,int b)
{
if(l==r)
{
lef[nde]=cnt+;
if(ll>) ope[++cnt]=(a){ll-,,};
ope[++cnt]={rr,k,b};
if(rr<n) ope[++cnt]=(a){n,,};
rig[nde]=cnt;
}
else
{
int mid=(l+r)>>,ls=*nde,rs=*nde+,l1,l2,r1,r2;
if(tot<=mid) Change(ls,l,mid,ll,rr,k,b);
else Change(rs,mid+,r,ll,rr,k,b);
if(tot>=r)
{
lef[nde]=cnt+,l1=lef[ls],l2=lef[rs],r1=rig[ls],r2=rig[rs];
while(l1<=r1&&l2<=r2)
{
ope[++cnt]=(a){min(ope[l1].p,ope[l2].p),
1ll*ope[l1].k*ope[l2].k%mod,
(1ll*ope[l2].k*ope[l1].b+ope[l2].b)%mod};
if(ope[l1].p==ope[l2].p) l1++,l2++;
else ope[l1].p<ope[l2].p?l1++:l2++;
}
rig[nde]=cnt;
}
}
}
void Calc(int nde,int tsk)
{
int l=lef[nde],r=rig[nde],p=;
while(l<=r)
{
int mid=(l+r)>>;
if(ope[mid].p>=tsk) p=mid,r=mid-;
else l=mid+;
}
ans=(1ll*ans*ope[p].k+ope[p].b)%mod;
}
void Query(int nde,int l,int r,int ll,int rr,int tsk)
{
if(l>rr||r<ll)
return ;
else if(l>=ll&&r<=rr)
Calc(nde,tsk);
else
{
int mid=(l+r)>>,ls=*nde,rs=*nde+;
Query(ls,l,mid,ll,rr,tsk),Query(rs,mid+,r,ll,rr,tsk);
}
}
int main()
{
scanf("%d",&oni),oni&=;
scanf("%d%d",&n,&mod);
for(int i=;i<=n;i++)
scanf("%d",&seq[i]);
scanf("%d",&T);
while(T--)
{
scanf("%d",&op);
if(op==)
{
scanf("%d%d%d%d",&t1,&t2,&t3,&t4);
t1^=ans*oni,t2^=ans*oni,tot++;
Change(,,Max,t1,t2,t3,t4);
}
else
{
scanf("%d%d%d",&t1,&t2,&t3);
t1^=ans*oni,t2^=ans*oni,t3^=ans*oni;
ans=seq[t3],Query(,,Max,t1,t2,t3);
printf("%d\n",ans);
}
}
return ;
}
解题:UOJ #46 玄学的更多相关文章
- uoj #46[清华集训2014]玄学
uoj 因为询问是关于一段连续区间内的操作的,所以对操作构建线段树,这里每个点维护若干个不交的区间,每个区间\((l,r,a,b)\)表示区间\([l,r]\)内的数要变成\(ax+b\) 每次把新操 ...
- 【UOJ #46】 【清华集训2014】玄学
题目描述 巨酱有 n 副耳机,他把它们摆成了一列,并且由 1 到n依次编号.每个耳机有一个玄学值,反映了各自的一些不可名状的独特性能.玄学值都是 0 到 m-1 间的整数.在外界的作用下(包括但不限于 ...
- UOJ#46. 【清华集训2014】玄学
传送门 分析 清华集训真的不是人做的啊嘤嘤嘤 我们可以考虑按操作时间把每个操作存进线段树里 如果现在点x正好使一个整块区间的右端点则更新代表这个区间的点 我们不难发现一个区间会因为不同的操作被分成若干 ...
- 【uoj#46】 [清华集训2014] 玄学
题目传送门:uoj46 题意简述:要求在序列上维护一个操作间支持结合律的区间操作,查询连续一段时间内的操作对单点的作用效果,\(n \leq 10^5,m \leq 6 \times 10^5 ...
- Solution -「UOJ #46」玄学
\(\mathcal{Description}\) Link. 给定序列 \(\{a_n\}\) 和 \(q\) 次操作,操作内容如下: 给出 \(l,r,k,b\),声明一个修改方案,表示 ...
- UOJ#288:基础数据结构练习题
题面 UOJ Sol 玄学,不会势能分析 所以 维护区间最大最小值 把开根变成区间减法 如果最大值开根后的变化量和最小值的相等,就直接打个减法\(lazy\) # include <bits/s ...
- UOJ Round #8 赴京赶考 解题报告
算法零 $n,m \le 100, q \le 10$ 的话,直接给网格中的每一个格点都建一个点,然后该怎么最短路就怎么最短路,该怎么并查集+BFS就怎么并查集+BFS. 复杂度 $O(qnm)$,可 ...
- 【LeetCode】46. Permutations 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 方法一:库函数 方法二:递归 方法三:回溯法 日期 题目地址:h ...
- 河南省队选拔 HAOI2015 解题报告
其实省选在四天前就已经结束了,但由于题目难度略大我到今天上午才补完所有题目……(捂脸逃)考场上很幸运,打完了所有我会写的部分分,最后Round1的110分 + Round2的70分,勉强算是没有被 ...
随机推荐
- # 2017-2018-2 20155319『网络对抗技术』Exp2:后门原理与实践
2017-2018-2 20155319『网络对抗技术』Exp2:后门原理与实践 1.实验准备 一.实验说明 任务一:使用netcat获取主机操作Shell,cron启动 (0.5分) 任务二:使用s ...
- 微信小程序之可滚动视图容器组件 scroll-view
1. 纵向滚动 scroll-y 当 设置为scroll-y 时, 需要将其高度设为固定值 如果整个页面,即最外层标签为scroll-view,需要并将其高度设为100%,也需要将page设为100% ...
- Spring+SpringMVC+MyBatis整合基础篇(三)搭建步骤
作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载. 框架介绍 Spring SpringMVC MyBatis easyUI ...
- okhttp3.4.1+retrofit2.1.0实现离线缓存
关于Retrofit+OkHttp的强大这里就不多说了,还没了解的同学可以自行去百度.这篇文章主要讲如何利用Retrofit+OkHttp来实现一个较为简单的缓存策略:即有网环境下我们请求数据时,如果 ...
- Android Studio开发实用网站收集
重点 1.Android Studio 调试技巧-断点调试 http://blog.csdn.net/qq_32452623/article/details/53769708 2.android st ...
- Mistakes I Made(as a developer)...大龄程序员的忠告...(部分转...)
在2006年,我开始了编程工作.当意识到来到了十年这个重要的时间关口时,我觉得有必要回顾一下这十年间所犯下的错误,做一做经验总结,并且给正在这个职业上奋斗的人们提出我的一些忠告.开发行业变化得很快,我 ...
- 【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用
URLOS开发者功能已上线有一段时间了,目前通过部分开发者的使用体验来看,不得不说URLOS在服务器软件开发效率方面确实有着得天独厚的优势,凭借docker容器技术与其良好的应用生态环境,URLOS必 ...
- Python机器学习/LinearRegression(线性回归模型)(附源码)
LinearRegression(线性回归) 2019-02-20 20:25:47 1.线性回归简介 线性回归定义: 百科中解释 我个人的理解就是:线性回归算法就是一个使用线性函数作为模型框架($ ...
- petapoco 对存储过程的扩展 干货
好久没发表文章了.心血来潮,简单的介绍下这次工作中的问题. 项目中运用了Petapoco,可是petapoco对存储过程的支持不够好.或者说对于某些特殊场景,petapoco的sql支持度有限. 比如 ...
- C#回调函数的简单讲解与应用例子(最简单讲解,大神绕道)
本博客一直以来的宗旨就是:用最简单的方式讲清楚不复杂的问题. 因为本人也很菜所以也没法讲太复杂HHHHHH...... 所以如果哪天某个大神看到了觉得讲的有问题欢迎指出. 话不多说进入正题.. ——— ...