【ACM】华科ACM春季开学新生赛1

因为在火车上,所以匆匆把第一道题AC了然后就晕车了,后续题解补题。


题目来源

A水题

B

做法:若全是同号且奇数个负则取绝对值最小值,否则取到绝对值最大值。如果取完后发现是负数,那么找到一正一负且abs(a[i])/abs(b[i])最大的那一个进行调整(也就是调整之后对绝对值影响最小)。

C

我们将i^2拆为i*(i-1)和i两项,然后我们发现i*(i-1)*C(n,i)拆式子之后会发现变成了n*(n-1)*C(n-2,i-2)这样式子就得到了简化。故最终结果ANS = n*(n-1)*(2^(n-2)) + n*(2^(n-1)-1)。

D 水题

E 题

写出几个发现就发现这是若干个置换环的形式,我们如果将整个环放入一个集合中就可以一起解决,部分环则解决部分。因此我们总是可以在两次内解决问题。我们考虑什么时候可以一次解决。1.所有冲突的位置加起来小于n/2,放入一个集合解决。2.我们将若干个环大小相加恰好为n/2则对称另外若干个环相加恰好为n/2。此时就可以了。但是考虑这个环相加发现是一个背包问题O(n^2),判断能不能恰好装到体积n/2,我们通过bitset优化可以卡过去((((。

F

二维dp,f[i][j]前i种买了j个,仅针对AB很好转移。而针对C,我们可以视为f[i][j] = max(f[i-1][j-m]+A+B+C*(m-2)),我们利用前缀和优化,改写一下f[i][j] = max( f[i-1][m] + A + B + C*j - C*(m+2)}故我们j从小到大枚举的时候只要找到最大的f[i-1][m]-C*(m+2)就可以实现转移C了。

posted @ 2022-02-27 19:44  Newuser233  阅读(77)  评论(0编辑  收藏  举报