兩個集合 51Nod 1557

2021-09-01 10:19:16 字數 544 閱讀 9437

不考慮特殊情況 將x-a與 x與x-b建邊的話 得到很多條鏈 判一下長度奇偶就行

但是會出現a-x=x即a=2*x的情況 比如n=2 a=2 b=3 x[1]=2,x[2]=1 這時就要分個先後了 可以貪心的從鏈的端點開始 如果碰到a=b=2*x這種情況就不用管x了

#include using namespace std;

const int maxn=1e5+10;

map mp;

queue que;

int val[maxn];

int n,a,b;

int main()

for(i=1;i<=n;i++)

}flag=1;

while(!que.empty())

tmp=mp[b-val[cur]];

if(tmp)

if(!gou)}}

if(flag) printf("yes\n");

else printf("no\n");

return 0;

}

51nod 1557 兩個集合

首先,我們只用分析 no 的情況,其他的都是 yes,no 的情況有兩種 one x 既不在 a 中,也不在 b 中,即找不到 a x 和 b x,no two x 既可以在 a 中,也可以在 b 中,也就是找到了 a x 和 b x,如果 x 在 a 中,那麼 b x 一定不在 b 中,因為數唯一...

51nod 1557 兩個集合

思路 暴力搜尋判斷,兩年前寫的自己都看不懂了。code include includeusing namespace std const int max n 100005 int n,a,b int c max n int d max n 2 bool book max n 2 int find i...

51nod 1557 兩個集合 hash

1557 兩個集合 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 小x有n個互不相同的整數 p1 p2,pn。他想把這些整數分到兩個集合a和b裡邊。但是要符合下面兩個條件。如果x屬於a,那麼a x也肯定屬於a。如果x屬於b,那麼b x也肯定...