2515 2023年中山市選拔賽 投票

2021-07-29 22:20:46 字數 1522 閱讀 1989

有n個候選人要競選主席,有m個人要投票。每個人只能投一票,如果某個人投了超過一票或者不投票,那麼這個人的投票將視為非法。

給出m個人的投票情況,你的任務是統計投票情況,然後按照獲得投票數從高到低將候選人排序,如果獲得的投票數相同,則按照候選人的輸入順序從小到大排序。

模擬,然後排序

四捨五入**:

trunc((x*100)+0.5)/100

var

n,m,i,j,k:longint;

a,b:array[0..10]of longint;

c:array[1..10]of

string;

s:string;

procedure

qsort

(l,r:longint);

var i,j,key,key2,k,t:longint;

begin

if l>=r then

exit;

i:=l;j:=r;

k:=l+random(r-l+1);

key:=a[k];

key2:=b[k];

repeat

while (a[i]>key)or((a[i]=key)and(b[i]and(ido inc(i);

while (a[j]or((a[j]=key)and(b[j]>key2))and(j>l) do dec(j);

if i<=j then

begin

t:=a[i];a[i]:=a[j];a[j]:=t;

t:=b[i];b[i]:=b[j];b[j]:=t;

inc(i);dec(j);

end;

until i>j;

qsort(i,r);

qsort(l,j);

end;

begin

readln(n,m);

for i:=1

to n do

begin

readln(c[i]);

b[i]:=i;

end;

for i:=1

to m do

begin

readln(s);

j:=pos('x',s);

if j=0

then

begin inc(a[0]);continue;end;

delete(s,j,1);

if pos('x',s)=0

then inc(a[j])

else inc(a[0]);

end;

randomize;

qsort(1,n);

for i:=1

to n do

writeln(c[b[i]],' ',(trunc(((a[i]/m)*10000)+0.5)/100):0:2,'%');

writeln('invalid ',(trunc(((a[0]/m)*10000)+0.5)/100):0:2,'%');

end.

2465 中山市選2009 小球

題目鏈結 題目大意 n個球,每個球都有乙個分數,同時有m個瓶子,每個瓶子都有固定的容量和分數上界x 每個放進去的球分數必須小於等於x 求最多放進瓶子的球數以及在球最多的前提下的最高分數 題解 這個資料範圍明顯是網路流模板 基礎的貪心思路 因為不能浪費掉分數上界高的瓶子,所以瓶子按照分數上界排序,球按...

2466 中山市選2009 樹

題目鏈結 題目大意 給定一棵樹,每個點有乙個0 1的權,一次操作可以使得x和x的直接鄰居點權 1,初始均為0,求最少多少次操作可以全部變成1 題解 樹形dp可以o n 解決 但這不重要 考慮對每個點列出乙個xor方程,這樣就可以高斯消元了 但是有可能有自由元 暴力列舉代入計算 我的收穫 gauss暴...

2438 中山市選2011 殺人遊戲

題目鏈結 題目大意 有n個人,其中乙個是殺手,可以詢問一些人,如果是殺手就會死,如果是平民,他會告訴你他認識的人中有誰是殺手有誰是平民,求自身安全並知道殺手的概率最大是多少 題解 某個人是殺手的概率相等。考慮到每個scc只問乙個點就可以,進行縮點,縮點後每個scc對答案貢獻等價。知道誰是殺手相當於知...