湖南师范大学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~");
}