首页 > 其他分享 >【题解】AtCoder agc065_a Shuffle and mod K

【题解】AtCoder agc065_a Shuffle and mod K

时间:2023-12-17 23:45:02浏览次数:67  
标签:开头 题解 元素 agc065 次数 答案 序列 mod

传送门:https://atcoder.jp/contests/agc065/tasks/agc065_a  
为了方便理解,我们把要求的东西乘一个 $-1$,再把答案序列倒过来;也就是说,我们现在要求 $min_{A'}^{A'为A的排列}(\sum_{i=1}^{N-1}((A_{i+1}-A_{i})$ $mod$ $K))$
比较显然的是,如果我们确定了答案序列的第一个数是多少,那么后面最优的取法就是:设当前序列尾部为 $tl$,每次取还没有放进答案序列的数 $nw$ 里,$|nw-tl|$ 最小的一个,也就是(当我们把 $0$~$K-1$ 顺时针排在一个环上后)$tl$ 顺时针往后移的下一个(元素进入序列之后把它的剩余个数 $-1$,无剩余则从环上删除);
现在问题转化为要求出最优的开头元素。可以手算几个例子看一下,发现:如果开头元素 $hd$ 出现次数不是所有元素中最多的之一,那么当前答案一定不是最优的。举个例子大概就是:
比如说,当 $m=5$ 时,假设答案序列为:
$0、1、2、3、4、0、1、3、1、3、1$;
观察到,一开始 $0$~$4$ 全部出现,一轮后 $4、2$ 用完了,再一轮后 $0$ 也用完了,最后一轮 $3$ 用完了,只剩下最后一个 $1$;此时,序列开头为 $0$,但结尾轮没有 $0$,我们可以把 $0$ 移到结尾轮里它该在的位置($1$ 之前),这样我们发现答案只会减少而不会增加,因为 $0$ 在开头时和它之后的 $1$ 的距离现在不在答案中了,但 $0$ 被插入的新位置里,它前后的数原先的距离$=$它与二者的距离之和,也就是说,它的插入只是把原来前后两个元素之间的距离劈开了,对答案的总贡献没变。
因此,最优解中,序列开头的数必须在结尾轮中也有出现,也就是说,它的出现次数一定是所有元素中最大的之一。下面我们只需要决策,当有多个出现次数最多的元素时,我们应该怎么做。
最简单的情况是,所有元素的出现次数都最多为 $1$,此时问题相当于:在所有元素组成的环上去掉一个相邻两点之间的区间,使得剩下的链长最小;这时当然是去掉最大的相邻两点之间区间,也就是说,以两点中的一点为链的开头,另一点为结尾,这样开头就是确定的了。
手画两组,观察到这个结论可以拓展,也就是说,在每个元素最大的出现次数不为 $1$ 时,把所有出现次数最多的元素拿出来,排成一个环,应用刚才的做法即可得到开头(其实画一下可以发现,最后一轮只剩出现次数最多的元素了,前面几轮相当于在环上绕了很多圈,而无论在出现最多的元素里选谁开头,之前绕的圈数显然都是一样的);随后暴力把答案序列求出来,计算答案即可。离散化+用 $set$ 模拟一下每次取元素的过程求答案序列,时间复杂度 $O(n$ $logn)$。

标签:开头,题解,元素,agc065,次数,答案,序列,mod
From: https://www.cnblogs.com/hellstairs/p/17910111.html

相关文章

  • [AGC016D] XOR Replace 题解
    题目链接点击打开链接题目解法很有思维难度的一道题首先考虑简化操作(或者说用一种比较好的方法表示)假设我们选择交换的位置为\(x\),不难发现,操作等价于交换\(sumxor\)和\(x\)于是,有解的条件就好判了,即\(\{b_i\}\subseteq\{a_i\}\bigcap\{x\}\)操作可以理解为路径,即我......
  • 题解 ABC333F【Bomb Game 2】
    来个可能有点麻烦但不用动脑子的暴力做法。直接设\(f_{i,j}\)表示有\(i\)个人时,第\(j\)个人幸存的概率。显然有\(f_{1,1}=1\)。对于\(i>1\),分类讨论容易得到:\[f_{i,j}=\begin{cases}\frac{f_{i,n}}{2},&j=1\\\frac{f_{i-1,j-1}+f_{i,j-1}}{2},&1<j\lei\\\e......
  • 链表面试题解析
    链表面试题解析1.删除链表中=val的所有节点/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){this.val=val;}*ListNode(intval,ListNodenext){......
  • BZOJ4403 序列统计 题解
    题目传送门前置知识排列组合|卢卡斯定理解法记\(m=r-l+1,0\lek\len-1\),枚举长度\(i\),等价于求\(\sum\limits_{j=1}^{m}x_j=i\)的非负整数解的数量。接着推式子就行。\(\begin{aligned}\sum\limits_{i=1}^{n}\dbinom{m+i-1}{i}\end{aligned}\)\(\begin{aligned......
  • 【电子公文系统】常见问题解答
    Q:如何在电子公文系统中创建新文档?A:登录系统后,点击“新建文档”按钮,选择相应的文档模板开始编辑。编辑完成后,可以选择保存草稿或提交审批。Q:我忘记了我的登录密码,应该怎么办?A:在登录界面点击“忘记密码”链接,根据提示输入你的电子邮箱或电话号码以接收重置密码的......
  • Open-World Object Manipulation using Pre-trained Vision-Language Models
    概述提出MOO:ManipulationofOpen-WorldObjects用预训练的VLM在图像中标记instruction的object的坐标,传入policy进行控制,可以zero-shot泛化到novelobject,还支持手指、点击输入指令。问题机器人泛化到训练中没有见过或者操作过的object。perception-planning-control的pi......
  • 2023ISCTF的fry题解及进阶格式化利用
    这题是一个比较好的进阶格式化利用。就是有点繁琐。先惯例checksec一下心脏骤停hhh。没事先分析一下Main函数int__cdeclmain(intargc,constchar**argv,constchar**envp){init(argc,argv,envp);puts("WelcometoISCTF~~~~~~~~~~~~~~~~");puts("Doyouwantto......
  • [Ynoi2004] rpmtdq 题解
    人生第一发\(Ynoi\)的题,写一篇题解庆祝一下传送门我们可以发现,对于二元组\((x,y)\),若存在一个\(dist(i,j)\ledist(x,y),x<i<j<y\)那么答案肯定不是二元组\((x,y)\)我们可以考虑把这些肯定不是的点剔除掉考虑怎么找,我们可以先点分治,求出每个点......
  • AT_abc333_e [ABC333E] Takahashi Quest 题解
    AT_abc333_e[ABC333E]TakahashiQuest题解思路解析可以发现一瓶药水无论什么时候拿被使用掉的时间都是不会变的,所以如果我们想让一瓶药水再背包里待得时间尽可能的短就要让它尽可能的被晚拿起来,于是我们就可以想到使用栈存下每一瓶同类的药水分别出现的时间,此时每遇到一只怪......
  • Wordpress modown8.8.1主题学习版开心版
    Modown是模板兔基于Erphpdownwordpress下载插件开发的付费下载资源、付费下载源码、收费附件下载、付费阅读查看隐藏内容、团购下载的WordPress主题,本站提供Modown主题开心版,免授权使用,仅用于个人学习,禁止用于商业用途!!!下载地址:https://www.itwk.cc/circle/921.html......