Codeforces Round #552 (Div. 3)-D-Walking Robot-(贪心)

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

解题:

1.无光的时候优先使用太阳能电池。

2.有光的时候

(1)太阳能电池没满电,让它充,使用普通电池

(2)太阳能电池满电,使用太阳能电池

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<vector>
#include<iostream>
#include<cstring>
#include<set>
#include<queue>
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;

int n,a,b;
int s[200005];

int main()
{
    while(scanf("%d%d%d",&n,&a,&b)!=EOF)///路段 普通电池 太阳能电池
    {
        for(int i=1;i<=n;i++)
            scanf("%d",&s[i]);
        int maxx=b;
        int sum=0;
        for(int i=1;i<=n;i++)
        {
            if(s[i]==0)///无光
            {
                if(b)///优先使用太阳能电池
                {
                    b--;
                    sum++;
                }
                else if(a)///其次使用普通电池
                {
                    a--;
                    sum++;
                }
                else
                    break;
            }
            else ///有光
            {
                if(b==maxx)///太阳能满了就优先使用它
                {
                    b--;
                    sum++;
                }
                else if(a)///太阳能没满就让太阳能充电,用普通电池
                {
                    b++;
                    sum++;
                    a--;
                }
                else if(b)///太阳能没满,但是普通电池已经用完了
                {
                    b--;
                    sum++;
                }
                else
                    break;
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}
View Code

 

posted @ 2019-05-08 23:36  守林鸟  阅读(239)  评论(0编辑  收藏  举报