求助玄关
  • 板块灌水区
  • 楼主ChenZQ
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/18 23:08
  • 上次更新2024/10/19 09:51:27
查看原帖
求助玄关
745358
ChenZQ楼主2024/10/18 23:08

这道题样例都能过,但是错了69分求助!!

#include <bits/stdc++.h>
using namespace std;

const int N = 5010;
int h[N],e[N],ne[N],idx;
int a[N],b[N],c[N];
void add(int a,int b)
{
	e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int n;
bool flag[N];
int mtc[N];
bool find(int x)
{
	for(int i=h[x];i!=-1;i=ne[i])
	{
		if(!flag[e[i]])
		{
			flag[e[i]]=1;
			if(mtc[e[i]]==0 || find(mtc[e[i]]))
			{
				mtc[e[i]]=x;
				mtc[x]=e[i];
				return true;
			}
		}
	}
	return false;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d%d",&a[i],&b[i],&c[i]);
	memset(h,-1,sizeof h);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(i==j) continue;
			if(a[i]>a[j] && b[i]>b[j] && c[i]>c[j]) add(i,j+n);
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++) 
	{
		if(find(i)) ans++;
	}
	printf("%d",n-ans);
} 

输入 1复制

3

5 4 8

27 10 10

100 32 523

输出 1复制

1

输入 2复制

3

1 2 1

2 1 1

1 1 2

输出 2复制

3

输入 3复制

4

1 1 1

2 3 2

3 2 2

4 4 4

输出 3复制

2

2024/10/18 23:08
加载中...