HDU 5319 Painter
2015-07-28 19:58
447 查看
分析:给你一个空白的图,你可以随意选几个连续的斜格子画线,红色只能\着画,蓝色只能/着画,每个格子只能被红线和蓝线涂一次,如何一个格子既有红色又有蓝色,就变成了绿色,给定你一个图,问至少画几条线。我们可以再拿一张"纸"g[60][60]来照着原图map[60][60]划线,每次都画能画的最长的长度。
# include <stdio.h> # include <string.h> int main() { int i,j,k,t,n,m,ans; char map[60][60],g[60][60]; scanf("%d",&t); while(t--) { ans=0; scanf("%d",&n); for(i=0;i<n;i++) scanf("%s",map[i]); m=strlen(map[0]); for(i=0;i<n;i++) for(j=0;j<m;j++) g[i][j]='.'; for(i=0;i<n;i++) for(j=0;j<m;j++) if((map[i][j]=='R'||map[i][j]=='G')&&g[i][j]=='.') { k=0;ans++; while((i+k)>=0&&(i+k)<n&&(j+k)>=0&&(j+k)<m&&(map[i+k][j+k]=='R'||map[i+k][j+k]=='G')&&g[i+k][j+k]=='.') { g[i+k][j+k]='R'; k++; } } for(i=0;i<n;i++) for(j=0;j<m;j++) if((map[i][j]=='B'||map[i][j]=='G')&&(g[i][j]=='.'||g[i][j]=='R')) { k=0;ans++; while((i+k)>=0&&(i+k)<n&&(j-k)>=0&&(j-k)<m&&(map[i+k][j-k]=='B'||map[i+k][j-k]=='G')&&(g[i+k][j-k]=='.'||g[i+k][j-k]=='R')) { g[i+k][j-k]=map[i+k][j-k]; k++; } } printf("%d\n",ans); } return 0; }
相关文章推荐
- hdu 5316 Magician(2015 Multi-University Training Contest 3)
- ZOJ 3802 Easy 2048 Again 像缩进DP
- HDU 5319 Painter (模拟)
- hdu5326_(优美的并查集解法)2015 Multi-University Training Contest 3(1011)
- XSSFDataValidationHelper.createDateConstraint有Bug
- Sinatra:一个可以作为Rails有益补充的框架. 简洁而不简单
- 15/7/27/正则表达式/进程线程/wait/notify
- 语言中如何在main函数开始前执行函数
- HDU 5319 Painter (模拟 脑洞题)
- 2015 Multi-University Training Contest 3
- Acboy needs your help again!
- Failed to install *.apk on device 'emulator-5554': timeout
- 2015 Multi-University Training Contest 3(hdu 5316、5317、5319、5323、5325、5326)线段树+数学+yy+矩阵快速幂
- 2015 Multi-University Training Contest 3
- Aizu 0009 Prime Number
- this,static,main参数作用,方法,对象的生存
- Rails Model验证之强大
- Kafka设计解析(三):Kafka High Availability (下)
- HDU2124——Repair the Wall(贪心水题)
- Kafka设计解析(二):Kafka High Availability (上)