hdu:2018 Multi-University Training Contest 1
1001:Maximum Multiple
题意:x+y+z=n,x|n,y|n,z|n,求x*y*z最大
做法:当时队友打了个表,看出来了规律(发现不会做,就打表,emmm)。记得 dls当时讲的是考虑 令x=n/a,y=n/b,z=n/c,
所以x+y+z=n/a+n/b+n/c=n,所以也就是 1/a+1/b+1/c=1,然后a,b,c有解的情况,
肯定有1/3,1/3,1/3;还有1/2,1/4,1/4;1/2,1/3,1/6;(至于为什么没有别的解,先放一下)
结果肯定就是n*n*n/(a*b*c), 那么肯定是 3*3*3最小,然后如果能被6整除,肯定前两种都可以,所以舍弃
1002:Balanced Sequence
题意:给我们多个字符串,我们将其排列,使得总串的合法序列(subsequence)最长
做法:贪心;对于括号,都是用栈来处理一下,每个字符串,最后剩下 ))))((((,这样的形式。
然后就是排序,首先 (((在最前面,))))在最后面,这样浪费的最少;
然后就是 )))(((((这种类型的, 我们的第一感觉都是按照 左边或者右边大的排序,因为之前都应该做过线段相交类型的题,
可以发现 )))((,))))((( 这样的反例(原因在于左右不存在单向的关系),可能我们又想能不能按照 a+b >b+a,这种思路来排 序呢,可能还是不太稳(好像可以啊,晚上试试,事实证明不对,qaq)? 题解链接
题解的排序是按照 A.l A.r ;B.l B.r的四种关系排序的,也就是考虑了所有的情况。
1003:Triangle Partition
做法:三点不共线,排个序,挨着取就好了
1004:Distinct Values
题意:构造一个长度为n的序列,满足m个事实,然后字典序最小
做法:dls的做法,我们记录每个点的最左边到哪里,也就是段的限制,然后逆序更新一下pre,有可能后面的包含了前面的点;然后我们就可以知道每个点的限制,如果更新到这个点,那么前面的指针就可以更新到pre[i]前一个,把过程中数字装到set中,然后我们能用的数字就是这些了。(自己STL的用法,还只是停留在 vis[]的水平,没能发挥出STL的全部功效) 题解
1007:Chiaki Sequence Revisited
题意:知道递推式,求前缀和
做法:当时,暴力打表,开始找矩阵系数,for都到6层了,还是没找到,当时是绝望的.jpg 打表可以验证,每个数字出现的次数是lowbit(val)次,也就是说转换为2进制后,后面有几个0,它就出现了几次,有了规律,就比较好算了。
所以,现在的问题就变为,我们怎样迅速找到,最后出现的数字是谁;有两种方法,一种 另一种;然后注意边界,搞一下就好了
1011:Time Zone
题意:时间转换
做法:转换成分钟,然后模拟一下,就好了;题解
!!!坑点:注意double和int之间转换的误差,所以加上个0.1,在这WA了一发,和sqrt(m+0.5)差不多的意思
hdu 2018 Multi-University Training Contest 2
1004:Game
题意:两个人拿数字,每次拿走一个数字和他所有的因子,问谁赢
做法:白书上博弈的原题,我们考虑1,假设第二个人进入了一种必胜的局面,那么第一个人完全可以抢先进入必胜态。还有一个同类型的题,就是拿巧克力。
1008:Naive Operations
题意:给区间加1;求区间和
做法:点更新是不存在的,肯定要区间更新,可是区间更新的话,每个点是除以不同的值;内心os:点和区间对立,这样就矛盾了,实际上只有区间更新 只不过要发现整除的特点,只是到了倍数的时候才会更新一次,这样的话,我们就可以减少很多的更新的次数,线段树确实有很多的题都是,貌似是点更新,后来一种就是更新几次之后,这个数值就不会变了,所以直接打个标记这个区域就不用更新了,还有的就是虽然查询的是区间,发现后面的有没有都无所谓了,这次这个是到了一定的阀值才去更新,线段树真有意思。
1010:Swaps and Inversions
题意:队友做的
做法:
牛客网暑期ACM多校训练营(第三场)
A:PACM Team
题意:N种物品,给了我们背包的各种容量,然后一个价值,问最后得到最大价值的话,输出具体哪些物品
做法:01背包模型。注意卡空间,滚动数组+longlong压缩状态
C:Shuffle Cards
题意:模拟操作,输出最后的牌
做法:伸展树
E:Sort String
队友做的
H:Diff-prime Pairs
题意:求[1,N]中,符合条件的pair数
做法:枚举一下公因子,然后二分一下,N除以公因子最大到哪个素数,这样的话,就直接P(n,2)就好了
牛客网暑期ACM多校训练营(第四场)
A:Ternary String
题意:一个可以增殖的串,问将其全部消去的时间(取模)
做法:推出公式,进行欧拉降幂;
难点:比较E和phi(p)的值,保留一个真实值,然后不断地和mod比较就好了
D:Another Distinct Values
题意:构造一个方阵,每行,每列的加和都不同;
做法:构造上三角都是1,下三角都是-1,对角线上101010不断的重复;而我就比较强了,我跑的网络流(逃)
F:Beautiful Garden
题意:很简单
做法:对称的找到最小值,就可以,当时SB写挫了,不应该看之前的代码,应该都是脑子里的,这样才能正确,很难受
G:Maximum Mode
题意:删掉一些值之后,众数唯一,且最大
做法:一个方向是多,一个方向是大。本来考虑是不是存在单调性,事实证明是不存在的,所以对于这种情况,我们只能枚举,看看到底最合适的地方在哪里,所以我们可以按照他们的出现次数排个序,然后计算就好了
过去一半了,自己的计划,1/4还没到,抓紧啊,兄弟