zoukankan      html  css  js  c++  java
  • CF 738D 贪心

    http://codeforces.com/contest/738/problem/D

    题意:小时候玩的潜艇游戏,只不过题目是在一维上面,已知有一些长度为L的潜艇,玩家已经侦测了一些位置但是没有发现潜艇,问题是玩家再侦测那些位置可以确保发现潜艇。

    思路:贪心取就好,首先把可能有潜艇的区间拿出来(长度大于等于L的),然后对于这些区间每隔L就取一个,并且可能放的最多的潜艇-1,重复上述过程,直到不能再将m个潜艇放在剩下的位置,那么就确保一定发现了潜艇。。。

    代码:

    #include <bits/stdc++.h>
    
    using namespace std;
    int n,a,b,k;
    string s;
    vector<pair<int,int> > v;
    vector<int> ans;
    int main(){
        cin>>n>>a>>b>>k>>s;
        int tot=0,be=0;
        int sum=0;
        for(int i=0;i<s.size();i++){
            if(s[i]=='0'){
                tot++;
            }
            else{
                sum+=tot/b;
                if(tot>=b)
                    v.push_back(make_pair(tot,be));
                tot=0;
                be=i+1;
            }
        }
        if(s[s.size()-1]=='0'){
            sum+=tot/b;
            if(tot>=b)
                v.push_back(make_pair(tot,be));
        }
        for(int i=0;i<v.size();i++){
            if(sum<a) break;
            int x=v[i].first;
            int be=v[i].second;
            int ll=be+x;
            //cout<<"B"<<be<<" "<<be+x<<endl;
            while(be+b<=ll){
                ans.push_back(be+b);
                be=be+b;
                sum--;
                if(sum<a) break;
            }
        }
        printf("%d
    ",ans.size());
        for(int i=0;i<ans.size();i++){
            printf("%d ",ans[i]);
        }
        return 0;
    }



  • 相关阅读:
    09_注解01
    hasattr() getattr() setattr() 函数使用方法
    xpath
    you-get
    Out of range value for column 'phon' at row 1
    五, Authentication和Permissions
    四,ViewSets和Routers
    二,Request和Response
    一,Serializer和ModelSerializer
    三,APIView、GenericAPIView、Mixins总结
  • 原文地址:https://www.cnblogs.com/zhangxianlong/p/10672525.html
Copyright © 2011-2022 走看看