时间:2018年3月8日15:00-19:00 地点:清华大学东主楼实验室机房223
Problem 1
给两个字符串,忽略大小写比大小。输出那个字典序小的字符串(要转成全小写输出)。
Problem 2
给一简单表达式,形如 A ※ B = C。※可以是加、减、乘。也是字符串形式给出。会把A这个数字的某些位置挖成大写字母。大写字母的总种类数(即未知数数量)最多9个,并且只能取1-9可以取0-9,且不同未知数代表的数字不同。然后,问满足等式的解有多少组。
枚举0-9的全排列,共有10!种。由于数字最多是1e9,枚举每一种状态即可。复杂度刚好是 O(未知数数量!* 位数)。
接下来我们就进入了非水题部分。
Problem 3
对于一张图,含n个点。每个点有一个点权。对于任意一对 i < j,必有x条从 i 指向 j 的有向边,其中x的值为LCS1(val[i],val[j])。问,从节点1到节点n,有多少种走法?最终答案要mod一个数。就这个LCS1,我也不是很能懂。和队友的理解不同。存疑。
数据范围:n ≤ 1e5,val ≤ (1<<60)
考场上由于LCS1的理解,于是就只能保证了前20%的子数据。用dp去枚举路径,毕竟这个图也不成环,还是挺好的。其实事后听说LCS1只是表示二进制下的最长公共后缀所对应的十进制数,还是相当好求的。dp求路径简直不能再简单了!!!
Problem 4
给一个二分图,要求找到一个匹配(不一定完全匹配,只要收益最大就行。通俗来说,必须一夫一妻制),使得总收益最大。在二分图中,每个边都有两个权值a与b,把收益定义为:所有参与匹配的边,收益 = ∑a * ∑b。并且,从每一头公牛 i(就是左边那个集合中的点,二分图嘛,你们体会一下)发出的边只有两条,指向 x[i] 和 y[i] (x[i]是可以等于y[i]的)。并且从 i 发出的边,其两个权值均分别为a[i]与b[i]。
数据范围:n[公牛] ≤ 1000,然后a与b我忘了,反正long long是放得下的。
考场上暴力做了。枚举有效边集。(这次考试t2与t4都用了next_permutations)
Problem 5
有 n + 2 个座位,从0标号到 n + 1。其中第0个座位与第n + 1个座位不能被坐。与此同时我们还有n位同学。我们可以随意安排同学就坐的顺序,以及坐在哪里。每一个同学就坐时,如果他的左右两个座位都没有人,会有 a[i] 的收益;如果左右两个座位有一个有人,另一个空着,会有 b[i] 的收益;如果左右两个都有人,会有 c[i] 的收益。问可以取得的收益的最大值。
n ≤ 1e5,a、b、c放到long long一定没问题。
考场上写了一个小数据的状压dp(f[i][j]表示座椅状态为i(0与n+1不参与压缩,但是会特判的),人就坐的状态为j),仅对于 n ≤ 10的数据,但很可能被卡时。
正确的Solution以后会补上的。