codeforces Winter Is Coming 贪心

来源:互联网 发布:java 项目开发 图 编辑:程序博客网 时间:2024/06/05 18:06

题意:有n天,k次使用冬天轮胎的机会,无限次使用夏天轮胎的机会,如果t<=0必须使用冬轮,其他随意。问最少的换胎次数。


把两个冬天的间隔找出来,能消除一个间隔代表可以减掉两次换轮胎,一次换下一次换上,最后再比较一下能不能延续到最后即可


#include <bits/stdc++.h>using namespace std;int ans[200010];int main(){    int n,m;    cin>>n>>m;    int tot=0;    int num=0;    int wei=0;    int pre=0;    for(int i=1;i<=n;i++){        int x;        scanf("%d",&x);        if(x<0)        {            if(pre)            ans[++tot]= i-pre-1;            num++;            pre=i;        }    }        if(!num)    {        puts("0");        return 0;    }    sort(ans+1,ans+tot+1);    int h=m-num;    if(h<0)    {        puts("-1");        return 0;    }    int tt=num*2;    int f=0;    for(int i=1;i<=tot;i++)    {        if(h>=ans[i])        {            h-=ans[i];            tt-=2;        }    }    if(h>=n-pre) tt--;    printf("%d\n",tt);}


原创粉丝点击