我是靠谱客的博主 靓丽翅膀,这篇文章主要介绍Codeforces Round #737 (Div. 2)(补题),现在分享给大家,希望可以做个参考。

B. Moamen and k-subarrays

在这里插入图片描述
在这里插入图片描述
题意: 长度为n的一个数组,让你划分几个子数组,子数组之间可以随意相互交换顺序,问你能否恰好划分k个子数组,使得数组按照非严格递减来排序
思路: 可以按照他们的值进行排序并根据他们排完序后的顺序付一个rank,再还原数组,若两个数之间的rank是连续的,说明可以放在一个子数组中。
也可以二分来做,直接对每个数二分找比他大的数是否是你当前数的下一个数,如果是,说明这两个数是连续的,不是就要归为两个不同的子数组。
也可以记录每个数的前驱来做,和上面原理一样
注意:计数器cnt一定要从1开始,最少1个子数组(一开始没注意,一直wa3)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int a[N], b[N]; int n, k; int main() { int t; scanf("%d", &t); while (t--) { memset(b, 0, sizeof(b)); memset(a, 0, sizeof(a)); scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); b[i] = a[i]; } sort(b, b + n); int cnt = 1; for (int i = 1; i < n; i++) { if (a[i] < a[i - 1]) { cnt++; } else { if (a[i] == a[i - 1]) continue; if (a[i] > a[i - 1]) { int t = upper_bound(b, b + n, a[i - 1]) - b; if (b[t] == a[i]) continue; else cnt++; } } } if (cnt > k) puts("No"); else puts("Yes"); } return 0; }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; struct node { int id; int x; int rank; } a[N]; bool cmp1(node a, node b) { return a.x < b.x; } bool cmp2(node a, node b) { return a.id < b.id; } int main() { int t; scanf("%d", &t); while (t--) { int n, k; memset(a, 0, sizeof(a)); scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) { scanf("%d", &a[i].x); a[i].id = i; } sort(a, a + n, cmp1); int cnt = 1; for (int i = 0; i < n; i++) { a[i].rank = i; } sort(a, a + n, cmp2); for (int i = 1; i < n; i++) { if (a[i].rank - 1 != a[i - 1].rank) { cnt++; } } if (cnt <= k) puts("Yes"); else puts("No"); } return 0; }

To be continued
如果你有任何建议或者批评和补充,请留言指出,不胜感激

最后

以上就是靓丽翅膀最近收集整理的关于Codeforces Round #737 (Div. 2)(补题)的全部内容,更多相关Codeforces内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(110)

评论列表共有 0 条评论

立即
投稿
返回
顶部