2 条题解

  • 1
    @ 2024-8-3 20:26:34

    除了用哈希表,还可以优化寻找的速度

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int n,a[100110],x,ans,mid;
    int main()
    {
    	scanf("%d",&n);
    	for (int i=1;i<=n;i++)
    	{
    		scanf("%d",&a[i]);
    	}
    	scanf("%d",&x);
    	sort(a+1,a+n+1);//排序
    	for (int i=1;i<n;i++)//遍历a[i] 
    	{
    		//二分查找x-a[i]
    		int left=i+1,right=n;//确定左指针、右指针
    		while (left<=right)
    		{
    			mid=(left+right)/2;
    			if (a[mid]>x-a[i])
    			{
    				right=mid-1;
    			}
    			else
    			{
    				left=mid+1;
    			}
    		}
    		if (right!=0&&a[right]+a[i]==x&&left!=i&&right!=i)
    		{
    			ans++;
    		}
    	}
    	printf("%d",ans);
    	return 0; 
    }
    
    • @ 2024-8-3 20:37:54

      哈希弑个好()东西。。。

      #include<cstdio>
      using namespace std;
      
      int const N=1e6+1;
      bool find[N];
      
      int num[N];
      
      int main(){
          int n;
          scanf("%d", &n);
      
          for(int i=0; i<n; i++){
              scanf("%d", &num[i]);
      
              find[num[i]] = 1;
          }
      
      	int x;
          scanf("%d", &x);
      
          int c=0;
          for(int i=0; i<n; i++){
      		if(x >= num[i]) c += find[x-num[i]];  //防止数组溢出
      	}
      
          printf("%d\n", c/2);
      
          return 0;
      }
      
      
  • 0
    @ 2025-1-11 19:38:20

    当然也可以用set

    #include<bits/stdc++.h>
    using namespace std;
    long long n,x,tot;
    set<int>a;
    set<int>::iterator it;
    int main(){
    	freopen("sumx.in","r",stdin);
    	freopen("sumx.out","w",stdout);
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++){
    		int y;
    		scanf("%d",&y);
    		a.insert(y);
    	}
    	scanf("%d",&x);
    	for(it=a.begin();it!=a.end();it++){
    		int hh=x-*it;
    		if(a.find(hh)!=a.end())tot++;
    	}
    	printf("%d",tot/2);//因为会重复找一遍
    	return 0;
    }
    
    • 1

    信息

    ID
    532
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    216
    已通过
    25
    上传者