AC日记——中位数 洛谷 P1168】的更多相关文章

题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], …, A[2k - 1]的中位数.[color=red]即[/color]前1,3,5,……个数的中位数. 输入输出格式 输入格式: 输入文件median.in的第1行为一个正整数N,表示了序列长度. 第2行包含N个非负整数A[i] (A[i] ≤ 10^9). 输出格式: 输出文件median.out包含(N + 1) / 2行,第i行为A[1], A[2], …, A…
题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:L不超过当前数列的长度. 2. 插入操作. 语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾. 限制:n是整数(可能为负数)并且在长整范围内. 注意:初始时数列是空的,没有一个数. 输入输出格式 输入格式: 第一行两个整数,M…
传染病控制 思路: 题目想问的是: 有一棵树: 对于除1外每个深度可以剪掉一棵子树: 问最后剩下多少节点: 题目意思一简单,这个题立马就变水了: 搜索就能ac: 数据有为链的情况,按深度为层次搜索的话要记得提前记录答案并return: 来,上代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define…
题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了怀疑.于是他决定用一种特别的方法来判断管家的忠诚,他把每次的账目按1,2,3…编号,然后不定时的问管家问题,问题是这样的:在a到b号账中最少的一笔是多少?为了让管家没时间作假他总是一次问多个问题. 输入输出格式 输入格式: 输入中第一行有两个数m,n表示有m(m<=100000)笔账,n表示有n个问…
题目背景 战争已经进入到紧要时间.你是运输小队长,正在率领运输部队向前线运送物资.运输任务像做题一样的无聊.你希望找些刺激,于是命令你的士兵们到前方的一座独木桥上欣赏风景,而你留在桥下欣赏士兵们.士兵们十分愤怒,因为这座独木桥十分狭窄,只能容纳一个人通过.假如有两个人相向而行在桥上相遇,那么他们两个人将无妨绕过对方,只能有一个人回头下桥,让另一个人先通过.但是,可以有多个人同时呆在同一个位置. 题目描述 突然,你收到从指挥部发来的信息,敌军的轰炸机正朝着你所在的独木桥飞来!为了安全,你的部队必须…
题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所得的内容均由大写字母‘A’-‘Z’构成(无空格等其他字符). 2. S 国对于每个字母规定了对应的“密字”.加密的过程就是将原信息中的所有字母替换为其对应的“密字”. 3. 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”.“密字”可以…
题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译:如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译. 假设内存中有M个单元,每单元能存放一个单词和译义.每当软件将一个新单词存入内存前,如果当前内存中已存入的单…
统计和 思路: 水题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 int n,m,tree[maxn]; inline void in(int &now) { ;now=; char Cget=getchar(); ') { ; Cget=getchar(); } ') { now=now*+Cget-'; Cget=getchar(); } now*=if_z; } inline int…
送花 思路: 线段树: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct TreeNodeType { int l,r,ci,sum,num,mid; }; ]; struct OperationType { int op,w,c; }; struct OperationType ai[maxn]; int n,m,bi[maxn],cnt,size; bool if_[maxn]; inl…
方差 思路: 线段树: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct TreeNodeType { int l,r,mid,size; double sum,sum2,flag; inline void updata(double x) { flag+=x; sum2+=sum*x*+size*x*x; sum+=x*size; } }; ]; int n,m; double X,Sum…
魔方 思路: 模拟: 代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; struct MFType { ][]; }; ]; int len; ],ch[]; /* 1.front 2.back 3.left 4.right 5.top 6.under */ void OperationType_righ…
题目描述 小B有n个下属,现小B要带着一些下属让别人拍照. 有m个人,每个人都愿意付给小B一定钱让n个人中的一些人进行合影.如果这一些人没带齐那么就不能拍照,小B也不会得到钱. 注意:带下属不是白带的!!!对于每个下属,如果他带了那么小B需要给他一些钱,保证当他拍照时配合. 请问,小B的净收益最多是多少. 输入输出格式 输入格式: 第1行有2个正整数m和n(0<m,n<=100).接下来的m行,每行是一个要求拍照的人的有关数据.第一个数是他同意支付该合影的费用:接着是该合影需要的若干下属的编号…
题目描述 N(2<=n<=200)个城市,M(1<=m<=40000)条无向边,你要找T(1<=T<=200)条从城市1到城市N的路,使得最长的边的长度最小,边不能重复用. 输入输出格式 输入格式: 第1行三个整数N,M,T用空格隔开. 第2行到P+1行,每行包括三个整数Ai,Bi,Li表示城市Ai到城市Bi之间有一条长度为Li的道路. 输出格式: 输出只有一行,包含一个整数,即经过的这些道路中最长的路的最小长度. 输入输出样例 输入样例#1: 7 9 2 1 2 2…
题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数. 输入输出格式 输入格式: 木有输入 输出格式: 若干行,每行3个数字.按照每行第一个数字升序排列. 输入输出样例 输入样例#1: 输出样例#1: 192 384 576 * * * ... * * * (输出被和谐了) 思路: 搜索: 水到炸. 来,上代码…
题目背景 pid=3437 题目描述 星云中有n颗行星,每颗行星的位置是(x,y,z).每次可以消除一个面(即x,y或z坐标相等)的行星,但是由于时间有限,求消除这些行星的最少次数. 输入输出格式 输入格式: 第1行为小行星个数n,第2行至第n+1行为xi, yi, zi,描述第i个小行星所在的位置. 输出格式: 共1行,为消除所有行星的最少次数. 输入输出样例 输入样例#1: 3 1 2 3 2 3 1 1 3 2 输出样例#1: 2 说明 1≤n≤50000 1≤x,y,z≤500 思路:…
题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰. 为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行.旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿.当然旅程的终点也是信仰与他相同的城市.S国政府为每个城市标定了不同的旅行评级,旅行者们常会记下途中(包括起点和终点)留宿过的城市的评级总和或最大值. 在S国的历史上常会发生以下…
题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈.宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙. 题目描述 宁宁考虑的是这样一个问题:一个操作数序列,从1,2,一直到n(图示为1到3的情况),栈A的深度大于n. 现在可以进行两种操作, 1.将一个数,从操作数序列的头…
[题目链接] https://www.luogu.org/problem/P3808 [题意] 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过. [题解] 不再介绍基础知识了,就是裸的模板题,直接贴上来. [代码] #include<queue> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ; queue < int >…
题目链接 https://www.luogu.org/problemnew/show/P1168 解题思路 这个题就是求中位数,但是暴力会tle,所以我们用一种O(nlogn)的算法来实现. 这里用到了两个堆,一个是大根堆,一个是小根堆,大根堆中的数总是小于小根堆中的数,且两个堆之间的数量最多差一. 见图(自己手画的,不太美观,请见谅): 就是这个样子,让两个堆的堆顶凑到一块比较容易理解. 就这样,每一次的答案就是元素个数较多的堆的堆顶. AC代码 #include<iostream> #in…
P1168 中位数 题目描述 给出一个长度为NN的非负整数序列$A_i$​,对于所有1 ≤ k ≤ (N + 1),输出$A_1, A_3, …, A_{2k - 1}A1​,A3​,…,A2k−1​$的中位数.即前1,3,5,…1,3,5,…个数的中位数. 用两个堆维护,大根堆维护较小的数里的最大值,小根对维护较大的数理的最小值,一次将每一个数插入,如果两个堆的大小差值大于1,即有一个堆中的元素并不符合实际要求, 要么大根堆里的元素维护多了一个值,要么小根堆里的元素维护多了一个值,那么这个多的…
先上一波链接 https://www.luogu.com.cn/problem/P1168 这道题我们有两种写法 第一种呢是线段树,我们首先需要将原本的数据离散化,线段树维护的信息就是区间内有多少个数, 每次加入两个数(也就是单点修改),查询的时候就是查找中位数((x+1)/2 )所在的位置 每次走到一个点 判断左子树中数字的个数(y)是不是就大于等于当前所找的数k 如果是 则往左子树继续走 如果左子树的数字个数(y)小于当前所找的数k,那么就将k减去y,再往右子树走,这样一直走下去就可以找到中…
题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], …, A[2k - 1]的中位数.[color=red]即[/color]前1,3,5,……个数的中位数. 输入输出格式 输入格式: 输入文件median.in的第1行为一个正整数N,表示了序列长度. 第2行包含N个非负整数A[i] (A[i] ≤ 10^9). 输出格式: 输出文件median.out包含(N + 1) / 2行,第i行为A[1], A[2], …, A…
Description 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], -, A[2k - 1]的中位数.即前1,3,5,--个数的中位数. N ≤ 100000 Solution 这题方法很多,这里介绍splay的打法 求中位数即求第$(k+1)/$2小的数,用splay维护即可,只有2中操作:插入,旋转 在树上记录一个\(c(u)\)表示节点\(u\)的子树有几个节点,用来判断第n小 只要在插入和旋转的时候维护就行了 Cod…
题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[3], …, A[2k - 1]的中位数.[color=red]即[/color]前1,3,5,……个数的中位数. 输入输出格式 输入格式: 输入文件median.in的第1行为一个正整数N,表示了序列长度. 第2行包含N个非负整数A[i] (A[i] ≤ 10^9). 输出格式: 输出文件median.out包含(N + 1) / 2行,第i行为A[1], A[3], …, A…
https://www.luogu.org/problem/show?pid=1168 题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[3], …, A[2k - 1]的中位数.[color=red]即[/color]前1,3,5,……个数的中位数. 输入输出格式 输入格式: 输入文件median.in的第1行为一个正整数N,表示了序列长度. 第2行包含N个非负整数A[i] (A[i] ≤ 10^9). 输出格式: 输出文件m…
传送门啦 基本思想就是二分寻找答案,然后用树状数组去维护有几个比这个二分出来的值大,然后就没有了: 数据要离散,这个好像用map也可以,但是不会: 那怎么离散呢? 我们先把a数组读入并复制给s数组,然后排序a: 这个时候a数组就有序了,我们就可以把s数组里的值通过二分找到其在a数组里的下标,这样就把1~1e9的数据压缩到1e5了: 这样的离散支持去重,支持不去重: 离散后我们应该怎么办呢?? 我们能用树状数组来维护前缀和: 那我们每增加一个数,我们就把他当作下标,在上面+1:然后我统计小于等于x…
什么毒瘤... 解:n = 1的,发现就是一个二次函数,解出来一个v的取值范围,选最大的即可. n = 2的,猜测可以三分.于是先二分给第一段路多少能量,然后用上面的方法求第二段路的最短时间.注意剩余能量不足跑完第二段路的时候,返回INF. 正解是啥拉格朗日乘子法,完全搞不倒... /** * There is no end though there is a start in space. ---Infinity. * It has own power, it ruins, and it go…
https://www.lydsy.com/JudgeOnline/problem.php?id=5285 https://www.luogu.org/problemnew/show/P4424 http://uoj.ac/problem/384 洛谷的题解已经很把思想过程完备地表达出来了:https://kelin.blog.luogu.org/solution-p4424 感觉比官方题解说的还清楚. 那么问题就是我们到底应该如何实现这个算法呢? 一个直观的想法是把每一位的数全部处理出来,然后…
题目描述 Being a secret computer geek, Farmer John labels all of his cows with binary numbers. However, he is a bit superstitious, and only labels cows with binary numbers that have exactly K "1" bits (1 <= K <= 10). The leading bit of each la…
洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的分配方案,使产生的总效益最大. 输入格式: 文件的第 1 行有 1 个正整数 n,表示有 n 件工作要分配给 n 个人做.接下来的 n 行中,每行有 n 个整数c ij,表示第 i 个人做第 j 件工作产生的效益为c ij . 输出格式: 两行分别输出最小总效益和最大总效益. 输入样例 5 2 2…