Day 2
开始发慌了……我想得回去干点事,效率好低啊。
A.
题意简述:
有a个A,b个B,c个C,d个D,求没有数相邻的方案数。
路径统计的简单版,a,b,c,d<=30。
考虑直接DP解决,我得改掉看到题思路僵化的习惯了。
B.
题意简述:
有m个东西,要分给n个桶,允许有的桶没有,允许一个桶放多个,要求有k个桶所装的物品数为奇数。
显然m和k不同奇偶时无解。把k个物品独立出来,把其他物品两个分一组,插版法解决。
公式为 C(n,k)*C((m-k)/2+n-1,n-1) 。
C.
题意简述:
定义⼀个集合的权值是这个集合内所有数字的和。
求一个集合的权值第k⼩⼦集的⼤小。 size<=38
很可疑,明明看上去是指数级复杂度却过不去。
考虑拆分集合,转化为序列合并问题,这种题当然是二分答案了。
D.
题意简述:
定义好集合为所有元素两两^起来小于它们的最小值。
求最大的好集合。
考虑一个一个集合是好集合的另外一个充要条件:
它的所有元素的最高位是一致的。
这样就可以简单做了。(ll害人.jpg)
E.
题意简述:
略。
因为这道题有后效性,考虑倒过来dp 令dp[i]表示从i点到结束(一定喝这杯)的最小时间。
显然答案=f[0],f[n+1]=0 dp[i]=min(dp[j]+caldis(i,j)) (i<j<=n+1)
我们发现,每个咖啡都有其等待时间和作用时间,你肯定希望,它在刚好喝完的时候接到下一杯,因为这样前面才没有白等。
可以证明,如果一定要选择这杯咖啡,在靠近这杯咖啡的作用结束时间的咖啡站拿下一杯是更优的。
当然,咖啡凉了以后,自然是一定要尽快新买的。
因而我们就有了决策单调性,用此优化dp即可。
F.
题意简述:
略。
考虑每次交换仅会使得逆序对减1,那么我们考虑强行算出逆序对,用二次函数的最值解决问题即可。