zoukankan      html  css  js  c++  java
  • hdu5319 Painter(模拟)

    题目链接:点击打开链接

    题目大意:给一个矩形。有两把刷子,一把刷红色,一把刷蓝色,红色的方向是东南,蓝色的方向是西北,红色加蓝色等于绿色,如今已知这面墙当前的状态。求从白墙到这个状态最少刷了多少次。

    思路:由于仅仅能沿对角线刷。所以要最少肯定是对角线上的连续的颜色所有一次刷完。直接模拟就可以。

    哎。题目读错好几次。wa了好几发,差点报警了。

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char mp[55][55];
    	int T,n,i,j,k,ans;
    	bool vis[55][55];
    	scanf("%d",&T);
    	while(T--)
    	{
    		ans=0;
    		scanf("%d",&n);
    		for(i=0;i<n;i++)
    		scanf("%s",mp[i]);
    		int l=strlen(mp[0]);
    	
    	  for(i=0;i<n;i++)
    	  for(j=0;j<l;j++)
    	  {
      		
    		  if(mp[i][j]=='G'){
      		        	int x=i+1;
    			  		int y=j+1;
    	  			while(1){			  		
    			  		if(x<0||y<0||x>=n||y>=l)break;
    			  		if(mp[x][y]=='R')mp[x][y]='.';
    			  		else if(mp[x][y]=='G')mp[x][y]='B';
    			  		else if(mp[x][y]=='.'||mp[x][y]=='B')break;
    			  		x++;y++;
    			  	}
    				  	x=i+1;y=j-1;
    				  	while(1){
    		  			if(x<0||y<0||x>=n||y>=l)break;
    			  		if(mp[x][y]=='B')mp[x][y]='.';
    			  	else  if(mp[x][y]=='G')mp[x][y]='R';
    			  		else if(mp[x][y]=='.'||mp[x][y]=='R')break;
    			  		x++;y--;
    		  		}
    		  		ans+=2;
      		}
    		  else	if(mp[i][j]=='R'){
    		  		int x=i+1;
    			  		int y=j+1;
    	  			while(1){			  		
    			  		if(x<0||y<0||x>=n||y>=l)break;
    			  		if(mp[x][y]=='R')mp[x][y]='.';
    			  	else if(mp[x][y]=='G')mp[x][y]='B';
    			  	else if(mp[x][y]=='.'||mp[x][y]=='B')break;
    			  		x++;y++;
    			  	}
    			  	ans++;
    	  		}
    	  	else	if(mp[i][j]=='B'){
    		  		int x=i+1;
    		  		int y=j-1;
    		  		while(1){
    		  			if(x<0||y<0||x>=n||y>=l)break;
    			  		if(mp[x][y]=='B')mp[x][y]='.';
    			  	 else if(mp[x][y]=='G')mp[x][y]='R';
    			  		else if(mp[x][y]=='.'||mp[x][y]=='R')break;
    			  		x++;y--;
    		  		}
    		  		ans++;
    		  	}
    		  	
      	}
      	printf("%d
    ",ans);
    	}
    	return 0;
    }



  • 相关阅读:
    zoj 3627#模拟#枚举
    Codeforces 432D Prefixes and Suffixes kmp
    hdu 4778 Gems Fight! 状压dp
    CodeForces 379D 暴力 枚举
    HDU 4022 stl multiset
    手动转一下田神的2048
    【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
    poj 3254 状压dp
    C++中运算符的优先级
    内存中的数据对齐
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7084447.html
Copyright © 2011-2022 走看看