Processing math: 100%

[CF 618F]Double Knapsack

danihao123 posted @ 2018年4月24日 10:14 in 题解 with tags Codeforces 构造 , 793 阅读
转载请注明出处:http://danihao123.is-programmer.com/

我zzs就算掉光rating,R2爆炸,也不会做你们半道构造题!

啊构造题真好玩(一转)。

不妨钦定A中所有元素的和不大于B的。然后把两个集合按照任意顺序搞成一个序列,然后求出两者的前缀和SASB

考虑对于0...n的SAi,找出SB中不大于他的数中最大的一个(不妨设为SBj),可以发现有0SAiSBjn1(不然j还能再大)。然后发现:我们处理的ij的数对有n+1组,但是SAiSBj的取值却只有N种!也就是说一定存在iijj满足SAiSBj=SAiSBj

我们找出两对这样的数对,移一下项就可以构造一组解了。

代码:


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter