|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码
回答有渔币 , 谢谢大家了 , 过两个月考试 |
|