2018 Multi-University Training Contest

2018 Multi-University Training Contest 1
前言
已经菜到一定境界了


过题情况
1001.Maximum Multiple(926/3985)
1003.Triangle Partition(925/2140)
1011.Time Zone(878/5204)
补题情况
1002.Balanced Sequence(155/1469)
1004.Distinct Values(523/3336)


1.1011.Time Zone
模拟裸题,无题解
1.1011.Time Zone代码
https://paste.ubuntu.com/p/S92pbSSHRk/


1.1001.Maximum Multiple
1.1001.Maximum Multiple题意
给你一个整数n,要求x,y,z是n的因子而且x+y+z=n,求x*y*z的最大值。
1.1001.Maximum Multiple做法
我们假设
x = n a
y = n b
z = n c
我们可以列出方程
n a + n b + n c = n
由此
1 a + 1 b + 1 c = 1
我们知道解只有三个
a=3,b=3,c=3
a=2,b=4,c=4
a=2,b=3,c=6
我们知道如果c=6那么n也肯定可以拆成第一种拆法,而且3*3*3<2*3*6,所以我们只需要保留前两种拆法然后分类讨论即可。
1.1001.Maximum Multiple代码
https://paste.ubuntu.com/p/59XRdXJ4Nn/


1.1003Triangle Partition
1.1003Triangle Partition题意
给你一个平面上有3*n不会三点共线的点,让你构造一种选点方式,构造n个三角形而且这n个三角形两两不相交。
1.1003Triangle Partition做法
由于平面上不存在三点共线,所以我们只需要将点按横坐标排序,按顺序三个三个取出就可以了。
1.1003Triangle Partition代码
https://paste.ubuntu.com/p/4x2DryYgNJ/


1.1004.Distinct Values
1.1004.Distinct Values题意
题意就是构造一个长度为n的序列,有m个限制条件(l.r),每个(l,r)之间不允许出现相同的数,输出满足要求的序列中字典序最小的。
1.1004.Distinct Values做法
由于m个限制条件是无先后关系的,我们可以按照l排序,一个个扫过去,用一个优先队列,优先队列中存放的元素是当前可用于填充的元素,然后双指针扫过去就可以了,如果右指针扫到一个右端点,就把左指针滑到相应的左端点,并把可以用的元素加进优先队列。
1.1004.Distinct Values代码
https://paste.ubuntu.com/p/5RyzKkjvSX/


1.1002.Balanced Sequence
1.1002.Balanced Sequence题意
题意就是给你n个括号序列,对他们进行排序之后连接,保证最后的总括号序列合法子序列之和最长。
1.1002.Balanced Sequence做法
由于是括号序列,那么肯定有很多已经是合法序列的子序列,是否连接对答案的影响是固定的,我们可以将它们取出来,算进答案的贡献里面,这样每个括号序列就会变为)))(((这种形式
我们可以看这两个括号序列
) ) ) ) ) ) ) ) ) ( (
) ) ( ( ( ( ( ( ( ( (
很明显上面那种括号序列应该尽量放在后面,下面这种括号序列应该放在前面
我们再看这两种括号序列
) ) ) ) ) ( (
) ) ) ) ) ( (
同样都是右括号数量比较多,按照上面的处理应该都放在后面,但是如果这两种比较谁应该更靠后呢,很明显应该右括号多一些的尽量往后放,这样才能更容易获得匹配。左括号同理,于是我们只要按条件排序就可以了。
1.1002.Balanced Sequence代码
https://paste.ubuntu.com/p/8jJ9g3Zqp6/

猜你喜欢

转载自blog.csdn.net/qq_38891827/article/details/81319112