社区讨论

求助QAQ,对于题面的理解有误??????

P1463[POI 2001 R1 / ZJOI2006 / HAOI2007] 反素数参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo8gsq2i
此快照首次捕获于
2023/10/27 18:22
2 年前
此快照最后确认于
2023/10/27 18:22
2 年前
查看原帖
RTRT,题面不是求最大的反质数吗,那么如果假设有两个数a,ba,b,两者的约数个数相同,答案不应该取max(a,b)max(a,b)
但我这样写的DFSDFS
CPP
void dfs(int cur,int step,int sum,int top)
{
	if(sum>maxn)
	{
		maxn=sum;
		ans=cur;
	}
	else if(sum==maxn)ans=max(ans,cur);
	int tmp=cur;
	for(int i=1;i<=top;++i)
	{
		if(tmp*p[step]>n)return;
		tmp*=p[step];
		int k=sum*(i+1);
		if(tmp<=n)dfs(tmp,step+1,k,i);
	}
}
这样就WAWA穿了,只有30分
但如果,我们把上述代码的maxmax改成minmin,就能ACAC
代码如下:
CPP
void dfs(int cur,int step,int sum,int top)
{
	if(sum>maxn)
	{
		maxn=sum;
		ans=cur;
	}
	else if(sum==maxn)ans=min(ans,cur);
	int tmp=cur;
	for(int i=1;i<=top;++i)
	{
		if(tmp*p[step]>n)return;
		tmp*=p[step];
		int k=sum*(i+1);
		if(tmp<=n)dfs(tmp,step+1,k,i);
	}
}
所以,究竟是我的理解出问题了,还是题面出现问题了QAQ(虽然这题过了这么多人大概率是我的理解有问题,但从题面我真的没有分析出取最小值的意思来QAQ)

回复

4 条回复,欢迎继续交流。

正在加载回复...