LYK loves music
Description
LYK喜欢听音乐,它的歌单里共有n首音乐,而且它每次听音乐时都是连续地听m首,
它甚至能记得自己给每首音乐的评分ai。
现在它想选择一首歌开始听,使得接下来连续m首歌的评分<xi的歌最少。
当然它最开始听的歌也是需要在一段区间[li,ri]内选择的。
现在它想让你帮它挑选一首最开始听的歌,使得以这首歌开始的连续m首歌中,评分<xi的歌最少。
Input
第一行输入2个数n,m。
接下来一行n个数ai表示第i首歌的评分。
接下来一行一个Q,表示有Q次询问。
接下来Q行,每行3个数li,ri,qi。为了体现询问的在线性,对于该询问,xi=ans{i-1}^qi。
其中^表示异或,ans{i-1}表示上一问的答案,若i=1,则ans{i-1}=0。
n,Q<=200000。
1<=li<=ri<=n-m+1,0<=ai,qi<2^30,1<=m<=n
Output
Q行,表示评分<xi的歌最少是多少。
Solution:
我们发现m是固定的,考虑以这一点为突破口
我们先考虑离线怎么来做,对于所有询问的\(q_i\),我们先把它从小到大排序
考虑对于每一个点,当它有贡献时,他会影响的左端点是一段连续的区间\([max(1,i-m+1),i]\)
那么我们把\(a\)数组按从小到大排序,用线段树来维护这个贡献,每次操作即为区间加,区间最小值,时间复杂度\(O(n\,log \, n)\)
那么在线怎么做呢,事实上,如果是在线,那么我们建一颗主席树,预处理好操作,每次找到对应的\(rt\)查询即可
Code:
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+11;
int n,m,Q,cnt,lstans,rt[N];
struct Pos{int id,v;}a[N];
struct Seg{int l,r,t,v;}tr[N*50];
inline bool cmp(Pos x,Pos y){return x.v<y.v;}
#define ls tr[q].l
#define rs tr[q].r
#define Ls tr[p].l
#define Rs tr[p].r
void give(int q,int p){ls=Ls;rs=Rs;tr[q].t=tr[p].t;tr[q].v=tr[p].v;}
void update(int q){tr[q].v=tr[q].t+min(tr[ls].v,tr[rs].v);}
void ins(int &q,int p,int l,int r,int L,int R,int v){
if(r<L||l>R) return ;
q=++cnt;give(q,p);
int mid=l+r>>1;
if(l>=L&&r<=R) tr[q].t+=v;
else ins(ls,Ls,l,mid,L,R,v),ins(rs,Rs,mid+1,r,L,R,v);
update(q);
}
int query(int q,int l,int r,int L,int R){
if(l>=L&&r<=R) return tr[q].v;
int mid=l+r>>1,re=N;
if(mid>=L) re=min(re,query(ls,l,mid,L,R));
if(mid<R) re=min(re,query(rs,mid+1,r,L,R));
return tr[q].t+re;
}
int lower(int v){
int l=1,r=n,re=0;
while(l<=r){
int mid=l+r>>1;
if(a[mid].v<v) re=mid,l=mid+1;
else r=mid-1;
}return re;
}
int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
signed main(){
n=read(),m=read();
for(int i=1;i<=n;i++) a[a[i].id=i].v=read();
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
ins(rt[i],rt[i-1],1,n,max(a[i].id-m+1,1),a[i].id,1);
int Q=read();
for(int i=1;i<=Q;i++){
int l=read(),r=read(),v=read();
v=v^lstans;int p=lower(v);
lstans=query(rt[p],1,n,l,r);
printf("%d\n",lstans);
}
return 0;
}
LYK loves music的更多相关文章
- LYK loves graph(graph)
题目: LYK loves graph(graph) Time Limit:2000ms Memory Limit:128MB LYK喜欢花花绿绿的图片,有一天它得到了一张彩色图片,这张图片可以看 ...
- 省选模拟赛 LYK loves rabbits(rabbits)
题目描述 LYK喜欢兔子,它在家中养了3只兔子. 有一天,兔子不堪寂寞玩起了游戏,3只兔子排成一排,分别站在a,b,c这3个位置. 游戏的规则是这样的,重复以下步骤k次:选择两个不同的兔子A和B,假如 ...
- 省选模拟赛 LYK loves graph(graph)
题目描述 LYK喜欢花花绿绿的图片,有一天它得到了一张彩色图片,这张图片可以看做是一张n*m的网格图,每个格子都有一种颜色去染着,我们用-1至n*m-1来表示一个格子的颜色.特别地,-1代表这个颜色是 ...
- 省选模拟赛 LYK loves string(string)
题目描述 LYK喜欢字符串,它认为一个长度为n的字符串一定会有n*(n+1)/2个子串,但是这些子串是不一定全部都不同的,也就是说,不相同的子串可能没有那么多个.LYK认为,两个字符串不同当且仅当它们 ...
- 清北集训Day1T3 LYK loves jumping(期望DP)
题目描述 LYK在玩一个魔法游戏,叫做跳跃魔法. 有n个点,每个点有两个属性hi和ti,表示初始高度,和下降高度.也就是说,它初始时高度为hi,一旦LYK踩在这个点上,由于重力的影响,这个点的高度会下 ...
- Microsoft Loves Linux
微软新任CEO纳德拉提出的“Microsoft Loves Linux”,并且微软宣布.NET框架的开源,近期Microsoft不但宣布了Linux平台的SQL Server,还宣布了Microsof ...
- 5806 NanoApe Loves Sequence Ⅱ(尺取法)
传送门 NanoApe Loves Sequence Ⅱ Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/131072 K ...
- 5805 NanoApe Loves Sequence(想法题)
传送门 NanoApe Loves Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K ( ...
- CF444C. DZY Loves Colors[线段树 区间]
C. DZY Loves Colors time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
随机推荐
- 作业8:常用java命令(二)
一.jinfo(Configuration Info for Java) 1.功能:jinfo可以实时地查看和调整虚拟机的各项参数. 2.参数: 选项 作用 -flag name 打印改名字的VM设置 ...
- Power BI 行级别安全性 (RLS)
在 Power BI Desktop 中定义角色和规则 你可以在 Power BI Desktop 中定义角色和规则. 发布到 Power BI 时,它还会发布角色定义. 若要定义安全角色,请执行以下 ...
- SharePoint Resize app
//Global Variables used in different functions. var widthSelected=null; var senderId; var hostUrl = ...
- 解决windows系统下ping,ipconfig不是内部或外部命令
一般情况下,都是误删了系统变量path的值.解决方法:右击我的电脑 → 选择属性 → 选择高级系统设置 → 环境变量 → 在系统变量列表中,找到“path”环境变量双击,打开.在变量值这一栏检测下是否 ...
- python增量爬虫
import pymysql def insert_db(db_table, issue, time_str, num_code): host = '127.0.0.1' user = 'root' ...
- linux wireless 基础知识 MAC80211 CFG80211
转:http://blog.csdn.net/liuxd3000/article/details/23761663 1. 基本概念 • cfg80211: 用于对无线设备进行配置管理.与Full ...
- ANSIBLE自动化管理工具
ansible 基础 自动化运维工具 官网:https://www.ansible.com/ 官方文档:https://docs.ansible.com/ ansible 特性 1. 模块化:调用特定 ...
- spring JdbcTemplate如何返回多个结果集
最近很少发博客,先是去了***公司呆了几年,完全不能上外网,后来又出来了,能上外网了,但项目太忙一直在打码,用的语言也从C#换成了JAVA. 好在两者比较相似,转起来还算方便,近日在操作sqlserv ...
- ELK展示NGINX访问IP地理位置图
一.设置NGINX日志格式 [root@zabbix_server ~]# vim /etc/nginx/nginx.conf log_format access_json_log '{"@ ...
- BPR贝叶斯个性化排序算法
全序关系:集合中的任两个元素之间都可以比较的关系.