小美拿到了一个数组,她每次可以进行如下操作: 选择两个元素,一个加 1,另一个减 1。 小美总共进行了 k 次操作。她希望你回答最终数组是否是非降序,你能帮帮她吗? 请注意,元素可能会被减成负数!
第一行输入一个正整数 t ,代表询问次数。 每次询问首先第一行输入两个正整数 n 和 k ,代表数组长度和操作次数。 接下来的一行输入 n 个正整数 a_i ,代表初始数组。 接下来的 k 行,每行输入两个正整数 u,v ,代表使得第 u 个元素加 1,第 v 个元素减 1。 1≤ t,n,k,a_i ≤ 100
输出 t 行,每行输出该次询问的答案。 如果数组变成了非降序,则输出"Yes"。否则输出 "No"。
2 3 2 3 4 5 2 3 1 2 3 2 3 4 5 2 3 2 3
Yes No
考点:排序
数据规模 n ≤ 100 | 限制 1 秒 / 256MB | 标准输入输出
参考方向:排序
先用 O(n log n) 排序把无序变有序,后续处理往往就简单了。
思路框架(排序 通法 · 非本题专属)
实现要点:在 C++ 中用 std::sort,Python 用 sorted();注意自定义比较函数的严格弱序。
复杂度:时间 O(n log n) | 空间 O(log n) ~ O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 2 / 3 2 / 3 4 5 / 2 3 / 1 2 / 3 2 / 3 4 5 / 2 3 / 2 3 → 输出 Yes / No
第一组询问,操作两次后数组变成[4,4,4],为非降序。
第二组询问,操作两次后数组变成[3,6,3],并不是非降序。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年美团秋招编程岗第二批笔试。