题解:

暴力枚举每一种方案,然后hash判重

代码:

#include<bits/stdc++.h>
#define eps 1e-7
using namespace std;
int v[],r[],hs[],p=,ans=;
void add(int v1,int v2,int v3,int v4,int v5,int v6,int v7)
{
hs[++p]=(v1|v2<<|v3<<|v4<<|v5<<|v6<<|v7<<);
}
double f(double a,double b,int op)
{
if (op==) return a+b;
if (op==) return a-b;
if (op==) return a*b;
return a/b;
}
bool e(int a,int b)
{
if (a==) return b>;
if (a==) return b<;
return ;
}
void check(int v1,int v2,int v3,int v4)
{
for (int i=;i<;i++)
for (int j=;j<;j++)
for (int k=;k<;k++)
{
bool e1=e(k,j),e2=e(j,i);
if (fabs(f(f(f(v[v1],v[v2],i),v[v3],j),v[v4],k)-)<eps)
add(r[v1],r[v2],i+,r[v3],j+,r[v4],k+);
if (e1&&fabs(f(f(v[v1],v[v2],i),f(v[v3],v[v4],j),k)-)<eps)
add(r[v1],r[v2],i+,r[v3],r[v4],j+,k+);
if (e2&&fabs(f(f(v[v1],f(v[v2],v[v3],i),j),v[v4],k)-)<eps)
add(r[v1],r[v2],r[v3],i+,j+,r[v4],k+);
if (e1&&fabs(f(v[v1],f(f(v[v2],v[v3],i),v[v4],j),k)-)<eps)
add(r[v1],r[v2],r[v3],i+,r[v4],j+,k+);
if (e1&&e2&&fabs(f(v[v1],f(v[v2],f(v[v3],v[v4],i),j),k)-)
<eps)
add(r[v1],r[v2],r[v3],r[v4],i+,j+,k+);
}
}
int main()
{
for (int i=;i<;i++)scanf("%d",&v[i]);
for (int i=;i<;i++)
for (int j=;j<;j++)r[i]+=v[i]<v[j];
for (int i=;i<;i++)
for (int j=;j<;j++)
if (i!=j)
for (int k=;k<;k++)
if (i!=k&&j!=k)
check(i,j,k,-i-j-k);
sort(hs+,hs+p+);
if (p) ans=;
for (int i=;i<=p;i++) if (hs[i]!=hs[i-]) ans++;
printf("%d",ans);
}
05-26 11:02