关注
贪心
可以通过有限次的分组和重排,使得书籍编号有序。
首先,需要将书籍按照编号从小到大排序,同时记录每本书原来的位置。
排序后,遍历排序后的数组,检查相邻两本书的原始位置是否连续。如果不连续,说明这里必须要进行一次分组。
统计需要分组的次数,如果这个次数不超过给定的 ,那么就可以实现目标。
#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
相关推荐
12-14 20:32
复旦大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 什么是优秀的实习经历 #
8431次浏览 211人参与
# 实习简历求拷打 #
12533次浏览 159人参与
# 被上班搭子“传染”了哪些习惯 #
5602次浏览 99人参与
# 秋招被挂春招仍然能投的公司 #
6843次浏览 99人参与
# 工作后,你落下了哪些病根 #
13523次浏览 189人参与
# mt对你说过最有启发的一句话 #
36030次浏览 429人参与
# 外包能不能当跳板? #
54107次浏览 256人参与
# 作业帮求职进展汇总 #
83098次浏览 547人参与
# 摸鱼被leader发现了怎么办 #
101441次浏览 643人参与
# 秋招特别不鸣谢 #
15751次浏览 177人参与
# 考研失败就一定是坏事吗? #
201104次浏览 1372人参与
# 选实习,你更看重哪方面? #
14144次浏览 216人参与
# 投格力的你,拿到offer了吗? #
152626次浏览 817人参与
# 今年秋招你收到了多少封邮件? #
18037次浏览 219人参与
# 京东美团大战,你怎么看? #
158123次浏览 860人参与
# 机械/制造每日一题 #
80261次浏览 1411人参与
# 担心入职之后被发现很菜怎么办 #
266297次浏览 1133人参与
# 第一次面试 #
1036510次浏览 13683人参与
# 携程求职进展汇总 #
840188次浏览 5536人参与
# 毕业论文进行时 #
20907次浏览 131人参与
