codeforces 1066 B heater
阿新 • • 發佈:2018-11-15
菜雞隻配做水題
思路就很簡單嘛:肯定擴充套件的越靠後邊越好了
0 0 1 0 1 1 0 0
假設範圍是3 ,第一個1一定要選上,第2、3個肯定選3啦,越靠後邊就一定能節省更多的點,沒看出來和子問題有什麼聯絡,基本上就是貪心
#include <bits/stdc++.h> #define ll long long #define mp make_pair #define x first #define y second using namespace std; const int maxn = 1005; int a[maxn]; vector<int> q; int main() { //freopen("in.txt","r",stdin); int n,k; scanf("%d %d",&n,&k); int cnt = 0; q.push_back(0); for(int i = 1; i <= n; ++i) { scanf("%d",a+i); if(a[i] == 1){ q.push_back(i); cnt ++; } } int cn = 0; int pos = 0; int ans = 0; while(cn < n) { int i; for(i = pos + 1; i < q.size(); ++i) { if(cn < q[i]-(k-1)-1) break; } if(i == pos + 1) { cout << -1 << endl; return0; } pos = i-1; cn = q[pos]+(k-1); ans ++; } cout << ans << endl; }