zoukankan      html  css  js  c++  java
  • [CF738D]Sea Battle(贪心)

    题目链接:http://codeforces.com/contest/738/problem/D

    题意:1*n的格子里有a条长为b的船。有一个人射了k发子弹都没打中船,现在问最少再打多少次一定能保证射到一搜。

    统计出每一个子块中最多能多少条船,贪心地从左到右排列,记下船尾。假设有m条,那么除了m-a条船,剩下的位置一定能打中一条。就是打m-a+1个地方,随便打m-a+1个船尾就行了。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int maxn = 200200;
     5 int n, a, b, k;
     6 char s[maxn];
     7 vector<int> shoot;
     8 vector<int> seg;
     9 vector<int> bg, ed;
    10 
    11 int main() {
    12     // freopen("in", "r", stdin);
    13     while(~scanf("%d%d%d%d",&n,&a,&b,&k)) {
    14         scanf("%s", s+1);
    15         int cnt = 0;
    16         seg.clear();
    17         for(int i = 1; i <= n; i++) {
    18             if(s[i] == '1') {
    19                 cnt = 0;
    20             }
    21             else if(s[i] == '0') {
    22                 cnt++;
    23                 if(cnt == b) {
    24                     seg.push_back(i);
    25                     cnt = 0;
    26                 }
    27             }
    28         }
    29         int sz = seg.size();
    30         printf("%d
    ", sz);
    31         sz = sz - a + 1;
    32         for(int i = 0; i < sz; i++) {
    33             printf("%d%c", seg[i], i == sz - 1 ? '
    ' : ' ');
    34         }
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    kubectl 命令详解
    codeforce344 C report
    poj3041 建图+最小顶点覆盖(最大匹配数)
    poj1637 混合欧拉回路的判定
    poj1149 最大流好题 难在建图 好题
    targan 算法模板
    poj2186 强连通分量 targan算法的应用
    poj2723 2分 + 2-sat
    poj3061 尺取法
    poj3207 2-sat基础题
  • 原文地址:https://www.cnblogs.com/kirai/p/6083424.html
Copyright © 2011-2022 走看看