文章
19
粉丝
21
获赞
5
访问
19.0k
/*
O(n^2)会爆时间,不能枚举两次
法1:将数存储在map中,枚举每个数x,判断 m - x是否在map中
法2:对于每个x,二分查找m - x
*/
# include <bits/stdc++.h>
using namespace std;
unordered_map<int,int> M;
int n,m;
vector<int> ans;
int main (void){
cin >> n >> m;
for (int i = 1; i <= n; ++i){
int x;
cin >> x;
M[x] ++;
ans.push_back(x);
}
sort(ans.begin(),ans.end());
bool flag = false;
for (int i = 0; i < ans.size() ; ++i){
int x = ans[i];
// 要先把这个数x从map中摘除掉,防止重复
M[x] --;
if (M[m - x] >...
登录后发布评论
暂无评论,来抢沙发