您的位置:首页 > 其它

CF 400B - Inna and New Matrix of Candies

2014-03-16 19:36 309 查看
英语是硬伤。题目大意:每次能让所有不在糖果上的小人一直往右移动直到:

1.到达最右边    2.到达糖果

求所有棋子到达糖果的最小步数,没有则-1。

思路:暴力模拟

不断找到最短的d(minD),往右移动minD步(即所有d减小minD),直到所有d都为0

#include<stdio.h>

const int N=1002;
char mp

;
int g
,s
,d
;
int min(int a,int b){
return a>b?b:a;
}
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)
scanf("%s",mp[i]);
int lose=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(mp[i][j]=='G')
g[i]=j;
else if(mp[i][j]=='S')
s[i]=j;
}
if(g[i]>s[i])
lose=1;
d[i]=s[i]-g[i];
}
if(lose){
printf("-1\n");
return 0;
}
int ans=0;
for(;;){
int minD=N;
for(int i=0;i<n;i++)
if(d[i]>0)
minD=min(minD,d[i]);
if(minD==N) break;
//printf("%d\n",minD);
for(int i=0;i<n;i++)
if(d[i]>0)
d[i]-=minD;
ans++;
}
printf("%d\n",ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: