洛谷【P1138】第k小整数】的更多相关文章

我偏不用sort Treap好题啊 看到只有一个人写Treap,而且写的不清楚,那我就来详细地写一下,方便新人学习 第(-1)部分:前置知识 二叉查找树:满足左子树的数据都比根节点小,右子树的数据都比根节点大的二叉树 堆:满足子树中的数据均比根节点大的树,或是满足子树中的数据均比根节点小的树 第零部分:Treap简介 & 程序开头 Treap=Tree+Heap,又称"树堆". 这是因为Treap维护的数据满足二叉查找树的性质,而随机权值满足堆的性质. #include <…
题目描述 现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于30000. 输入输出格式 输入格式: 第一行为n和k; 第二行开始为n个正整数的值,整数间用空格隔开. 输出格式: 第k个最小整数的值:若无解,则输出“NO RESULT”. 输入输出样例 输入样例#1: 10 3 1 3 3 7 2 5 1 2 4 6 输出样例#1: 3 说明 n≤10000 ——————————————————我是分割线——————————…
洛谷 P3951 NOIP 2017 小凯的疑惑 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在 小凯无法准确支付的商品. 输入格式 两个正整数 \(a\) 和 \(b\),它们之间用一个空格隔开,表示小凯中金币的面值. 输出格式 一个正整数 \(N\),表示不找零的情况下,小凯用手中的金币不能准确支付的最…
题目传送门:https://www.luogu.org/problemnew/show/P1138 桶排: 对于值域在可以接受的范围内时,我们可以用不依赖比较的桶排去将数据排序.因为桶排不依赖比较排序,所以他可以打破\(O(nlogn)\)的复杂度下界,变成\(O(max-value)\)的,不过时间是用空间换出来的. 对于每一个值\(v\),我们都开一个数组\(sum[v]\)来当做存放权值为\(v\)的数据的桶,最后一遍\(O(maxv)\)的遍历就可以将数据排好序了. 对于这个题,我们只要…
蒟蒻发题解了 说明:此题我用的方法为桶排(我翻了翻有人用了桶排只不过很难看出来,可能有些重复的,这个题只是作为一个专门的桶排来讲解吧) (不会算抄袭吧 ‘QWaWQ’) 简单来说(会的人跳过就行): 桶排就是开两个数组,其中一个用来输入以及存储样例数列,另一个用来排序: 排序方法:(我用的第二个数组为b数组) b[a[i]]=a[i]b[a[i]]=a[i] 核心代码(我认为的),先翻译一下:b数组为存储的那个桶,在b数组中第a[i]项的值为a[i]的值, 这样等到下一个a[i]与b[a[i]]…
题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求$\sum_1^Kc_i^2$的值,其中$c_i$表示数字i在[L..R]中的重复次数.小B请你帮助他回答询问. 输入输出格式 输入格式: 第一行,三个整数N.M.K. 第二行,N个整数,表示小B的序列. 接下来的M行,每行两个整数L.R. 输出格式: M行,每行一个整数,其中第i行的整数表示第i个询问的答案. 输入输出样例 输入样例#1: 6 4 3 1 3 2 1 1 3 1 4 2 6…
题目: 洛谷 2304 LOJ 2134 (LOJ 上每个测试点有部分分) 写了快一天 -- 好菜啊 分析: 毒瘤二合一题 -- 注意本题(及本文)使用 \(x\) 向右,\(y\) 向上的「数学坐标系」,而不是 \(x\) 向下,\(y\) 向右的所谓「OI 坐标系」.「同一行」指 \(y\) 相同,「同一列」指 \(x\) 相同. 老司机 注意,只能在 没有经过的 树下转向,并且每棵树只能访问一次. 第一反应是 \(f_{u}\) 表示从点 \(u\) (树 \(u\) )出发能走到的最多的…
洛谷题目传送门 闲话 看完洛谷larryzhong巨佬的题解,蒟蒻一脸懵逼 如果哪年NOI(放心我这样的蒟蒻是去不了的)又来个决策单调性优化DP,那蒟蒻是不是会看都看不出来直接爆\(0\)?! 还是要想点办法,不失一般性也能快捷地判定决策单调. 对于判定决策单调的分析 再补一句决策单调性的概念:状态转移方程形如\(f_i=\min/\max_{j=1}^{i-1} g_j+w_{i,j}\),且记\(f_i\)的最优决策点为\(p_i\)(也就是\(f_i\)从\(g_{p_i}+w_{i,p_…
洛谷传送门 入门难度.. 没错,但是我并不是要暴力做. 而是用树状数组来做. 先离散化,然后随便搞一搞就可以了.(晕.比暴力还慢) 如果要查找某一区间的的话可以把区间取出重新建树,然后再求.(更暴力) #include <cstdio> #include <vector> #include <algorithm> #define N 10001 #define lowbit(x) x & -x using namespace std; int n, m, k;…
题目:洛谷P3697 题目大意是有各站停列车(慢车,相邻2站时间A)和特急列车(相邻2站时间B),特急列车在特定站点停靠. 现在加一种快速列车(相邻2站时间C,A>C>B),停靠K站(包括所有特急列车停靠的站点),要求你设计快速列车的停靠站点,好让1号站点的人T分钟能到达的站点数尽可能多.(相邻指编号相邻的两站,如2号站和3号站) 具体见原题目. 我们设特急列车本次停靠点A,和下次停靠点B,再设从A坐慢车最远到达C,可知A到C之间不需要设任何快速站点. 那么就需要在C的后一个站D设快速站点.…