QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#384133#3742. 卖萌表情wanyuTL 0ms0kbC++171.9kb2024-04-09 20:53:542024-04-09 20:53:55

Judging History

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

  • [2024-04-09 20:53:55]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:0kb
  • [2024-04-09 20:53:54]
  • 提交

answer

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<math.h>
#include<vector>
using namespace std;
const int N=1500;
int n,m;
string c[N];
int dp[N][N];
bool bi[N][N];
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
	while(cin>>n>>m)
	{
		memset(dp,0,sizeof dp);
		memset(bi,0,sizeof bi);
		for(int i=0;i<n;i++) cin>>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];
					}
					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];
					}			
					
				}
				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];

					}
					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]=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];
					}
				}
				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]);
		cout<<ddd<<endl;
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

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:

3
0
2
4
5
7
0
2
3
2
5
0
5
2
0
2
1
2
2
0
0
0
0
2
3
3
2
3
2
4
2
0
3
3
9
5
0
3
0
9
5
2
3
2
2
5
5
1
4
0
0
4
0
2
3
3
2
4
5
2
0
5
3
7
4
3
4
0
3
0
4
3
4
6
0
7
3
0
2
0
0
7
8
4
2
3
6
3
2
3
0
0
0
3
3
2
2
0
0
5
4
4
4
3
3
5
4
3
0
3
4
0
9
0
4
5
5
3
3
0
0
2
4
4
3
4
2
6
4
0
0
3
3
4
0
4
3
4
2
0
3
6
1
3
4
4
6
3
4
2
...

result: