zoukankan      html  css  js  c++  java
  • 数对

    题目描述
    考虑一组n个不同的正整数a1,a2,…,am,它们的值在1到1000000之间。给定一个整数x。写一个程序sumx计算这样的数对个数(ai,aj),1<=i<j<=n并且ai+aj=x。

    输入
    标准输入的第一行是一个整数n(1<=n<=1000000)。第二行有n个整数表示元素。第三行是一个整数x(1<=x<=2000000)。
    输出
    输出一行包含一个整数表示这样的数对个数。
    输入样例
    9
    5 12 7 10 9 1 2 3 11
    13

    输出样例
    3
    说明
    对于50%的测试数据,n<=1000。

    .
    .
    .
    .
    .
    .
    分析
    可二分,用水法

    .
    .
    .
    .
    .
    .
    程序:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int a[1000010],b[1000010],n,x,ans=0;
    
    inline int read()
    {
       int s=0,w=1;
       char ch=getchar();
       while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
       while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
       return s*w;
    }
    
    
    int main()
    {
    	n=read();
    	int n1=0;
    	for (int i=1;i<=n;i++)
    	{
    		a[i]=read();
    		b[a[i]]=i;
    		n1=max(n1,a[i]);
    	}
    	x=read();
    	sort(a+1,a+n+1);
    	for (int i=1;i<=n;i++)
    	{
    		if (a[i]>=x) break;
    		int y=x-a[i];
    		if (y>=n1) continue;
    		if (b[y]>b[a[i]]) ans++;
    	}
    	printf("%d",ans);
    	return 0;
    }
    
  • 相关阅读:
    结对项目——四则运算
    关于结对编程的感想
    《诗词大闯关》调查表与调查结果分析
    我的软件工程课目标
    我的软件工程课目标
    软件工程课程建议
    结对编程(二)
    结对编程——四则运算
    结对编程
    《诗词大闯关》问卷调查心得与体会
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/11094940.html
Copyright © 2011-2022 走看看