【发布时间】:2021-10-31 09:14:02
【问题描述】:
给定一个包含 N 个整数的数组 A。还给你一个整数 K。如果 A[i]<=A[i + k]、i = 1, 2, 3,.., n - k 则数组是好的
在一次操作中,您可以选择任何元素并将其转换为任意整数。
任务
确定使数组良好的最小操作数。 注意:假设基于 1 的索引。
我尝试了什么
int lis(std::vector<int>& a){
if(a.size() == 0) return 0;
vector<int> b;
b.push_back(a[0]);
for(int i = 1; i < a.size(); i++){
if(b.back() <= a[i]) b.push_back(a[i]);
else{
int idx = lower_bound(b.begin(), b.end(), a[i]) - b.begin();
b[idx] = a[I];
}
}
return b.size();
}
int minOperations(int n, vector<int> a, int k){
int cost = 0;
for(int i = 0; i < k; i++){
vector<int> b;
for(int j = i; j < n; j+=k) {
b.push_back(a[j]);
}
cost += b.size() - lis(b);
}
return cost;
}
部分正确
【问题讨论】:
-
这与 Python 有什么关系?
-
这个问题是在 HE 平台上的 Amazon Test 中提出的。我说的对吗?
-
for (int i=0;i
A[K+i]&& K+i 但包括它以供参考 if(A[i]