[ABC362C]Sum = 0

题目大意

给定\(N\)个区间,每个区间有左端点和右端点,问从每个区间选择一个数字,使得这些数字加起来为0,如果能,输出“Yes”,并且输出这些数字,否则输出“No”,

题解

这个题如果只是输出Yes或者No,我们将所有的左端点加起来,所有的右端点加起来,这就是所有数的范围,如果这个范围内有0,则是Yes,否则就是No

输出方案呢?

假设答案的范围是\([lsum,rsum]\),可以肯定的是\(lsum \leq 0,rsum \geq 0\),如果我们想要结果取0,那么答案需要偏移\(|lsum|\)那么多,我们贪心的想,从第一个区间开始,我们尽可能多的偏移,偏移量为\(r[i]-l[i]\),如果不够的话,则偏移\(|lsum|-l[i]\),后面所有的数都不发生偏移即可,所以这个题考查贪心

posted @ 2024-07-14 23:06  xinyimama  阅读(11)  评论(0编辑  收藏  举报