关注
贪心
可以通过有限次的分组和重排,使得书籍编号有序。
首先,需要将书籍按照编号从小到大排序,同时记录每本书原来的位置。
排序后,遍历排序后的数组,检查相邻两本书的原始位置是否连续。如果不连续,说明这里必须要进行一次分组。
统计需要分组的次数,如果这个次数不超过给定的 ,那么就可以实现目标。
#include <iostream>
(30316)#include <vector>
#include <algorithm>
using namespace std;
void solve() {
int n, k;
cin >> n >> k;
vector<pair<long long, int>> books(n);
for (int i = 0; i < n; i++) {
cin >> books[i].first;
books[i].second = i;
}
// 按编号排序
sort(books.begin(), books.end());
int groups = 1;
for (int i = 1; i < n; i++) {
// 如果相邻两本书的原始位置不连续,需要增加一个分组
if (books[i].second - books[i-1].second != 1) {
groups++;
}
}
// 如果需要的分组数不超过k,则可以实现目标
cout << (groups <= k ? "True" : "False") << endl;
}
int main() {
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}
查看原帖
3 4
相关推荐
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
31011次浏览 632人参与
# 机械人集合!你是什么工程师? #
15340次浏览 88人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
25995次浏览 212人参与
# 秋招什么时候开投比较合适? #
19108次浏览 275人参与
# 发工资后,你做的第一件事是什么 #
67582次浏览 229人参与
# 如何准备秋招 #
18149次浏览 350人参与
# 百度工作体验 #
219304次浏览 1957人参与
# 机械人与华为的爱恨情仇 #
116214次浏览 942人参与
# 工作中哪个瞬间让你想离职 #
25469次浏览 177人参与
# 硬件应届生薪资是否普遍偏低? #
73615次浏览 514人参与
# 不考虑转正,实习多久合适 #
31602次浏览 145人参与
# 影石Insta360求职进展汇总 #
123146次浏览 1069人参与
# 通信和硬件还有转码的必要吗 #
57267次浏览 526人参与
# 24届的你们都什么时候入职? #
59973次浏览 424人参与
# 面试被问期望薪资时该如何回答 #
256001次浏览 1479人参与
# 实习,不懂就问 #
41984次浏览 643人参与
# 你们公司几号发工资 #
20542次浏览 139人参与
# 软开人,秋招你打算投哪些公司呢 #
102444次浏览 958人参与
# 每个月的工资都是怎么分配的? #
25174次浏览 408人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28992次浏览 460人参与
# 你觉得现在还能进互联网吗? #
7520次浏览 130人参与