ZOJ3715 競選班長求最小花費

2021-06-25 09:46:05 字數 1792 閱讀 5460

題意:

有n個小朋友競選班長,一號想當班長,每個人都必須選擇乙個人當班長,並且不可以選擇自己,並且每個人都有乙個權值ai,這個權值就是如果1想讓這個人改變主意選擇自己當班長就得給他ai個糖果,只有當1的票數是唯一最多的時候,1才能競選班長,問1競選班長的最小花費糖果數。

思路昨天練習賽的最後乙個題,今天才ac,這個題目我們可以用貪心的方法,記得當時自己看完也馬上感覺是貪心,可以因為選擇了錯誤的貪心方法和策略,導致寫了很長,而且越寫越蒙,最後寫的腦袋短路了,悲劇啊,說下正解,我們可以列舉1號競選時的票數,對於每一次列舉,如果當前有人的票數比1號的x多,那麼就把他減少到x-1(肯定是挑選費用最小的),然後把當前的票數加到1身上,最後如果1號的票數大於當前的列舉票數,列舉失敗,如果等於,那麼就更新最優值,如果小於,就在剩下的沒有選則1的裡面挑選幾個最小的補上去,這樣就行了,說到這,可能有人去會想,1不是也要投一票嗎,怎麼沒考慮,其實根本不用管1這票投給了誰,因為只有出現這樣的狀態這一票才會有影響x x-1 x-1 x-1 x-1.....但是這個狀態是不存在的,想一下,這個題目每個人最多投一票,如果1的票數為x,那麼那個狀態的總票數就是 x + (x - 1) * (n - 1) + 1,其實x是大於等於2的(這個地方自己想,很好想),那麼就會得到 2 + (2 - 1) * (n - 1)+ 1 = n + 2,而每個人都一票,總票數是n,所以矛盾,所以不存在那種狀態,所以不用考慮1的那票投給了誰。   

#include

#include

#include

#define n 120

using namespace std;

typedef struct

star;

typedef struct

node;

star e[n];

node node[n];

int list[n] ,tot;

int  now[n] ,mark[n] ,mark[n];

int cost[n];

void add(int a ,int b)

bool camp(node a ,node b)

int main ()

for(i = 2 ;i <= n ;i ++)

scanf("%d" ,&cost[i]);

int star = 1;

if(star < now[1]) star = now[1];

int min = 1000000000;

for(i = star ;i <= n ;i ++)

sort(node + 1 ,node + id + 1 ,camp);

for(int k = 1 ;k <= now[j] - i + 1 ;k ++)

}if(ss + now[1] == i)

else if(ss + now[1] > i)

continue;

int id = 0;

int tmp[n];

for(j = 2 ;j <= n ;j ++)

for(int k = list[j] ;k ;k = e[k].next)

if(!mark[e[k].to])tmp[++id] = cost[e[k].to];

sort(tmp + 1 ,tmp + id + 1);

for(j = 1 ;j <= i - (ss + now[1]) ;j ++)

sum += tmp[j];

if(min > sum) min = sum;

}printf("%d\n" ,min);

}return 0;

kosaraju 班長競選

大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適 勤勞的 tt 收集了m條意見,想要知道最高票數,並給出乙份候選人名單,即所有得票最多的同學,你能幫幫他嗎?本題有多組資料。第一...

C 班長競選

大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適,給出m個意見,找到得票最多的人 dfs求出每個點所在的連通分量,然後縮點,並記錄縮點之後每個點的入度 要將圖反向 遍歷得到每個...

C 班長競選

大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適 勤勞的 tt 收集了m條意見,想要知道最高票數,並給出乙份候選人名單,即所有得票最多的同學。從圖中找出所有強連通分量進行縮點,...