湖南师范大学2018年大学生程序设计竞赛新生赛 A 齐神和心美的游戏【hash】

【链接】:A
【题意】:给你n个数的序列和k。判断是否可以三个数组成k(同一个数可以拿多次)
【分析】:每个数vis记录一下。2层循环。两数之和不超过k以及剩下的数出现在序列中那么ok。
【代码】:

#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define inf 0x3f3f3f3f
#define pll pair<ll,ll>
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rep1(i,a,b) for(int i=a;i>=b;i--)
#define rson rt<<1|1,m+1,r
#define lson rt<<1,l,m
#define mod  1000000007
const int maxn = 1e5+5;
using namespace std;

int vis[maxn];
int a[maxn];
int main()
{
    int n,k,f=0;
    cin>>n>>k;
    rep(i,0,n) cin>>a[i],vis[a[i]]=1;
    rep(i,0,n)
    {
        rep(j,0,n)
        {
            if(a[i]+a[j]<=k && vis[k-a[i]-a[j]]==1)
            {
                f = 1;
            }
        }
    }
    f==1?puts("o hu~"):puts("wo yo wo yo~");
}
posted @ 2018-06-09 15:26  Roni_i  阅读(204)  评论(0编辑  收藏  举报