QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#641575#9457. Prime SetmasterhuangAC ✓276ms12996kbC++231.3kb2024-10-14 21:19:232024-10-14 21:19:23

Judging History

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

  • [2024-10-14 21:19:23]
  • 评测
  • 测评结果:AC
  • 用时:276ms
  • 内存:12996kb
  • [2024-10-14 21:19:23]
  • 提交

answer

//qoj 9457
//https://qoj.ac/contest/1807/problem/9457
#include<bits/stdc++.h>
#define LL long long
#define fr(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);
using namespace std;
const int N=3e3+5;
int TT,n,m,a[N],tot,p[N];bool v[N],in[N];
vector<int>g[N];
bool dfs(int x)
{
	v[x]=1;
	for(int i:g[x]) if(!v[i])
	{
		v[i]=1;
		if(!p[i]||dfs(p[i])) return p[i]=x,p[x]=i,1;
	}return 0;
}
namespace Prime
{
	const int N=2e6+5;
	int pr[N];bool v[N];
	inline void init(int M)
	{
		for(int i=2;i<=M;i++)
		{
			if(!v[i]) pr[++pr[0]]=i;
			for(int j=1;j<=pr[0]&&i*pr[j]<=M;j++)
			{
				v[i*pr[j]]=1;
				if(i%pr[j]==0) break;
			}
		}fill(v+1,v+1+M,0);
		for(int i=1;i<=pr[0];i++) v[pr[i]]=1;
	}
	inline bool chk(int x){return v[x];}
}using Prime::chk;
int main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>TT;Prime::init(2e6);
	while(TT--)
	{
		cin>>n>>m;int ans=0;
		for(int i=1;i<=n;i++) cin>>a[i],g[i].clear(),p[i]=-1;
		for(int i=1;i<=n;i++) for(int j=1;j<i;j++) if(chk(a[i]+a[j]))
			g[i].push_back(j),g[j].push_back(i),p[i]=p[j]=0;
		for(int i=1;i<=n;i++) if(!p[i]) fill(v+1,v+1+n,0),ans+=dfs(i); 
		if(m<=ans) cout<<2*m<<"\n";
		else
		{
			int res=0;
			for(int i=1;i<=n;i++) res+=(!p[i]);
			cout<<2*ans+min(res,m-ans)<<"\n";
		}
	}
	return 0;
}

这程序好像有点Bug,我给组数据试试?

详细

Test #1:

score: 100
Accepted
time: 5ms
memory: 6200kb

input:

4
4 2
2 3 4 5
5 3
3 4 12 3 6
6 3
1 3 6 8 1 1
1 0
1

output:

4
3
6
0

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 276ms
memory: 12996kb

input:

110
3 3
2 2 2
3 1
1 1 1
3 2
1 1 1
3 3
1 1 1
4 2
1 1 1 1
10 7
1 1 1 2 4 6 8 10 12 14
18 1
10 5 9 4 10 7 2 4 9 1 6 1 4 9 2 4 9 7
19 5
1 6 1 8 8 1 5 10 9 2 10 2 1 9 6 10 4 3 6
14 4
6 6 8 9 5 3 4 9 2 2 1 10 10 1
15 10
5 4 2 4 10 1 8 4 10 3 10 3 7 10 4
17 5
10 7 2 4 3 1 10 8 2 8 3 4 1 1 1 1 1
20 6
8 4 6 ...

output:

0
2
3
3
4
8
2
10
8
15
10
12
10
10
12
16
10
10
12
16
14
13
13
14
17
0
19
12
12
11
16
10
19
2
12
10
5
14
10
10
13
2
18
2
4
4
11
8
11
8
0
10
10
0
10
0
8
15
12
11
13
18
10
17
9
8
20
19
13
6
4
6
11
9
13
11
6
2
8
12
17
14
6
2
20
2
18
17
6
2
10
0
7
16
2
2
0
2
18
14
11
8
4
6
0
19
890
204
2746
2372

result:

ok 110 lines

Extra Test:

score: 0
Extra Test Passed