2018年全國多校演算法寒假訓練營練習比賽(第五場)題解
#include <bits/stdc++.h> using namespace std; const int maxn = 110000; int n; int A, B; int a[maxn]; map<int, int> belong; map<int, bool> flag; int main() { int fail = 0; scanf("%d%d%d", &n, &A, &B); for(int i = 1; i <= n; i ++) { scanf("%d", &a[i]); flag[a[i]] = 1; } sort(a + 1, a + 1 + n); if(A == B) { for(int i = 1; i <= n; i ++) { if(flag[B - a[i]] == 0) { fail = 1; break; } belong[a[i]] = 2; } } else { while(1) { if(fail) break; int ss = 0; for(int i = 1; i <= n; i ++) { if(belong[a[i]]) continue; if(flag[A - a[i]] == 0 && flag[B - a[i]] == 0) { fail = 1; break; } else if(flag[A - a[i]] == 1 && (flag[B - a[i]] == 0 || belong[B - a[i]])) { if(belong[A - a[i]] == 2) { fail = 1; break; } belong[a[i]] = 1; belong[A - a[i]] = 1; ss = 1; } else if((flag[A - a[i]] == 0 || belong[A - a[i]]) && flag[B - a[i]] == 1) { if(belong[B - a[i]] == 1) { fail = 1; break; } belong[a[i]] = 2; belong[B - a[i]] = 2; ss = 1; } else { if(A - a[i] != a[i] && B - a[i] != a[i]) { if(belong[A - a[i]] == 0 && belong[B - a[i]] == 0) { continue; } else if(belong[A - a[i]]) { belong[a[i]] = belong[A - a[i]]; ss = 1; } else { belong[a[i]] = belong[B - a[i]]; ss = 1; } } else if(A - a[i] == a[i]) { if(belong[B - a[i]] == 1) { fail = 1; break; } belong[a[i]] = 2; belong[B - a[i]] = 2; ss = 1; } else { if(belong[A - a[i]] == 2) { fail = 1; break; } belong[a[i]] = 1; belong[A - a[i]] = 1; ss = 1; } } } if(fail) break; if(ss == 0) break; } } if(fail == 0) { for(int i = 1; i <= n; i ++) { if(belong[a[i]] == 1 && belong[A - a[i]] != 1) fail = 1; if(belong[a[i]] == 2 && belong[B - a[i]] != 2) fail = 1; } } if(fail) { printf("NO\n"); } else { printf("YES\n"); for(int i = 1; i <= n; i ++) { printf("%d", belong[a[i]] - 1); if(i < n) printf(" "); else printf("\n"); } } return 0; }
相關推薦
2018年全國多校演算法寒假訓練營練習比賽(第五場)題解
#include <bits/stdc++.h> using namespace std; const int maxn = 110000; int n; int A, B; int a[maxn]; map<int, int> belong; map<i
2018年全國多校演算法寒假訓練營練習比賽(第三場)題解
【題目連線】 由於在比賽期間發現了很多是原題,所以直接抄了原題程式碼,稍後準備重寫。 A - 不凡的夫夫 答案為$\left\lfloor {\sum\limits_{i = 1}^n {{{\log }_8}i} } \right\rfloor + 1$,由於資料範圍的問題,可以將詢問離線
2018年全國多校演算法寒假訓練營練習比賽(第四場)題解
【題目連結】 A - 石油採集 題意:有一個$01$矩陣,每次可以拿走兩個相鄰的$1$,問最多能操作幾次。 這題和HDU 1507一樣。二維矩陣四連通圖是一個二分圖,題目的操作事實上就是求這個二分圖的最大匹配。 B - 道路建設 最小生成樹 #include <bits/st
2018年全國多校演算法寒假訓練營練習比賽(第五場)D集合問題詳解
題目描述 給你a,b和n個數p[i],問你如何分配這n個數給A,B集合,並且滿足: 若x在集合A中,則a-x必須也在集合A中。若x在集合B中,則b-x必須也在集合B中。輸入描述:第一行 三個數 n a b 1<=n<=1e5 1<=a,b<=1e9
牛客網 2018年全國多校演算法寒假訓練營練習比賽(第四場) 題解
A-石油採集 題目描述 隨著海上運輸石油洩漏的問題,一個新的有利可圖的行業正在誕生,那就是撇油行業。如今,在墨西哥灣漂浮的大量石油,吸引了許多商人的目光。這些商人們有一種特殊的飛機,可以一瓢略過整
2018年全國多校演算法寒假訓練營練習比賽(第四場) E-通知小弟
連結:https://www.nowcoder.com/acm/contest/76/E 來源:牛客網 題目描述 在戰爭時期,A國派出了許多間諜到其他國家去收集情報。因為間諜需要隱祕自己的身份,所以他們之間只是單向聯絡。
2018年全國多校演算法寒假訓練營練習比賽(第三場)
A不凡的夫夫 題目描述 夫夫有一天對一個數有多少位數感興趣,但是他又不想跟凡夫俗子一樣, 所以他想知道給一個整數n,求n!的在8進位制下的位數是多少位。 輸入描述: 第一行是一個整數t(0<t<=1000000)(表示t組資料)接下來t行,每一行有一個
2018年牛客多校演算法寒假訓練營練習比賽(第五場)C-字串的問題(KMP or find)
題目連結:https://ac.nowcoder.com/acm/contest/77/C 思路:根據next 陣列各值的含義:代表當前字元之前的字串中,有多大長度的相同字首字尾。例如如果next [j] = k,代表j 之前的字串中有最大長度為k 的相同字首字尾。我們用num陣列
2018年全國多校演算法寒假訓練營練習比賽(第一場) Problem:H
問題H:方塊與收納盒 時間限制:1 Sec 記憶體限制: 32768K Problem Des
2018年全國多校演算法寒假訓練營練習比賽(第二場)D爐石
題目連結如下 https://www.nowcoder.com/acm/contest/74/D emmm題是最長不下降子序列 跟最長上升子序列的區別不僅僅是在一個等號QAQ是兩個等號 被自己蠢哭了 for(int i=1;i<=n;i++) {
2018年全國多校演算法寒假訓練營練習比賽(第一場)
這是一場拼手速和細節的比賽,難題並不多,我做的七道題裡沒有一道涉及演算法。我雖然做的有點慢,但是七道題全部1A,其中J題的規律想半天想不出來,感謝Winzard大神出手相助告訴了我hhhhh,最後拿了第26名,還算可以吧。 首先把n把槍的屬性全部記錄下來,然後對m個配件
牛客——2018年全國多校演算法寒假訓練營練習比賽(第一場)
這場還是新生賽,主要是模擬,搜尋,遞推遞迴,思維題。模擬手速還是慢,也會考慮不周全。 G:搜尋: 連結:https://www.nowcoder.com/acm/contest/67/G 來源:牛客網 題目描述 圈圈圓圓圈圈,lulu小朋友最近看喜羊羊看多了,
2018年全國多校算法寒假訓練營練習比賽(第五場)題解
樹狀數組 訓練營 lan 排序 for string ios 字符 fail 【題目鏈接】 A - 逆序數 經典問題,有很多方法,例如樹狀數組,線段樹,歸並排序等。代碼不貼了。 B - Big Water Problem 單點修改求區間和,樹狀數組
2018年全國多校算法寒假訓練營練習比賽(第三場)題解
排序 esp 註意 test sca big %d question long long 【題目連接】 由於在比賽期間發現了很多是原題,所以直接抄了原題代碼,稍後準備重寫。 A - 不凡的夫夫 答案為$\left\lfloor {\sum\limits_
2018年全國多校算法寒假訓練營練習比賽(第四場)題解
ret ref amp 排列 break call eof while push_back 【題目鏈接】 A - 石油采集 題意:有一個$01$矩陣,每次可以拿走兩個相鄰的$1$,問最多能操作幾次。 這題和HDU 1507一樣。二維矩陣四連通圖是一個二分圖
2018年全國多校算法寒假訓練營練習比賽(第五場):A題:逆序數
quest pre log color 示例 IT pac 輸出 div 題目描述 在一個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麽它們就稱為一個逆序。一個排列中逆序的總數就稱為這個排列的逆序數。比如一個序列為4 5 1 3 2, 那麽這個序
【2018年全國多校算法寒假訓練營練習比賽(第五場)-C】字符串問題(KMP)
長度 str lan sca include leg www tps bsp 題目鏈接:https://www.nowcoder.com/acm/contest/77/C 【題意】 求一個字符串中最長的子串,要求子串既是原串的前綴又是後綴,除前後綴還在中間出現過。
牛客網NowCoder 2018年全國多校算法寒假訓練營練習比賽(第五場)A.逆序數 B.Big Water Problem(線段樹-區間查詢求和和單點更新) F.The Biggest Water Problem H.Tree Recovery(線段樹-區間查詢求和和區間更新)
numbers col 如果 -o img 數組 數據 .html log 隨便補了幾道題,可能也就能寫出來這幾道吧。最近被搜索虐爆了,要抓緊去看搜索,隨便寫寫就溜,備忘一下線段樹新的板子(以前的不好用,太垃圾了) A.逆序數 時間限制:C/C+
【2018年全國多校算法寒假訓練營練習比賽(第三場)】
upload 線段 fall 警鐘 預處理 數學 tex sqrt -- 之前題目比較水,今天的還可以。 【A 不凡的大夫】 方法一:答案是log8(n!),解決方案是預處理,將需要的答案記錄下來以免超內存; 方法二:用公式,斯特林公式: 【B 一個小問
斯特林公式-Stirling公式(取N階乘近似值)-HDU1018-Big Number 牛客網NowCoder 2018年全國多校算法寒假訓練營練習比賽(第三場)A.不凡的夫夫
subject color content coder -m ria 一點 練習 java 最近一堆題目要補,一直鹹魚,補了一堆水題都沒必要寫題解。備忘一下這個公式。 Stirling公式的意義在於:當n足夠大時,n!計算起來十分困難,雖然有很多關於n!的等式,但並不能很