
排序
xyc1719
努力会说谎,但努力不会是白费
展开
-
省常中NOIP模拟 失意failure
【分析】转化为从n个区间中选m个区间使得区间交集最小。m个区间的交集一定是所有区间中的最大左端点和最大右端点夹出的区间。我们可以先将所有区间以左端点为第一关键字排序,当枚举到第i个区间时,选取1~区间i-1中前m-1大的右端点,并和第i个区间的右端点进行比较,取最小点更新答案。我们可以使用一个小根堆,每次將右端点加入堆再弹出最小值,保证每次堆中只有m个元素。用堆顶元素减去当前的...原创 2018-08-14 13:37:43 · 312 阅读 · 0 评论 -
魔法石
题目来源:CF1110E【简要题意】对于给定数列{a}能否通过对第2…n-1项进行ci=ci−1+ci+1−cic_i=c_{i-1}+c_{i+1}-c_ici=ci−1+ci+1−ci的变换得到数列{b}。数列长度小于等于1e5【分析】考场上就打了暴力判断头和尾是否相同,然后数据出锅,暴力就过了。。。。。正确解法是差分。暴力判断头尾之后,经过神奇的观察发现每次进行操作相当于...原创 2019-03-10 19:58:14 · 470 阅读 · 0 评论 -
【CF976E】match 比赛
【简要题面】现在有n个形如(x,y)的二元组。支持如下两个操作:1、x值加倍2、y=x现在支持a个1操作,b个2操作。求最大的Σy\Sigma yΣy【分析】有一个结论需要事先证明:对于一个人执行a次1操作,比对多个人执行a次操作要优。大致证明如下:先假定有两个二元组分别进行过一次加倍后为(a,b)和(c,d)。(显然两个二元组都有a>b,c>d,不然就不需要证明了)不...原创 2019-02-14 15:32:09 · 261 阅读 · 1 评论 -
势利的小卖部
【简要题面】有n个商品,实际价格为ai,价值是ci,需要口袋中钱≥bi时才可以购买。现在你有m元,求可以购买到的最大价值。n<=500,m<=5000【分析】第一眼看上去像是背包,果然不是。。。。仔细分析发现应该需要dp,因为一样商品能否购买只与当前剩余的m值和bi值有关。问题在于哪些商品先买,哪些商品后买。简而言之,就是求拓扑序,直接证明一下就可以了。证明过程从简:1、假设两...原创 2019-02-15 13:38:28 · 268 阅读 · 0 评论 -
思考熊的马拉松 running.cpp
【一句话题意】给n个点,每个点速度不一地在长为A圆形跑道上跑步,当最快点跑完L圈时,问发生了多少次套圈。【分析】可以根据最快点,算出所有点的跑的圈数和不到一圈的部分。先根据每个人跑的圈数求出大致意义上的套圈数。又考虑到有可能在剩余部分中也存在套圈,求剩余部分比第i小的点的个数加上就是答案,查询时用离散化后的树状数组(或线段树),总复杂的为O(nlog2n)O(nlog_2n)O(nlog2n)...原创 2018-11-05 15:01:15 · 427 阅读 · 0 评论 -
决赛 【数据结构】【排序】【贪心】
【一句话题意】题目大意:有 题目大意:有 N类询问 区间 [l[i],r[i]]各 s[i] 个。有 M类可用区间 [l[i],r[i]]各t[i] 个,现在要对每个询问区间配对上一个包含它的可用区间。n,m<=4e5【分析】先按左端点排序n+m个区间(当节点数相同时可用区间在前),如果是可用区间相当于在ri点添加了ti个点。如果是询问区间,则贪心删去在ri点及其右边的si个后继,如果不...原创 2018-11-06 16:19:21 · 142 阅读 · 0 评论 -
排名【二分答案】【数据结构+模拟】
【一句话题意】给定n个人的初始位置,再给出每个人的速度,问在无限长的跑道上前m次“追赶事件”(一个人超过另一个人)n,m<=1e5【分析】这道题二分答案乱搞,先二分时间,再归并排序求逆序对,然后有个不强和另一个超强的剪枝。(弱)如果二分出的mid,求得的逆序对个数等于m,则跳出循环。(强)如果逆序对个数已经大于m了,则结束归并排序。std是说,用链表模拟(或者说维护?)相对位置,再用优...原创 2018-11-06 16:03:48 · 179 阅读 · 0 评论 -
序列 sequence.cpp
【一句话题意】有一个序列,定义f(x)为x在十进制下的位数,特别地,求对于序列Σ1≤i&lt;j≤nf(ai+aj)\Sigma_{1≤i&lt;j≤n}f(a_i+a_j)Σ1≤i<j≤nf(ai+aj)【分析】先将序列从小到大排序。枚举i点,再二分i点左边最小的使aia_iai进位的点。时间复杂度O(nlog2n)O(nlog_2n)O(nlog2n)【c...原创 2018-11-01 16:59:58 · 348 阅读 · 0 评论 -
排序 sorting.cpp
【一句话题意】给一个序列问能以否以小于等于一次交换的方式完成排序。 序列长度小于1e5【分析】第一眼感觉是暴力,果断会超时;再想这不是问序列能否通过一次交换达到目标状态吗。又因为排序后的结果可以sort暴力求出且结果一定是惟一的,所以直接比较排序前后状态就可以了。【code】#include<cstdio>#include<cstring>#include<...原创 2018-10-30 13:49:57 · 134 阅读 · 0 评论 -
国庆七天测(五)马里奥
【一句话题意】给一个图,有一些可以空岛可以落脚。左右相邻的空岛之间移动不需要梯子,在同一列的空岛之间上下移动需要长度大于等于高度差的梯子。问从起点到终点至少需要多长的梯子。【算法一】鉴于拥有固定长度的梯子,跑一遍bfs确定是否可行的复杂度是O(n)的,且答案关于梯子长度单调。我们可以二分答案,二分梯子的长度再check。总复杂度为O(nlogn)【算法二】格子图的求到某个点的最小值,一般可以用...原创 2018-10-05 15:09:42 · 134 阅读 · 0 评论 -
国庆七连测(四)
题目比较简单,没有什么好讲的。放一下题目。SP16244 KUSAC - KusacSP16409 LOPOV - LopovSP16180 RATAR - Ratar代码:Kusac#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>usin...原创 2018-10-04 16:52:45 · 217 阅读 · 0 评论 -
国庆七连测(二)多段线性函数
【冗长的题目描述】目标是使得f(y)尽可能的小,并求出y的取值范围。【算法1】根据数学证明,f(y)应该是成u形或者平底锅形,所以二分或者三分求“谷底”就可以了。复杂度为O(n* log2n)【算法2】rt,我们考虑多段的线性函数。对于每一个绝对值函数。y<li时,等于-y+li;li<=y<=ri时,(最小)等于0;y>ri时,等于yi-ri;将这n个函数...原创 2018-10-02 16:45:26 · 234 阅读 · 0 评论 -
ISIJ 2018 奇怪的字符串
ISIJ 2018 奇怪的字符串(Training Round D6T1)题目名称:奇怪的字符串文件名称:strange.in / strange.out题目描述考虑字符串 s 仅由小写字母组成,例如 “abba”。定义 W(s) 为 s 所有本质不同的连续子串的集合,例如 W(“abba”) = { “a”,”b”,”ab”,”ba”,”bb”,”abb”,”bba”,”...原创 2018-08-16 18:30:31 · 631 阅读 · 0 评论 -
省常高NOIP模拟 指引guide
【分析】做这题可以参考昨天T2的“荒诞”。直观上来说我们每个旅者可以备选的出口是从他自己的坐标,到右上边界的一个矩形。 下图是神奇的两个旅者可以选择的矩形范围: 同时考虑x、y坐标,会显得很难下手。我们考虑将旅者和出口的坐标按x坐标排序,再暴力沿x坐标从高到低枚举。这时我们就只要考虑出口y坐标是否比旅者大就可以了。我们可以使用一种神奇的贪心策略,本着“过了这旅者就会少一人”...原创 2018-08-13 19:08:54 · 513 阅读 · 0 评论 -
【算法进阶0x00】七夕祭
【题面】           \;\;\;\;\;\,TYVJ七夕祭和11区的夏祭的形式很像。矩形的祭典会场由N排M列共计N×M个摊点组成。虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧、苹果糖、棉花糖、射的屋…...原创 2019-03-31 17:08:21 · 482 阅读 · 0 评论