关注
贪心
可以通过有限次的分组和重排,使得书籍编号有序。
首先,需要将书籍按照编号从小到大排序,同时记录每本书原来的位置。
排序后,遍历排序后的数组,检查相邻两本书的原始位置是否连续。如果不连续,说明这里必须要进行一次分组。
统计需要分组的次数,如果这个次数不超过给定的 ,那么就可以实现目标。
#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
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 生物制药/化工校招攻略 #
72855次浏览 338人参与
# 拿到offer之后,可以做些什么 #
84028次浏览 437人参与
# MiniMax求职进展汇总 #
1041次浏览 23人参与
# 你觉得面试是靠实力还是靠运气 #
27112次浏览 298人参与
# 牛客十周岁生日快乐 #
203833次浏览 1913人参与
# 哪些公司在招寒假实习? #
21813次浏览 285人参与
# 职场新人体验 #
159654次浏览 1131人参与
# 硬件/芯片公司工作体验 #
142125次浏览 941人参与
# 怎么防止在试用期被辞退 #
153709次浏览 959人参与
# TCL求职进展汇总 #
139760次浏览 658人参与
# 卷__卷不过你们,只能卷__了 #
14647次浏览 324人参与
# 招聘要求与实际实习内容不符怎么办 #
149738次浏览 890人参与
# 国企vs私企,你更想去? #
306531次浏览 2496人参与
# 荣耀求职进展汇总 #
1106166次浏览 5652人参与
# 为了实习逃课值吗? #
60470次浏览 508人参与
# 业务面应该做哪些准备 #
86819次浏览 876人参与
# 秋招遇到的奇葩面试题 #
103131次浏览 422人参与
# 26年哪些行业会变好/更差 #
21998次浏览 315人参与
# 写论文的崩溃时刻 #
8064次浏览 170人参与
# 腾讯音乐求职进展汇总 #
148491次浏览 1058人参与
# 去年的flag与今年的小目标 #
12112次浏览 229人参与
查看15道真题和解析

京东公司氛围 301人发布