马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目在下, 不知道题解是什么意思 , 为什么这么写 , 求助
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int s=0;
char c=getchar();
while(c<'0'||c>'9')
{
c=getchar();
}
while(c>='0'&&c<='9')
{
s=(s<<3)+(s<<1)+(c^48);
c=getchar();
}
return s;
}
int n;
int a[1000005];
int cnt[4005],ans[500005];
int main()
{
n=read();
for(int i=1;i<=n;i++)
{
a[i]=read();
cnt[a[i]]++;
}
for(int i=2;i<=4000;i++)
{
int temp=0;
for(int j=1;j<=i/2;j++)
{
if(j!=i-j) temp+=min(cnt[j],cnt[i-j]); // 这一行是什么意思
else temp+=cnt[j]/2; // 还有这个
}
ans[temp]++;
}
for(int i=n/2;i>=1;i--)
{
if(ans[i]!=0)
{
printf("%d %d",i,ans[i]);
return 0;
}
}
return 0;
}
输入输出 :Sample Input 1
4
1 2 3 4
Sample Input 2
5
1 10 100 1000 2000
Output 1
2 1
Output 2
1 10
回答有渔币 , 谢谢大家了 , 过两个月考试 |