这是一个比较常见的trick,但是我蓝桥杯cb省赛上面没写出来,所以在这边进行笔记
1蓝桥杯原题链接.
贪心的思考,我们肯定是对当前能提升的倍数最大的进行+b操作,但是数据范围这么大,我们得把系数变换一下,并且寻找一个阈值
如果对于位置已经进行了k次操作,那么接下来再操作一次的倍数贡献:(sum+b[i])/(sum)=1+b[i]/(a[i]+k*b[i]),发现对于后面那个数越大,优先级越高,所以后面那个数的倒数越小,优先级越高,倒数为a[i]/b[i]+k,这就是我们寻找的优先级系数,因为这个优先级系数是每次操作+1,所以我们一定能找到一个整数阈值,使得当每个数到操作到>=阈值后,剩下的操作次数<=n,且>=0,这样的话我们又可以排序,进行一轮次数为res<=n的操作,把前res个再操作一次.
2链接.浙江25年省赛G
基本是一模一样,只能说题型刷少了
3.【规律未来杯】2026 广东工业大学校赛(同步赛)E 这道题也比较像,但是和前两题不一样,这题得算数值增幅,而不是倍数
同样地,我们处理出当前对i,操作t次的收益:k[i](2h[i]-2t-1),我们二分这个收益,并且处理出当前的总和,我们需要k[i](2h[i]-2t-1)<=mid,那么其实,这个方法有漏洞,因为可以存在若干个K[i](2h[i]-2t-1)==mid,所以我们还要单独判断一次,一个一个减就可以了



京公网安备 11010502036488号