P1533可怜的狗狗】的更多相关文章

题目传送门 可怜的狗狗 题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都有一个不同的漂亮值.漂亮值与漂亮的程度成反比(漂亮值越低越漂亮),吃饭时,狗狗们会按顺序站成一排等着主人给食物. 可是嘉嘉真的很懒,他才不肯喂这么多狗呢,这多浪费时间啊,于是他每次就只给第i只到第j只狗中第k漂亮的狗狗喂食(好狠心的人啊).而且为了保证某一只狗狗不会被喂太多次,他喂的每个区间(i,j…
http://www.luogu.org/problem/show?pid=1533 题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都有一个不同的漂亮值.漂亮值与漂亮的程度成反比(漂亮值越低越漂亮),吃饭时,狗狗们会按顺序站成一排等着主人给食物. 可是嘉嘉真的很懒,他才不肯喂这么多狗呢,这多浪费时间啊,于是他每次就只给第i只到第j只狗中第k漂亮的狗狗喂食(好狠心的人啊)…
题目链接:https://www.luogu.org/problemnew/show/P1533 没人写$fhq\ treap$做法,那我就补一篇qwq 看到这题第一时间想主席树,然后发现我还没学主席树,于是就写了平衡树做法(当然树状数组+二分的套路也是可以的,但是两个$log$的复杂度太优秀了就不写了) 其实和treap的写法差不多,也是排序一遍然后插入,删除,求$kth$ 不过好写很多,主体就40+行,注意一开始那个节点的值一定要大... 我开$0x3f$然后挂了一个上午... (其实一开始…
题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都有一个不同的漂亮值.漂亮值与漂亮的程度成反比(漂亮值越低越漂亮),吃饭时,狗狗们会按顺序站成一排等着主人给食物. 可是嘉嘉真的很懒,他才不肯喂这么多狗呢,这多浪费时间啊,于是他每次就只给第i只到第j只狗中第k漂亮的狗狗喂食(好狠心的人啊).而且为了保证某一只狗狗不会被喂太多次,他喂的每个区间(i,j)不互相包含. 输入格式…
原题传送门 莫队介绍,Splay介绍 离线的题目,莫队是不错的解决方法 先把询问排一下序 剩下就套一个莫队的板子 每来一只狗就把漂亮值插入平衡树 每去掉一只狗就把漂亮值从平衡树中删掉 每次查询查平衡树中第k小 #pragma GCC optimize("O3") #include <bits/stdc++.h> #define N 800005 #define M 50005 using namespace std; inline char nc(){ static cha…
困死了,完全做不下去题 就当是对莫队最最基本的思想的一个复习叭(只有最最基本的思想,没有莫队) 传送 我们可以很容易的想到这题要用线段树. 60pts 此题要求某个区间里第K小的数,可以暴力的考虑对每个节点所对应的区间排序.这里排序一次可以最快\(O(n)\),查询时也要排序,所以查询一次是\(O(nlogn)\),总复杂度就是\(O(nmlogn)\).不吸氧60pts.(可能还不如朴素?) 100pts 既然普通线段树不行,那咱就用权值线段树搞搞试试.权值线段树上维护每一个数出现的次数.先离…
可怜的狗狗 思路: 主席树第k大: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300001 #define maxn_ maxn*30 int n,m,lc[maxn_],rc[maxn_],dis[maxn_],root[maxn]; int tot,ai[maxn],bi[maxn],size; inline void in(int &now) { ; ') Cget=getchar(); ') {…
平衡树,我用的SBT. 排一下序尽量减少操作次数. 第K大询问. 以及插入删除. #include <algorithm> #include <cstdio> #include <cstring> using namespace std; const int MAXN=300010,MAXM=50010; int n,m,x,y,a[MAXN],ans[MAXN]; struct Query { int l,r,k,index; bool operator <(c…
题目链接 发现区间按左端点排序后右端点也是单调的,所以扫一遍就行了,用权值线段树维护第\(k\)大 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<map> #define int long long #define lc (p<<1) #define rc (p<<1|1) using namespace…
平衡树实际很简单的 以下讲解都以Luogu P3369 [模板]普通平衡树为例 我不会带指针的Splay,所以我就写非指针型的Splay Splay是基于二叉查找树(bst)实现的 什么是二叉查找树呢?就是一棵树呗,但是这棵树满足性质:一个节点的左孩子一定比它小,右孩子一定比它大 比如: 这就是一棵最基本二叉查找树 对于每次插入,它的期望复杂度大约是lognlogn级别的,但是存在极端情况,比如9999999 9999998 9999997.....1这种数据,会直接被卡成n^2级别 在这种情况…