CF204 Div 1 题解

来源:互联网 发布:数据库编辑器有哪些 编辑:程序博客网 时间:2024/06/05 05:58

成红名了~感谢p神~~


A:

题意:有2n个实数,选出n个上取整,剩下的n个下取整,求操作后所有数之和与操作前所有数之和的差的绝对值的最小值和。n<=2000。

解:先把所有数都上取整,剩下的就是选出n个数改成下取整。注意到如果选的数是整数,则对和没有任何影响;不然会使和-1。数一下有几个非整数然后一路减下来就好了。


B:

题意:有一个1~n的排列a,甲和乙轮流操作。甲会选择相邻的一对数满足a_i>a_{i+1},然后交换;乙也会选择相邻的一对数交换,有0.5的概率会选a_i>a_{i+1},有0.5的概率选a_i<a_{i+1}。a成为升序时结束。甲希望用尽量少的步数结束,求期望步数。n<=3000。

解:甲每次会令逆序对-1,乙则有0.5的概率令逆序对+1,也有0.5的概率令其-1。令ans_x表示逆序对为x时的最少步数,有ans_0=0,ans_1=1以及ans_x=2+0.5*ans_{x-2}+0.5*ans_x,即ans_x=4+ans_{x-2}。


C:

题意:构造一个长度为n*m的合法括号序列,每位被编号为0~n*m-1。第i位是左括号的代价是a_{i mod n},是右括号的代价是b_{i mod n}。求最小的代价。n<=20,m<=10^7。

解:当时我猜了一个结论:最优的序列一定是长度为2n的合法序列的循环,或者开头和结尾的n个括号拼起来是合法序列,中间则是长度为n或者2n的循环。……实际上就是下面的这个东西。

结论:括号的层数不会超过n。……不知道怎么证,官方题解也没写证明……那么可以用DP求,令f[i][j]表示i个括号,j层的最小代价。官方的做法是求出长度为n的括号序列的转移矩阵,然后矩阵快速幂……我的做法就是用我猜的那个结论分类讨论……反正都能过。

不过我实在觉得我的做法不科学……p神神吐槽:“他有数据在测吗……”


D:

题意:定义一次操作为,选出一个所有元素相同,而且下标构成等差序列的子序列,然后删掉这些元素并给剩下的元素重新标号,可以任意打乱剩下元素的顺序。给定长度为n的序列a,有q次询问,每次询问一个子串最少要进行几次操作才能全部删掉。n,q<=10^5。

解:做完了第一次操作之后可以直接把所有元素排序,然后操作次数就是不同元素的种类了。不同元素的种类是经典问题,那么关键就在于第一次操作能否完全去掉一种元素。我们可以用莫队算法,对每种元素维护一个双端队列(deque),在加入/删除时判断一下就好了……

而判断的方法是,先预处理一个并查集。枚举所有权值,记这些数的下标为x[1..k]。如果x[i]-x[i-1]=x[i-1]-x[i-2],那么就把x[i]和x[i-1]在并查集中合并。如果deque中只有0个或1个元素显然成等差序列,否则找到deque中队首第二个元素和队尾的元素,判断它们在并查集中是否在同一块内,在则为等差序列。


E:

题意:给定一个长度为n的序列,可以将任意一些元素置成相反数。求序列最少的逆序对数。n<=3000。

解:rng_58:"Why is E E?"

官方给出的做法是某种神DP……实际上根本没有那么复杂。

我们先把所有数取绝对值。考虑一对数a_i和a_j。考虑其大小关系,以及两个数是取正还是取负,一共8种情况。乍一看好像要网络流?其实没那么麻烦……

我们观察到,一对数会不会成为逆序对,其实只和较大数的正负有关。那么考虑每个数成为较大数的数对个数,即其前面和后面比它小的数的个数。其前面比它小的数没有成为逆序对,而后面的成为了逆序对。取负之后,前面的会成为逆序对,而后面的不会。那么比较哪边的数更多来决定是否取负即可。

剩下的问题似乎在于相同的数的处理。其实不用处理的,因为从左到右前面比它小的数必然会越来越多,而后面比它小的数必然越来越少,所以一定是前若干个数取负,也就不存在逆序对。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 安装软件时解析包出现问题怎么办 鼻子吸进去的气往嘴巴里怎么办 做完瑜伽之后大腿后侧特别紧怎么办 刚下生小狗腿后腿站不起来怎么办 脚被凳子压到了流血了怎么办还很痛 小狗脚被凳子压出血了怎么办 怀孕8个月脐带绕颈一周怎么办 练完瑜伽大腿两侧肌肉麻木怎么办 突然吃了辣火锅肚子烫怎么办 副鼻窦炎鼻头顶痛鼻子臭怎么办 一岁宝宝夜里睡觉不踏实怎么办 分手一个月了还是放不下前任怎么办 当晚上遇到烦心事睡不着该怎么办 为什么白天太累晚上就睡不着怎么办 白天走累的脚痛晚上睡不着怎么办 1岁宝宝感冒咳嗽流泪流鼻涕怎么办 宝宝不含母乳只吃奶瓶怎么办 宝宝习惯奶嘴不咬妈妈的乳头怎么办 我的乳晕和私处色素沉着怎么办 双盘打坐膝痛腿脚心处紫青怎么办? 双盘打坐两膝盖不能着地怎么办? 做完蹲起之后腿疼的受不了怎么办 孩子游泳学不会不想去了怎么办 自由泳打腿走水但水花大怎么办 老师上课发现学生课上自慰怎么办 生完孩子腿粗屁股大怎么办 产后42天检查子宫偏大怎么办 崇拜瑜伽老师喜欢上他了怎么办 练瑜伽下不了腰贴不住腿怎么办 吃母乳宝宝吸的奶头疼怎么办 孩子吃奶把奶头咬破了怎么办 奶头边上让孩子咬破了吃奶疼怎么办 腰部受过伤久坐缓解腰疼怎么办 小孩八个月了还在软得很怎么办 产后第三天乳房胀痛有硬块怎么办 怀孕七个多月了胎位不正怎么办 怀孕6个月梅毒1:4怎么办 怀孕了胃酸胃涨吐酸水怎么办 怀孕了胃酸胃胀吐酸水怎么办 练瑜伽大腿外侧扭筋了怎么办 膝盖运动时疼痛睡觉不疼怎么办