首页 > 其他分享 >做题小计:ARC120D

做题小计:ARC120D

时间:2024-03-15 22:37:41浏览次数:22  
标签:limits 标记 ARC120D 小计 做题 绝对值 序列 尽量 sum

传送门:Luogu

题意讲的很清楚了,不再赘述。

首先我们看一下这个式子。

\[\sum\limits|a_i-a_j| \]

添加了绝对值,似乎不太好维护。如果还是看做一位位取的话,我们不知道当前的数比后面的数是小还是大,无法确定正负号。

绝对值不好搞,就拆绝对值。

\[\sum\limits_{i=1}^n (-1)^{[a_i< a_j]}\times a_i \]

这个式子可以分开两部分的贡献来看,正数和负数。我们把这两部分拆出来。

\[\sum\limits_{i=1}^n {[a_i> a_j]} a_i -\sum\limits_{i=1}^n[a_i\le a_j]a_i \]

一个贪心的思想,就是前面的部分尽量大,后面的部分尽量小。

根据这个贪心,我们不难发现一个结论:把原序列中尽量大的数与尽量小的数匹配是一定不劣的。这样尽量多大的数可以贡献到正数部分。

不难想到前 \(k\) 大都取正是一定最优的。但是我们不知道 \(k\) 应该取什么。根据取前 \(k+1\) 大一定优于前 \(k\) 大,这时思考是否可以二分答案?每次二分前 \(mid\) 大是否满足即可。

现在我们思考一下怎么判断一个序列是否合法。

判断合法相当于给前 \(k\) 大的数打上标记,令这 \(k\) 个数不能满足任意两个数在同一括号匹配里。

根据这样,我们似乎在手推的过程中发现一个重要的结论:似乎只要 \(k\le \frac{n}{2}\) ,序列一定能取到合法值?

oier 不会证明,但我会构造!
——Lgx_q

我们发现可以根据这样一个方法构造出一个合法序列:

  • 准备一个栈存数

  • 不妨令当前遍历到第 \(x\) 个数:

    • 目前栈为空,将 \(a_x\) 入栈。

    • 否则分类讨论:

      -若栈内的数打了标记 且 \(a_x\) 没有打标记 或 栈内的数没打标记 且 \(a_x\) 打了标记

标签:limits,标记,ARC120D,小计,做题,绝对值,序列,尽量,sum
From: https://www.cnblogs.com/g1ove/p/18076385

相关文章

  • 3.15pht做题笔记
    3.15pht做题笔记C考虑先枚举学生\(j\),再枚举问题\(x\),接着枚举该问题回答相同的同学\(i\)根据鸽巢原理,每个同学有效枚举的次数肯定不会超过\(O(nk)\),所以总复杂度是\(O(n^2k)\)D先想确定\(k\)之后怎么做,从\(1\)到\(n\)枚举\(a_1\)的位置,每次只会交换两组......
  • 做题小计 ARC170E
    我觉得很强的题目。传送门:Luogu分析分析问题本质。根据大量推理,发现问题再描述这样一个东西:一开始有\(a,b\),一开始有\(p\)的概率使得\(a\)加一,\(1-p\)的概率使得\(b\)加一。进行\(n-1\)次操作,每次操作如下:有\(p\)的几率与上一次操作的数相同有\(1-p\)的......
  • 关于信息学奥赛中的一些做题思路
    观前须知Sugar_Cube的博客园主页背景介绍本文记录了笔者在刷题或比赛中运用到的一些做题思路可以适当参考正文LuoguP2048超级钢琴首先显然有\(\mathcal{O}(n^2)\)暴力枚举每个子段,然后选择其中前k大的那么可以发现有贪心策略:选择k次最大值那么考虑怎样求最大值想......
  • 做题笔记2024.03
    2024.03.12#1CapitalismCF1450E奇环显然无解有解就直接差分约束就行https://www.luogu.com.cn/record/150592177[2024.03.12#2LEGOndaryGrandmasterCF1615F]不是自己想的/kk看了题解,感觉都说这个转换是显然的,还是太菜考虑将所有偶数位的数先翻转一次,这样原来的操作......
  • 做题小计 arc172e
    传送门*2300牛逼打表题。这个式子很不可思议,让人无从下手。选择打表找规律。由于\(2\nmidX\)和\(5\nmidx\)这些数我们可以跳过通过打表前\(10000\)的数,我们发现似乎没有重复的。继续打表\(1000000\)也没有重复的。直接大胆猜想,\(10^9\)内的\(n^n\)是构成无冲......
  • 做题小计 arc170c
    *2000*dparc170c我觉得很妙的dp题目。Solution一眼下去,似乎所有\(1\)的位置是固定的,其余位置随便填,答案就是\(m^{count(1)}\)?这一步在\(m\gen\)的时候是对的。但是\(m<n\)的情况很不好搞。序列问题容易想到dp。看题目,考虑要记录什么值。发现\(mex\)很难搞......
  • 做题思路
    堆由开发人员申请和释放空间(容易内存泄露);栈由系统自动分配释放H5新增:语义化(header等);媒体(video等);canvas;表单控件(time,data等);存储(sessionStorage);websocket反转链表思路:把原链表分成三份:pre(原链表),cur·tmp(即将处理的链表cur.next=null),p(处理完的新链表);总结:原理挺简单的,但是要注......
  • 图的着色小计
    问题引入有\(n\)个小孩子,它们有\(m\)对讨厌关系,每对关系约定为小孩\(p\)与小孩\(q\)不能再一起玩。现在你要给这些小孩分组,求最少要分成几组才满足每组小孩都不会发生矛盾。问题抽象我们抽象这个问题。关系可以想到二分图,但是每对关系会互相约束,显然不行。那么可以......
  • 做题思路
    前序遍历:根节点,左节点,右节点中序遍历:左节点,根节点,右节点后序遍历:左节点,右节点,根节点总结:名称是依据根节点位置命名的,左节点永远在右节点前面快速排序:base,right,left三个节点。base与right比较,如果right比base大,左移;反之,和left替换,left右移;base和left比较,比base大,和right替......
  • NewStarCTF 2023 公开赛道 做题随笔(WEEK1|MISC部分)
    第一题下载打开得到TXT文件好的看样子应该是base32,复制到base在线转换看看得到这玩意 base58转换得到 出了flag  第二题 下载得到一张二维码用隐写软件试试得到一张这个以为是摩斯密码,试试得到有个这玩意,嘶,好像不是试试LSB 得到flag 第三题......