poj 1972
少人做的水题。直接模拟即可,不算dp题。
代码:
#include<iostream>
#include<fstream>
using namespace std;
int a[10001][7];
int n;
int ok(int s,int t){
int i=0;
if(t==1)
{
i=max(a[s][2],i);
i=max(a[s][3],i);
i=max(a[s][4],i);
i=max(a[s][5],i);
}
else
if(t==2){
i=max(a[s][1],i);
i=max(a[s][3],i);
i=max(a[s][6],i);
i=max(a[s][5],i);
}
else
if(t==3)
{
i=max(a[s][2],i);
i=max(a[s][1],i);
i=max(a[s][4],i);
i=max(a[s][6],i);
}
else
if(t==4)
{
i=max(a[s][1],i);
i=max(a[s][3],i);
i=max(a[s][6],i);
i=max(a[s][5],i);
}
else
if(t==5)
{
i=max(a[s][2],i);
i=max(a[s][1],i);
i=max(a[s][4],i);
i=max(a[s][6],i);
}
else
if(t==6){
i=max(a[s][2],i);
i=max(a[s][3],i);
i=max(a[s][4],i);
i=max(a[s][5],i);
}
return i;
}
void read(){
// ifstream cin("in.txt");
int i,j,k,s,t,ans;
int K;
cin>>K;
while(K--)
{
cin>>n;
ans=0;
for(i=1;i<=n;i++)
for(j=1;j<=6;j++)
cin>>a[i][j];
for(i=1;i<=6;i++)
{
t=ok(1,i);
s=a[1][i];
for(j=2;j<=n;j++)
{
for(k=1;k<=6;k++)
if(a[j][k]==s)
break;
t+=ok(j,k);
if(k==1)
s=a[j][6];
if(k==2)
s=a[j][4];
if(k==3)
s=a[j][5];
if(k==4)
s=a[j][2];
if(k==5)
s=a[j][3];
if(k==6)
s=a[j][1];
}
ans=max(ans,t);
if(ans==30)
cout<<i<<endl;
}
cout<<ans<<endl;
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号