吉林區域賽 C Justice 模擬

2022-06-02 03:42:08 字數 1100 閱讀 3416

題意:給出2指數級倍數的倒數

讓我們把這些數分為兩個堆,看看能不能分別分出兩個大於等於二分之一的堆

思路:用優先佇列+並查集的方式

優先佇列從大到小排序,然後每次取最大的兩個數進行操作,如果兩個數不同,則剔除最大的那個數,繼續迴圈

如果相同,就合併,然後用並查集把這兩個數的下標歸到同乙個區間  

然後再把合併後的數放到優先佇列裡,新的數沿用合併數的下標,然後再操作即可。

直到遇到了1,或者佇列大小小於2

但是有乙個細節問題:假如一開始就有兩個1的話,我們就直接另類討論即可。

1 #include2

using

namespace

std;

3const

int maxn=1e5+10;4

intf[maxn];

5int

a[maxn];

6struct

node713

};14 priority_queueq;

15int getf(int

u)16

21void union(int u,int

v)2229}

30int

main()

3152

q.push(tmp);53}

54if(sum>=2)61

else printf("0"

);62

}63 printf("\n"

);64

continue;65

}66node a,b;

67while(q.size()>=2)72

q.pop();

73 b=q.top();

74if(a.val==b.val)80}

81 a=q.top();

82if(q.size()>=2&&a.val==1)89

else printf("0"

);90

}91 printf("\n"

);92}93

else96}

97return0;

98 }

2017南寧區域賽現場賽

記憶化搜尋 貪心根據情況分類討論一下就行 如果強的人為偶數 那麼肯定是他們自相殘殺 否則要拿出乙個弱的人和乙個強的人比賽 他們之間的勝負情況 要討論一下 如果沒有弱的人了 那麼肯定只能和強的人打 記憶化搜尋 維護強的人和弱的人個數 容易發現 強的人和弱的人一定時 答案也是一定的 於是可以用map記錄...

青島區域賽總結

青島區域賽總結 經歷了人生第一次acm正式比賽,雖然從結果看是以失敗告終,但是這也是已經預料到的一種可能性吧,若真的得獎了也只能說是碰上的吧。雖然辛辛苦苦的的準備了乙個多月,但是可惜水平還是有限,不能達到獲獎的水平吧。比完賽後開始有一點傷心,畢竟可以說是無功而返吧,但是不久就想通了。不管怎樣,只能怪...

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 ...