2018CCPC吉林C JUSTICE(思維模擬)

2021-09-25 14:06:28 字數 1503 閱讀 2018

題意:給你n個數,能否分成兩組,使每組的2的ki次方分之一的和大於等於二分之一,能的話輸出分組方案

思路:不難發現, 例, 也就是2個k能合成乙個k/2,

能不能分成兩組,只需要看最後合完之後1的個數是不是大於等於2。

利用二進位制的原理,優先佇列+並查集,先取出權值最小的,進行合併,如果兩個值相同,則可以合併成乙個k-1,最後判斷是否有兩個或兩個以上的1出現即可

另:優先佇列預設的是資料大的優先順序高.

ac**:

#include

using namespace std;

typedef

long

long ll;

typedef

unsigned

long

long ull;

const

int prime =

999983

;const

int inf =

0x7fffffff

;const ll inff =

0x7fffffffffffffff

;const

double pi =

acos(-

1.0)

;const

double inf =

1e18

;const

double eps =

1e-6

;const ll mod =

1e9+7;

ll qpow

(ll a,ll b)

return s;

}typedef pair<

int,

int> p;

const

int maxn =

1e5+10;

int a[maxn]

;int f[maxn]

;int

find

(int x)

intmain()

if(q.

empty()

)break

; p p2 = q.

top();

q.pop();

int x =

find

(p.second)

;int y =

find

(p2.second);if

(x < y)

swap

(x,y)

; f[x]

= y;

q.push(p

(p.first-

1,y));

}printf

("case %d: "

,++case);if

(q.size()

<2)

puts

("no");

else

puts(""

);}}

return0;

}

2018ccpc吉林 C JUSTICE 思維

題意 n個物品,每個物品重量1 2 k i 問可不可以分成兩份,讓這兩份的總量都大於1 2 題解 因為兩份都要大於1 2,那麼我們兩份都找出1 2,剩下的就無所謂了。我們把問題轉化為,兩份都需要找到乙個1,因為 1 2 1 4 1 4,所以乙個1等價於兩個2,4個3.我們先從小到大排個序,令cnt1...

2018CCPC吉林賽區 重現賽 部分

題意 判斷所給表示式的奇偶性 思路 打表發現1 3為奇數,4 8為偶數,9 15為奇數,16 24為偶數,25 35為奇數 include using namespace std typedef long long ll const int inf 0x3f3f3f3f const int max ...

秦皇島2018CCPC現場賽

所有的磨難挫折,都該慶幸,它來的還不算晚.大海我來了 來之前,就聽說這裡有海,很欣喜.畢竟乙個土生土長的山西人,還沒 看過大海.坐了一夜的火車,下車直奔博維酒店,距離比賽地點特別近,步行10分鐘,搞定了報道,然後就回酒店補覺了.下午ge掉了開幕式,在熱身賽開始前,堪堪來到賽場.熱身賽 cqw和xzw...