題意:給出2指數級倍數的倒數
讓我們把這些數分為兩個堆,看看能不能分別分出兩個大於等於二分之一的堆
思路:用優先佇列+並查集的方式
優先佇列從大到小排序,然後每次取最大的兩個數進行操作,如果兩個數不同,則剔除最大的那個數,繼續迴圈
如果相同,就合併,然後用並查集把這兩個數的下標歸到同乙個區間
然後再把合併後的數放到優先佇列裡,新的數沿用合併數的下標,然後再操作即可。
直到遇到了1,或者佇列大小小於2
但是有乙個細節問題:假如一開始就有兩個1的話,我們就直接另類討論即可。
1 #include2using
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 ...