Codeforces Round #323 B Robot's Task

来源:互联网 发布:纺织服装行业协会数据 编辑:程序博客网 时间:2024/05/29 14:27

题意:给你n个数,每选定一个数之后要找大于等于他的最小的,也就是从最小的开始找,然后找第一个大于等于他的,问将所有的数都找完最少需要换几次方向、

思路:直接模拟+贪心,一直到找完所有的数、从最小开始找,一直到找完,左边找完找又边,依次从左边的头或者右边的头开始找,一直到找完、

AC代码:

#include<cstdio>#include<cstring>const int maxn = 1100;int n;int a[maxn];int cnt,now;int vis[maxn];int main(){    while(scanf("%d",&n)!=EOF){        memset(vis,0,sizeof(vis));        cnt=0,now=0;        for(int i=1;i<=n;i++)            scanf("%d",&a[i]);        while(1){            if(cnt%2==0){                for(int i=1;i<=n;i++){                    if(vis[i]) continue;                    if(a[i]<=now){                        vis[i]=1;                        now++;                    }                }            }            else{                for(int i=n;i>=1;i--){                    if(vis[i]) continue;                    if(a[i]<=now){                        vis[i]=1;                        now++;                    }                }            }            if(now==n)break;            cnt++;        }        printf("%d\n",cnt);    }    return 0;}


0 0
原创粉丝点击