BZOJ1071 [SCOI2007]组队

本文详细解析了BZOJ1071题目,即SCOI2007年的组队问题。通过创建并排序两个数组,分别基于运动员的特定属性进行操作,利用双指针技巧,枚举最小值并在数组中动态调整,确保在不遗漏和重复的情况下解决组合问题。重点在于如何在不断变化的最小值条件下,正确判断运动员是否符合条件。
摘要由CSDN通过智能技术生成

这题好神……

上学期某天和ljss做了这题,前两天commonc做,结果我俩都只记得这是一道神题……看了会代码终于想起来自己当时觉着这题神就是因为用俩指针扫了俩数组一个添加一个删除还能不重不漏

我们先把数组复制一遍,同时给每个运动员一个sum值代表A*h+B*s,a数组按h排序,b数组按sum排序

按任意顺序枚举v的最小值,不妨直接在a数组里枚举

对于每次外层枚举,令l和r=0

然后在a数组里升序枚举h最小值

用r扫b数组添加球员

把题里的式子移项,可知b[r].sum<=A*minh+B*minv+C时b[r]才可能被选中

这时b[r]还要保证v>minv,同时我们不能让v过大导致h作出负贡献,当只考虑v时就爆了C的时候h就只能作出负贡献才能使r被选中,所以把h从式子里去掉再移项得v<=mins+C/B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值