現在你要競選乙個縣的縣長。你去對每乙個選民進行了調查。你已經知道每乙個人要選的人是誰,以及要花多少錢才能讓這個人選你。現在你想要花最少的錢使得你當上縣長。你當選的條件是你的票數比任何乙個其它候選人的多(嚴格的多,不能和他們中最多的相等)。請計算一下最少要花多少錢。1 ≤ n ≤ 10^5,0 ≤ ai ≤ 10^5; 0 ≤ bi ≤ 10^4
是否違法要根據具體行為來判斷,比如通過做好人好事這種方式是不違法的,但使用金錢賄賂選民這是違法的。相關法律如下:
《中華人民共合國選舉法》第五十七條
為保障選民和代表自由行使選舉權和被選舉權,對有下列行為之一,破壞選舉,違反治安管理規定的,依法給予治安管理處罰;構成犯罪的,依法追究刑事責任:
(一)以金錢或者其他財物賄賂選民或者代表,妨害選民和代表自由行使選舉權和被選舉權的;
(二)以暴力、威脅、欺騙或者其他非法手段妨害選民和代表自由行使選舉權和被選舉權的;
(三)偽造選舉檔案、虛報選舉票數或者有其他違法行為的;
(四)對於控告、檢舉選舉中違法行為的人,或者對於提出要求罷免代表的人進行壓制、報復的。
國家工作人員有前款所列行為的,還應當依法給予行政處分。以本條第一款所列違法行為當選的,其當選無效
好了不皮了
值域線段樹+掃瞄線思想。
姑且把這紅色的線認為是掃瞄線。對於每個參選人得到的票,我們按照收買投票的**從大到小排序,然後在將這些收買的人分為mxb個梯隊,此圖mxb==4
列舉這個人需要買多少張票是比較困難的,因為買到別人的票過後,你實際需要的票可能也減少了,會很多無效和不合理的列舉。
因此我們列舉給其他參選人留多少張票,即留下多少個梯隊i。而我們只需要i+1張選票即可。
每次,留下的梯隊增加,代表紅線右移,同時將紅線左邊元素全部加入線段樹。
紅線右邊的票是代表全部買的,紅線左邊的票僅在右邊的票不足i+1張時,選其中最小的前幾張買,補足i+1即可。
維護前幾小的和,用值域線段樹。
51Nod1494 選舉拉票
現在你要競選乙個縣的縣長。你去對每乙個選民進行了調查。你已經知道每乙個人要選的人是誰,以及要花多少錢才能讓這個人選你。現在你想要花最少的錢使得你當上縣長。你當選的條件是你的票數比任何乙個其它候選人的多 嚴格的多,不能和他們中最多的相等 請計算一下最少要花多少錢。input 單組測試資料。第一行有乙個...
列舉 線段樹 51Nod1494 選舉拉票
直接做不太可做,我們可以列舉乙個 d 表示其他人最大值不大於 d時的情況。這樣就好做多了,比 d 大的部分就一定要全部扣掉。然後如果自己的票數不足 d,就需要在剩下的所有票裡取最便宜的前幾個,需要線段樹詢問前k小值的加和。從大到小列舉 d 即可。include include include def...
51nod 1494 選舉拉票 cf458C
中文題面 考慮把所有人的票分別從大到小排序之後可以看做n條線段 列舉自己的票數為i,所以每條線段超過i的部分必須收買,如果還不夠就到前面挑不夠的 104 求前k小想到權值線段樹 應該是類似的東西 include include include define n 100000 define ll lo...