标签:待选 772 题解 形式 查询 答案 区间 Div 2n
vp→rk205,剩一个小时给E结果理解错题了,吃个饭回来发现题看错了然后就会了(
E
图论题
F
x 数组升序;查询区间 \([l, r]\) 内 \(|x_i−x_j|⋅(w_i+w_j)\) 的最小值
感觉比较合理的思路应该是:先考虑对整个区间的查询 → 考虑贪心推一下性质 → 假设(i,j)是答案,通过微调观察对答案的影响 → 得到答案的形式/特征( → 待选的答案可能有限,就可以从此下手)
假设 (i, j) 是答案,显然 (i, j) 之间的所有 w 都应该大于 w[i] 和 w[j],所以这就是答案的形式
转化一下,对每个端点 i,其和左边第一个w小等于其的位置构成一个可能的答案,和右边第一个w小等于的也构成一个,所以最多有 2n 个待选的答案数对,用个栈就能处理
回到区间查询,可能的答案依然满足上述的形式,想想会知道依然是从那 2n 个数对里选而且肯定有解
既然待选的答案有限,那么只需重新考虑这些待选的答案
那么问题就变成:询问属于 [l, r] 的带权区间中的最小权值是多少
离线+线段树就行了
另外注意一下题目问的是最小还是最大值,别想着想着就想反了
标签:待选,772,题解,形式,查询,答案,区间,Div,2n 来源: https://www.cnblogs.com/zhyh/p/15920854.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。