酷神觉得题目太辣鸡,睡了一觉再秒了6题,辣鸡的滚粗狗,也就是我,默默地做了几道思博题,发发简要题解,题目难度从大思博题到小思博题。题源是VJ上WHUST 个人赛1
A题:给你一个数组,问要交换几次,怎么交换才能使得数组成为一个非降序序列,数组大小3K。
思路:开一个辅助数组用来存储原数组排好序的情况,然后N^2枚举对于第i个位置若排好序的数组的值跟原数组的值无法匹配,则往后找到对应和排好序数组值相同的值交换,并记录两者的位置,最后统计即可。
E题:N个男的和M个女的组队赛艇,但是要求其中一方的赛艇姿势不能比另一方姿势多1,否则另一方无法兹瓷,问最多能匹配多少对。
辣鸡的思路:分别对男生和女生排序,排序后nm的复杂度暴力找,找到了标记统计就好。
酷神的思路:对一个数组进行排序,对另一个数组进行计数统计,然后对排好序的数组中的每个元素在计数数组中是否出现,出现之后该计数数组自减,答案自增,显然只用判断vis[a[i]],vis[a[i]-1]和vis[a[i]+1]是否出现即可,然而这里先判断哪个出现很有讲究,酷神说要先把大的判断了再来判断小的目测,还是反了?好高端啊,然后整体复杂度就是O(max(N,M) )了。这种强行降低复杂度的姿势非常腻害啊,反正蒟蒻是不会的。
F题:给你两个数的位数m以及两个数的各个数位的和s,问如何构造出相差最大的两个数,如果没有,输出-1 -1。
思路:贪心,最小的从低位往高位贪,最大的从高位往低位贪,怎么贪呢?以最小的为例子,首先最高位置成1,然后后面的m-1位从后往前贪将和凑成s-1,显然在当前位置能放9就放9,不够9了就放当前的数字,位数不够前面补0即可,位数够了还没放完,把剩余的补在第一位即可。对于最大的那个数,从高位往低位贪心,思路类似,能放9放9,不能放9放当前剩下的数,位数不够补0。
坑点:如何是无解的情况呢?首先9*m<s必然无解,然后觉得s=0的话也会无解,前者没问题,后者请注意1 0这组输入,输出0 0是有解得= =。
G题:昂神有一个集合A,然后对于他的子集B,昂神定义了每个子集的价值是该子集中的最小元素,然后昂神想求出所有非空子集且元素个数为奇数的总价值和非空子集且元素个数为偶数的总价值的差的绝对值。
思路:看样例,手玩,输出集合A的最大值即可。。。
正解:好牛逼啊。
J题:问给你一个数N问怎么能够尽量分成数相加的形式,且分解后任意两个数不相同,任意三个数无法构成三角形。
思路:无法构成三角形说明啥,两边之和小于等于第三边,要分解的数尽可能的多,那么最好就是等于咯,所以变成了一个Fib的模型,只不过a1=1,a2=2,处理好之后直接找和不大于N最多需要几项便是答案。
B题:给你一个有向图,问你可以构成多少个下图的菱形。(图好像没了)
思路:邻接表建图,枚举起点终点和中转点统计只经过一个点到枚举的重点的路径数有多少条然后C(n,2)计算一下并累加就好了。鑫神好早以前就教过我了,而且告诉我说不要怕复杂度爆炸最后的复杂度是O(点数*边数)CF上1E8一点都不怂,不过好像还有DFS搜深度为2的做法?反正辣鸡不会。
I题:定义幸运数字由4和7构成,且4和7的数量相同,然后给个N,求大于N的最小的幸运数字。
思路:卧槽这题不得不说一下,老头子学长早就出过这题了,不过没有要求4和7的数量相同,且数据没这么大不过反正连飞巨巨帮我改过爆搜的代码。然后这里要4和7数字相同,肯定位数得是偶数吧,题中说数据不超过1E18那么在连飞的基础上改改就好了,枚举各种长度为偶数的且47均分情况,预处理后发现妈的T也好大不能暴力找,但是你是按位一个个生成的,有序则能二分,二分之后,答案就出来了。
综上:酷神牛逼啊,连飞牛逼啊,鑫神牛逼啊,老头子学长好有先见之明啊,我好菜啊= =|||论文看不懂,PY学不来,
感觉药丸啊。