P1533 可怜的狗狗
http://www.luogu.org/problem/show?pid=1533
题目背景
小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗。
题目描述
小卡家有N只狗,由于品种、年龄不同,每一只狗都有一个不同的漂亮值。漂亮值与漂亮的程度成反比(漂亮值越低越漂亮),吃饭时,狗狗们会按顺序站成一排等着主人给食物。
可是嘉嘉真的很懒,他才不肯喂这么多狗呢,这多浪费时间啊,于是他每次就只给第i只到第j只狗中第k漂亮的狗狗喂食(好狠心的人啊)。而且为了保证某一只狗狗不会被喂太多次,他喂的每个区间(i,j)不互相包含。
输入输出格式
输入格式:
第一行输入两个数n,m,你可以假设n<300001 并且 m<50001;m表示他喂了m次。
第二行n个整数,表示第i只狗的漂亮值为ai。
接下来m行,每行3个整数i,j,k表示这次喂食喂第i到第j只狗中第k漂亮的狗的漂亮值。
输出格式:
M行,每行一个整数,表示每一次喂的那只狗漂亮值为多少。
输入输出样例
7 2
1 5 2 6 3 7 4
1 5 3
2 7 1
3
2
以前写的暴力60
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1000000
using namespace std;
int n,m;
char a2[];
int a[],a1[];
int x,y,k; int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
cin>>a1[i];
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&k);
memset(a,maxn,sizeof(a));
for(int i=;i<=n;i++)
a[i]=a1[i];
sort(a+x,a+y+);
printf("%d\n",a[k+x-]);
}
return ;
}
正解是什么,南城说是主席树
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
const int M=3e5+;
const int N=M*;
int tot,sum[N],ls[N],rs[N],T[M],san[M],num[M];
int n,m;
void build(int &rt,int l,int r){
rt=++tot;
if(l==r) return ;
int mid=l+r>>;
build(ls[rt],l,mid);
build(rs[rt],mid+,r);
}
void updata(int &rt,int last,int l,int r,int p){
rt=++tot;
ls[rt]=ls[last];
rs[rt]=rs[last];
sum[rt]=sum[last]+;
if(l==r) return ;
int mid=l+r>>;
p<=mid?updata(ls[rt],ls[last],l,mid,p):updata(rs[rt],rs[last],mid+,r,p);
}
int query(int l,int r,int x,int y,int k){
if(l==r) return l;
int mid=l+r>>;
int cnt=sum[ls[y]]-sum[ls[x]];
k<=cnt?query(l,mid,ls[x],ls[y],k):query(mid+,r,rs[x],rs[y],k-cnt);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
int a;
scanf("%d",&a);
san[i]=num[i]=a;
}
stable_sort(san+,san+n+);
int cnt=unique(san+,san+n+)-(san+);
for(int i=;i<=n;i++) num[i]=lower_bound(san+,san+cnt+,num[i])-san;
build(T[],,cnt);
for(int i=;i<=n;i++) updata(T[i],T[i-],,cnt,num[i]);
for(int i=;i<=m;i++){
int x,y,k;
scanf("%d%d%d",&x,&y,&k);
int id=query(,cnt,T[x-],T[y],k);
printf("%d\n",san[id]);
}
return ;
}
P1533 可怜的狗狗的更多相关文章
- 洛谷P1533 可怜的狗狗 [平衡树,FHQ_Treap]
题目传送门 可怜的狗狗 题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都 ...
- Luogu P1533 可怜的狗狗
题目链接:https://www.luogu.org/problemnew/show/P1533 没人写$fhq\ treap$做法,那我就补一篇qwq 看到这题第一时间想主席树,然后发现我还没学主席 ...
- luogu P1533 可怜的狗狗 |莫队+二分
题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都有一个不同的漂亮值.漂亮 ...
- 【题解】Luogu P1533 可怜的狗狗
原题传送门 莫队介绍,Splay介绍 离线的题目,莫队是不错的解决方法 先把询问排一下序 剩下就套一个莫队的板子 每来一只狗就把漂亮值插入平衡树 每去掉一只狗就把漂亮值从平衡树中删掉 每次查询查平衡树 ...
- P1533可怜的狗狗
困死了,完全做不下去题 就当是对莫队最最基本的思想的一个复习叭(只有最最基本的思想,没有莫队) 传送 我们可以很容易的想到这题要用线段树. 60pts 此题要求某个区间里第K小的数,可以暴力的考虑对每 ...
- AC日记——可怜的狗狗 洛谷 P1533
可怜的狗狗 思路: 主席树第k大: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300001 #defin ...
- [Luogu 1533] 可怜的狗狗
平衡树,我用的SBT. 排一下序尽量减少操作次数. 第K大询问. 以及插入删除. #include <algorithm> #include <cstdio> #include ...
- 【luoguP1533】可怜的狗狗
题目链接 发现区间按左端点排序后右端点也是单调的,所以扫一遍就行了,用权值线段树维护第\(k\)大 #include<algorithm> #include<iostream> ...
- Splay详解
平衡树实际很简单的 以下讲解都以Luogu P3369 [模板]普通平衡树为例 我不会带指针的Splay,所以我就写非指针型的Splay Splay是基于二叉查找树(bst)实现的 什么是二叉查找树呢 ...
随机推荐
- Struts2 标签库讲解
要使用Struts2的标签,只需要在JSP页面添加如下一行定义即可: <%@ taglib prefix="s" uri="/struts-tags"%& ...
- PHP-字符串过长不用担心
字符串过长可以用定界符: >>>GOD ................巨长务必的字符串 GOD;
- 建立一个Hello World级别的Spring项目
package com.sevenhu.domain; import org.springframework.context.ApplicationContext; import org.spring ...
- BeanFactory
Spring容器,最基本的接口就是BeanFactory 负责创建,配置,管理bean 它有一个子接口ApplicationContext并将功能扩展. 理论上bean ...
- LIKE 某个变量
declare i ); n number; begin i:='%D0FC02EAR11005%'; select po_header_id into n from po_headers_all w ...
- 夺命雷公狗---微信开发58----微网站之jquery_mobile之控件介绍
我们上一节课里面介绍了基本的jqm是如何用的了,那么这一节课我们就开始玩玩他的控件 1...布局网格 <!DOCTYPE html> <html> <head> & ...
- 2. 星际争霸之php面向对象(二)
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 最懂中文的H5前端框架amazeUI
Amaze UI 是一个轻量级(所有 CSS 和 JS gzip 后 100 kB 左右)的前端框架, 基于开源社区流行前端框架编写 amazeUI的网址:http://amazeui.org/get ...
- OpenStack 服务状态检查
openstack服务不正常 使用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [root@node-5 TimaIaas]# nova- ...
- WebService优点和缺点小结(转)
一.什么是WebService? 实际上,WebService的主要目标是跨平台的可互操作性.为了达到这一目标,WebService完全基于XML(可扩展标记语言).XSD (XMLSchema) ...