天梯賽訓練題12

2021-09-10 15:05:34 字數 1898 閱讀 7662

l2-4 秀恩愛分得快 (25 point(s))

古人云:秀恩愛,分得快。

網際網路上每天都有大量人發布大量**,我們通過分析這些**,可以分析人與人之間的親密度。如果一張**上出現了 k 個人,這些人兩兩間的親密度就被定義為 1/k。任意兩個人如果同時出現在若干張**裡,他們之間的親密度就是所有這些同框**對應的親密度之和。下面給定一批**,請你分析一對給定的情侶,看看他們分別有沒有親密度更高的異性朋友?

輸入在第一行給出 2 個正整數:n(不超過1000,為總人數——簡單起見,我們把所有人從 0 到 n-1 編號。為了區分性別,我們用編號前的負號表示女性)和 m(不超過1000,為**總數)。隨後 m 行,每行給出一張**的資訊,格式如下:

k p[1] ... p[k]
其中 k(≤ 500)是該****現的人數,p[1] ~ p[k] 就是這些人的編號。最後一行給出一對異性情侶的編號 a 和 b。同行數字以空格分隔。題目保證每個人只有乙個性別,並且不會在同一張**裡出現多次。

首先輸出a pa,其中pa是與a最親密的異性。如果pa不唯一,則按他們編號的絕對值遞增輸出;然後類似地輸出b pb。但如果ab正是彼此親密度最高的一對,則只輸出他們的編號,無論是否還有其他人並列。

10 4

4 -1 2 -3 4

4 2 -3 -5 -6

3 2 4 -5

3 -6 0 2

-3 2

-3 2

2 -5

2 -6

4 4

4 -1 2 -3 0

2 0 -3

2 2 -3

2 -1 2

-3 2

-3 2
#includeusing namespace std;

#define ll long long

#define rep(i,a,b) for(int i=(a);i<(b);++i)

#define maxn 4019

int n,m,k[maxn],a,b,***a,***b;

int fu[maxn],pic[maxn][maxn],pwa[maxn],pwb[maxn];

double pa[maxn],pb[maxn];

vectorans1,ans2;

struct gg

p1[maxn],p2[maxn];

int read(char*str,int ans,int *fu_)

else

return ans;

}void getpwith_(int index,int row)

}}int cmp(gg x,gg y)

{ if(x.v!=y.v)

return x.v>y.v;

return x.id將每個人的性別存如陣列,如0號對應性別是男,則fu[0]=1,否則fu[0]=0;

用兩個陣列分別表示每個人與a,b的好感度:pa[某人]=某人與a的好感度;pb[某人]=某人與b的好感度。

遍歷n個人,如果這個人和a是同性(包括a和a自身),pa[某人]=-1;pb同理

遍歷m張**,判斷每張**中是否出現過a,如果出現過,將這張**中所有的異性用乙個陣列元素標記為1,最後將被標記過的異性對應的臨時陣列元素的值++;出現過b同理。

遍歷所有人,pa[某人]+=臨時陣列每個元素值處以k[i],i代表**i。pb同理

根據pa,pb對所有人進行排序。得到和a關係度最高的人的id,b同理

輸出

天梯賽訓練題18

7 18 閱覽室 20 分 天梯圖書閱覽室請你編寫乙個簡單的圖書借閱統計程式。當讀者借書時,管理員輸入書號並按下s鍵,程式開始計時 當讀者還書時,管理員輸入書號並按下e鍵,程式結束計時。書號為不超過1000的正整數。當管理員將0作為書號輸入時,表示一天工作結束,你的程式應輸出當天的讀者借書次數和平均...

PTA天梯賽訓練題 福到了

福 字倒著貼,寓意 福到 不論到底算不算民俗,本題且請你編寫程式,把各種漢字倒過來輸出。這裡要處理的每個漢字是由乙個 n n 的網格組成的,網格中的元素或者為字元 或者為空格。而倒過來的漢字所用的字元由裁判指定。輸入在第一行中給出倒過來的漢字所用的字元 以及網格的規模 n 不超過100的正整數 其間...

PTA天梯賽訓練題 正整數A B

題目描述 題的目標很簡單,就是求兩個正整數a和b的和,其中a和b都在區間 1,1000 稍微有點麻煩的是,輸入並不保證是兩個正整數。輸入格式 輸入在一行給出a和b,其間以空格分開。問題是a和b不一定是滿足要求的正整數,有時候可能是超出範圍的數字 負數 帶小數點的實數 甚至是一堆亂碼。注意 我們把輸入...