关注
贪心
可以通过有限次的分组和重排,使得书籍编号有序。
首先,需要将书籍按照编号从小到大排序,同时记录每本书原来的位置。
排序后,遍历排序后的数组,检查相邻两本书的原始位置是否连续。如果不连续,说明这里必须要进行一次分组。
统计需要分组的次数,如果这个次数不超过给定的 ,那么就可以实现目标。
#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
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 腾讯音乐求职进展汇总 #
57241次浏览 343人参与
# 你的秋招第一面感觉怎么样 #
61510次浏览 501人参与
# 牛友故事会 #
317815次浏览 8618人参与
# 互联网公司评价 #
348971次浏览 3633人参与
# 互联网回暖,腾讯要招5000+人! #
259131次浏览 4875人参与
# 怎么防止在试用期被辞退 #
110322次浏览 849人参与
# 秋招投简历越早越好吗 #
61094次浏览 605人参与
# 百度工作体验 #
188421次浏览 1845人参与
# 国企vs私企,怎么选? #
18190次浏览 157人参与
# 我在牛爱网找对象 #
161561次浏览 1224人参与
# 盲审过后你想做什么? #
9754次浏览 93人参与
# 面试等了一周没回复,还有戏吗 #
101339次浏览 938人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
89809次浏览 670人参与
# 聊聊这家公司值得去吗 #
195546次浏览 2061人参与
# 职业发展规划如何回答 #
29653次浏览 167人参与
# 没有实习经历还能找到好工作吗? #
6857次浏览 38人参与
# 25届网易互娱暑实进度 #
63028次浏览 603人参与
# 你认为工作的意义是什么 #
120188次浏览 909人参与
# 实习要如何选择和准备? #
20291次浏览 374人参与
# 你的办公桌上都有什么? #
3634次浏览 29人参与