hdu 4517
来源:互联网 发布:淘宝装修拓展编码大全 编辑:程序博客网 时间:2024/06/05 10:37
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4517
昨天Tencent的题目,好吧,当时悲剧地TLE了。。。。orz,今天网上搜了一下,基本上都是用dp做的。。。orz。。。
思路:sum[i][j]表示从1-i,1-j的矩阵中的'*'的个数。。。
View Code
1 #include<iostream> 2 const int N=2004; 3 using namespace std; 4 char map[N][N]; 5 int sum[N][N];//sum[i][j]表示从1-i,1-j的矩形中的"*"的个数 6 7 int main(){ 8 int n,m; 9 while(~scanf("%d%d",&n,&m)){10 if(n==0&&m==0)break;11 int x,y,count=0;12 scanf("%d%d",&x,&y);13 memset(sum,0,sizeof(sum));14 for(int i=1;i<=n;i++){15 scanf("%s",1+map[i]);16 count=0;17 for(int j=1;j<=m;j++){18 if(map[i][j]=='*')count++;19 sum[i][j]=count+sum[i-1][j];20 }21 }22 count=0;23 for(int i=1;i<=n;i++){24 for(int j=1;j<=m;j++){25 if(i+x-1<=n&&j+y-1<=m){26 int ans=sum[i+x-1][j+y-1]-sum[i+x-1][j-1]-sum[i-1][j+y-1]+sum[i-1][j-1];//求x*y的面积内的'*'的个数27 if(ans==x*y)count++;28 }29 //一开始没判断x!=y!!!!30 if(i+y-1<=n&&j+x-1<=m&&x!=y){31 int ans=sum[i+y-1][j+x-1]-sum[i+y-1][j-1]-sum[i-1][j+x-1]+sum[i-1][j-1];32 if(ans==x*y)count++;33 }34 }35 }36 printf("%d\n",count);37 }38 return 0;39 }
0 0
- HDU 4517
- hdu 4517
- hdu 4517
- hdu 4515 hdu 4517 hdu 4519 hdu 4514 hdu 4513 hdu 4510
- hdu(4517)
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu 2501
- hdu 2519
- hdu 4514(并查集判环)
- hdu 2189
- hdu 1133(卡特兰数)
- hdu 4517
- hdu 4472
- hdu 4474
- hdu 4520+hdu 4522+hdu 4524(3月24号Tencent)
- hdu 1023
- dp学习笔记1
- dp学习笔记2
- hdu 1025(最长非递减子序列的n*log(n)求法)
- 政治局常委:不能用形式主义反对形式主义