zoukankan      html  css  js  c++  java
  • 【map/map扩充】和数检测

    题目描述

    给定n个正整数d1, d2, …, dn。如果取出其中的任意两个数(可以相同),则可以得到这两个数的和。对于n个数,则至多可以产生(n×(n+1))/2种不同的和。
    给出正整数m,你需要判断:是否存在两个整数u, v,满足du + dv = m。

    输入

    本题一个输入中包含多组数据。输入第一行为一个整数T,表示数据组数。
    对于每组数据,输入的第一行为两个正整数n, m,输入的第二行为n个正整数d1, d2, …, dn。
     

    输出

    输出T行,每行一个整数。如果正整数u, v存在,则输出1;否则输出0。
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    int n,m,t;
    int a[1000005];
    int scan()
    {
        int res = 0, flag = 0;
        char ch;
        if ((ch = getchar()) == '-')
        {
            flag = 1;
        }
        else if(ch >= '0' && ch <= '9')
        {
            res = ch - '0';
        }
        while ((ch = getchar()) >= '0' && ch <= '9')
        {
            res = res * 10 + (ch - '0');
        }
        return flag ? -res : res;
    }
     
    void Out(int a)
    {
        if (a < 0)
        {
            putchar('-');
            a = -a;
        }
        if (a >= 10)
        {
           Out(a / 10);
        }
        putchar(a % 10 + '0');
    }
     
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            unordered_map<int,int> mp;
            n=scan();
            m=scan();
            int f=1;
            int x;
            for(int i=0;i<n;i++)
            {
                a[i]=scan();
                if(f){
                if(mp[m-a[i]]==1)
                {
                    f=0;
                }
                if(mp[m-a[i]]!=1)
                {
                    mp[a[i]]=1;
                    mp[m-a[i]]=2;
                }
                if(mp[a[i]]==2)
                {
                    f=0;
                }
                }
                //cout<<mp[a[i]]<<" "<<mp[m-a[i]]<<endl;
            }
            if(f)
                printf("0
    ");
            else
                printf("1
    ");
        }
        return 0;
    }
  • 相关阅读:
    解决adb的"more than one device and emulator"错误
    Swoole实现简单的http服务器
    Unity实现物体位置变换
    Unity实现放大或缩小某个物体
    如何使用WEBSOCKET实现前后端通信
    实体类接收Date类型
    easyExce输出Excel只有表头没有数据问题解决
    报餐统计
    使用 EasyExcel 写Excel数据(表头动态)
    bladex分页
  • 原文地址:https://www.cnblogs.com/Diliiiii/p/10284756.html
Copyright © 2011-2022 走看看