4T6WA求助
查看原帖
4T6WA求助
158400
晴空一鹤楼主2021/3/13 23:27

调了 1 h

结果调得T越来越多,WA越来越少(尽管仍然是0分

#include<bits/stdc++.h>
using namespace std;
int s[101][171][171],cnt=0,ans=0;
int l[171];
int n,m;
char aaa[101][101],ccc;
void inline csh(int x)
{
	for(int i=0;i<1<<x;i++)
	if(((i&(i>>1))==0)&&((i&(i>>2))==0)&&(((i>>1)&(i>>2))==0))
	l[++cnt]=i;
}
int inline cha(int y,int u)
{
	int x=0;
	while(y&(-y))
	{
		if(aaa[u][(int)log(y&(-y))+1]=='P')x++;
		y-=y&(-y);
	}
	return x;
}
void inline dp()
{
	for(int i=1;i<=n;i++)
	  for(int j=1;j<=cnt;j++)
	    for(int x=1;x<=cnt;x++)
	       for(int ll=1;ll<=cnt;ll++)
	       {
		   int v=cha(l[j],i);
	      if((l[ll]&l[j]&l[x])==0)
	      s[i][l[j]][l[x]]=max(s[i][l[j]][l[x]],s[i-1][l[x]][l[ll]]+v);
	      ans=max(ans,s[i][l[j]][l[x]]);
		  }
}
int main()
{
	cin>>n>>m;ccc=getchar();
	for(int i=1;i<=n;i++)
	{
	  for(int j=1;j<=m;j++)
	  cin>>aaa[i][j];
	  ccc=getchar();
	}
	csh(m);
	dp();
	cout<<ans<<endl;
} 

话说这为啥会T

2021/3/13 23:27
加载中...