zoukankan      html  css  js  c++  java
  • UVA 10487:Closest Sums

    题目:  http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/H

    题目要求:

    给出由一些数字组成的集合,然后再输入一个字, 找出集合中不同的两个数的和最接近输入这个数的值。

    解法:我是暴力的,好的方法是先在构成的集合中去重,然后二分查找。水题。(闲着没事时再补一下二分的算法)

    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <algorithm>
    #include <math.h>
    #include <queue>
    #define inf 0x3f3f3f3f
    #define eps 1e-9
    typedef long long ll;
    using namespace std;
    int n,a[1010],b[1010000],tt,key,K=0,zan,m;
    int main()
    {
        while(scanf("%d",&n)!=EOF&&n!=0)
        {
            tt=0;
            priority_queue<int ,vector<int>,greater<int> >q;
            for(int i=0;i<n;i++)
                scanf("%d",&a[i]);
            sort(a,a+n);
            for(int i=0;i<n;i++)
            {
                for(int j=i+1;j<n;j++)
                  q.push(a[i]+a[j]);
            }
            while(!q.empty())
            {
                b[tt++]=q.top();
                q.pop();
            }
            scanf("%d",&m);
            int DA;
            printf("Case %d:
    ",++K);
            for(int i=0;i<m;i++)
            {
                scanf("%d",&key);
                int minx=inf;
                for(int i=0;i<tt;i++)
                {
                    zan=abs(b[i]-key);
                    if(minx>=zan)
                    {
                        DA=b[i];
                        minx=zan;
                    }
                    else break;
                }
                printf("Closest sum to %d is %d.
    ",key,DA);
            }
        }
        return 0;
    }
  • 相关阅读:
    eventkeyboardmouse
    代理 IP
    网关 192.168.2.1 114.114.114.114 dns查询
    http ssl
    SSDP 抓包
    抓包登录信息提交
    危险的input 微博的过去
    firstChild.nodeValue
    浏览器控制台
    haproxy 中的http请求和https请求
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/4272250.html
Copyright © 2011-2022 走看看