竞赛
考级
#include <bits/stdc++.h> using namespace std; int a[1000005]; int main(){ int n,k,ans=0; cin>>n>>k; for (int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { if(a[i]==1) { for(int j=i;j<=i+k-1;j++) { a[j]=0; } ans++; } } cout<<ans; return 0; }
System
看了一下,目前题解都是 O(nk)O(nk)O(nk) 的,我也不知道为什么能过。 由于题目并没有说要输出数组,那么不妨考虑一种思路: O(n)O(n)O(n) 遍历数组,如果遍历到 aia_iai 是 111,就让 iii 往前跳 kkk 个位置。 最坏时间复杂度:O(n)O(n)O(n) 代码实现起来就简单了 100pts100pts100pts
复仇者_澜
鲁玮博
复仇者_烟云