QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#383031#3742. 卖萌表情ucup-team1251TL 0ms0kbC++142.2kb2024-04-08 21:03:362024-04-08 21:03:37

Judging History

你现在查看的是最新测评结果

  • [2024-04-08 21:03:37]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:0kb
  • [2024-04-08 21:03:36]
  • 提交

answer

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<math.h>
#include<vector>
using namespace std;
const int N=5000;
int n,m;
char c[N][N];
int dp[N][N];
bool bi[N][N];
int cnt=0;
signed main()
{
	
//	for(int i=1;i<=10;i++)
//	{
//		for(int j=1;j<=1000;j++)
//		{
//			if(i==j)cout<<"v";
//			else
//			cout<<"^";
//			
//		}
//		cout<<endl;
//	}
	
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		cnt=0;
		memset(dp,0,sizeof dp);
		memset(bi,0,sizeof bi);
		for(int i=0;i<n;i++)
		{
			scanf("%s",c[i]);
		}
		
		
		//1 c[i][j]=='^'&&c[i][j+2]=='^'&&c[i+1][j+1]=='v'
		//2 c[i+1][j]=='v'&&c[i+1][j+2]=='v'&&c[i][j+1]=='^'
		//3 c[i][j]=='<'&&c[i+2][j]=='<'&&c[i+1][j+1]=='>'
		//4 c[i][j+1]=='>'&&c[i+2][j+1]=='>'&&c[i+1][j]=='<'
		
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
//				if(j+2<m)
//				{
					if(c[i][j]=='^'&&c[i][j+2]=='^'&&c[i+1][j+1]=='v'&&!bi[i][j]&&!bi[i][j+2]&&!bi[i+1][j+1])
					{
	
						bi[i][j]=bi[i][j+2]=bi[i+1][j+1]=1;
//						dp[i][j]=max(dp[i][j-1],dp[i][j]+1);
//						dp[i+1][j]=dp[i][j+1]=dp[i+1][j+1]=dp[i][j+2]=dp[i+1][j+2]=dp[i][j];
						cnt++;
					}
					if(c[i+1][j]=='v'&&c[i+1][j+2]=='v'&&c[i][j+1]=='^'&&!bi[i+1][j]&&!bi[i+1][j+2]&&!bi[i][j+1])
					{
						bi[i+1][j]=bi[i+1][j+2]=bi[i][j+1]=1;	
//						dp[i][j]=max(dp[i][j-1],dp[i][j]+1);
//						dp[i+1][j]=dp[i][j+1]=dp[i+1][j+1]=dp[i][j+2]=dp[i+1][j+2]=dp[i][j];
						cnt++;
					}			
					
//				}
//				if(i+2<n)
//				{
					if(c[i][j]=='<'&&c[i+2][j]=='<'&&c[i+1][j+1]=='>'&&!bi[i][j]&&!bi[i+2][j]&&!bi[i+1][j+1])
					{
						bi[i][j]=bi[i+2][j]=bi[i+1][j+1]=1;
//						dp[i][j]=max(dp[i][j-1],dp[i][j]+1);
//						dp[i][j+1]=dp[i+1][j]=dp[i+1][j+1]=dp[i+2][j]=dp[i+2][j+1]=dp[i][j];
						cnt++;

					}
					if(c[i][j+1]=='>'&&c[i+2][j+1]=='>'&&c[i+1][j]=='<'&&!bi[i][j+1]&&!bi[i+2][j+1]&&!bi[i+1][j])
					{
						bi[i][j+1]=bi[i+2][j+1]=bi[i+1][j]=1;
//						dp[i][j]=max(dp[i][j-1],dp[i][j]+1);
//						dp[i][j+1]=dp[i+1][j]=dp[i+1][j+1]=dp[i+2][j]=dp[i+2][j+1]=dp[i][j];
						cnt++;
					}
//				}
//				dp[i][j]=max(max(dp[i][j],dp[i][j-1]),dp[i-1][j]);

			}
		}
//		int ddd=max(max(dp[n-1][m-1],dp[n-3][m-2]),dp[n-2][m-3]);
        printf("%d\n",cnt);
// 		cout<<ddd<<endl;
	}
	return 0;
}

详细

Test #1:

score: 0
Time Limit Exceeded

input:

3 10
^>^<^^^^>^
<v^v^^v^v>
<>vvvvvvvv
10 1
v
^
<
<
v
<
v
>
<
<
5 4
<^^^
<vvv
<<^>
vv^v
<vvv
2 9
^^^^^^^^^
vvvvvvvvv
9 10
^>^^<^<^<>
<^<<><<<<>
v^v^^<>^<^
^<vvv<><<>
<v>>><^v^>
^^^^>^^<<v
v^v>v^v^<>
v^vvv>v^<^
vvvvv><>v>
8 8
^^^^<^<^
<>^<v>v^
<v<v>^v>
v>v<vv<>
^<^>>v<>
<v^v^<<>
^v^^>v<>
<vv<vv<>
2 2
...

output:


result: