HihoCoder 1513 小Hi的煩惱

2022-04-29 03:03:09 字數 728 閱讀 4045

小hi從小的一大興趣愛好就是學習,但是他發現儘管他認真學習,依舊有學神考的比他好。

小hi在高中期間參加了市裡的期末考試,一共五門:語文、數學、英語、物理、化學。

成績出來之後,小hi發現有些同學,所有科目都考的比他好,他很煩惱。所以他想知道所有科目都比自己名次靠前的同學的人數。

為了方便,可以認為不存在兩個人某一門名次是相同的。

其他同學們也想知道有多少人全面碾壓了他們,所以你需要對所有人輸出答案。

雖然可以用5維cdq分治做但是好像沒什麼燃用.

而且這個做法可以用分塊加速一下, 當然我沒有.

#include #include #include #include #include const int n = 30005;

int ranks[n][6];

std:: bitsetqranks[6][n];

int a[n], b[n], c[n], d[n], e[n];

int main ()

for (int i = 1; i <= 5; i += 1)

for (int j = 1; j <= n; j += 1)

qranks[i][j] = qranks[i][j - 1], qranks[i][j].set(ranks[j][i]);

for (int i = 0; i < n; i += 1)

return 0;

}

hihoCoder 1513 小Hi的煩惱

我會五維數點辣 只要用個bitset亂搞就好了 記錄一下rk i j 表示第j科排名為i的是誰 用30000 5個大小為30000的bitset s i j 是乙個bitset表示第j科,排名為1 i的人是多少 最後只要對於每個人,把每一維小於它的集合and起來,然後用count 函式輸出裡面1的個...

hihoCoder1345 小h的朋友們

小h很多朋友。他給第i個朋友分配了乙個代號ai,並使代號序列滿足如下關係 ai k 1 a i 1 k2 ai 2 mod 1,000,000,007 現在小h忘記了第z個朋友的代號az,但是他記得第x個朋友和第y個朋友的代號ax和ay。小h很著急,向小y求助。小y很忙,把任務交給了你,希望你求出第...

Hihocoder 小Hi的煩惱

解題思路 其實題目自帶的題解已經交代的比較清楚了。但是如果完全按照題目自帶的解法來計算,肯定是會超時的。因為無論如何還是o n 2 的解法,當然也可能是彩筆我比較菜只能寫出這樣的。所以需要一些轉換。這個題目給的記憶體空間為1024m,顯然我們要用空間換時間了。就以單個科目為例吧。假設a i 表示第i...