暑假集训 第二周

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

题意:删掉一些值之后,众数唯一,且最大

做法:一个方向是多,一个方向是大。本来考虑是不是存在单调性,事实证明是不存在的,所以对于这种情况,我们只能枚举,看看到底最合适的地方在哪里,所以我们可以按照他们的出现次数排个序,然后计算就好了

J:Hash Function

 

过去一半了,自己的计划,1/4还没到,抓紧啊,兄弟

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值