关注
贪心
可以通过有限次的分组和重排,使得书籍编号有序。
首先,需要将书籍按照编号从小到大排序,同时记录每本书原来的位置。
排序后,遍历排序后的数组,检查相邻两本书的原始位置是否连续。如果不连续,说明这里必须要进行一次分组。
统计需要分组的次数,如果这个次数不超过给定的 ,那么就可以实现目标。
#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
相关推荐
昨天 10:34
黑龙江外国语学院 大数据开发工程师 点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 为了求职,我做过的疯狂伪装 #
8793次浏览 116人参与
# 从顶到拉给所有面过的公司评分 #
5857次浏览 68人参与
# 职场破冰,你们都聊什么? #
4681次浏览 53人参与
# 晒晒你的中秋福利 #
14229次浏览 83人参与
# 聊聊这家公司值得去吗 #
548850次浏览 3662人参与
# 广联达求职进展汇总 #
10300次浏览 50人参与
# 产品每日一题 #
60341次浏览 604人参与
# 实习要如何选择和准备? #
114111次浏览 1435人参与
# 机械人,你最希望上岸的公司是? #
181515次浏览 1894人参与
# 你面试被问到过哪些不会的问题? #
16162次浏览 648人参与
# 机械笔面试考察这些知识点 #
10004次浏览 89人参与
# 如何快速融入团队? #
31805次浏览 278人参与
# bilibili求职进展汇总 #
81342次浏览 754人参与
# 浪潮求职进展汇总 #
16174次浏览 131人参与
# 你觉得早上几点上班合适? #
81971次浏览 329人参与
# 上班后和你想的一样吗? #
78780次浏览 628人参与
# 工作压力大怎么缓解 #
104331次浏览 1043人参与
# 远景求职进展汇总 #
60993次浏览 317人参与
# 电网笔面经互助 #
46069次浏览 428人参与
# 秋招报数:你投了多少家公司? #
23170次浏览 235人参与