玄学问题,和题解对来对去,连马蜂都改一样了,但是仍然wa
  • 板块灌水区
  • 楼主fangzichang
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/7/13 16:16
  • 上次更新2023/10/27 20:37:21
查看原帖
玄学问题,和题解对来对去,连马蜂都改一样了,但是仍然wa
678087
fangzichang楼主2022/7/13 16:16

rt,CF757B

这是我的程序

#include<bits/stdc++.h>
#define LL long long
//英特耐雄纳尔一定要实现

using namespace std;
const int N=1e5+10;
int n,a;
int maxn=1,b[N];
bool vis[N];
int main(){
	freopen("sb.in","r",stdin);
	freopen("1.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a;
		b[a]++;
	}
//	sort(a+1,a+n+1);
	for(int i=2;i<=100000;i++){
		if(vis[i]) continue;
		int ans=b[i];
		for(int j=2;j<=100000/i;j++){
			vis[i*j]=1;
			ans+=b[i*j];
		}
		maxn=max(maxn,ans);
	}
	cout<<maxn<<endl;
	return 0;
}

这是题解(洛谷上是第二篇

#include <bits/stdc++.h>
using namespace std;
int a,ans,mx=1,n,vis[100007];
bool v[100007];
int main(){
	//freopen("sb.in","r",stdin);
//	freopen("2.out","w",stdout);	
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a);
        vis[a]++;
    }
    for(int i=2;i<=100000;i++){
        if(v[i]) continue;
        ans=vis[i];
        for(int j=2;j<=100000/i;j++){
            v[i*j]=true;
            ans+=vis[i*j];
        }
        mx=max(mx,ans);
    }
    printf("%d",mx);
    return 0;
}

肉眼已经无法辨别问题所在了,,,

甚至自己写了对拍程序测试,结果是

到现在已经拍到5000+了,但是仍然没有发现问题,测的是1e5的标准数据,,,,求教问题可能出在哪里,提示测试点#1就WA了

2022/7/13 16:16
加载中...