HihoCoder 1513 : 小Hi的烦恼
生活随笔
收集整理的這篇文章主要介紹了
HihoCoder 1513 : 小Hi的烦恼
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
小Hi從小的一大興趣愛好就是學習,但是他發現盡管他認真學習,依舊有學神考的比他好。
小Hi在高中期間參加了市里的期末考試,一共五門:語文、數學、英語、物理、化學。
成績出來之后,小Hi發現有些同學,所有科目都考的比他好,他很煩惱。所以他想知道所有科目都比自己名次靠前的同學的人數。
為了方便,可以認為不存在兩個人某一門名次是相同的。
其他同學們也想知道有多少人全面碾壓了他們,所以你需要對所有人輸出答案。
Solution
雖然可以用5維cdq分治做但是好像沒什么燃用.
而且這個做法可以用分塊加速一下, 當然我沒有.
#include <bitset> #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> const int N = 30005;int Ranks[N][6];std:: bitset<N> QRanks[6][N]; int A[N], B[N], C[N], D[N], E[N];int main () {int n;scanf("%d", &n);for (int i = 0; i < n; i += 1) {int a, b, c, d, e;scanf("%d%d%d%d%d", &a, &b, &c, &d, &e);A[i] = a, B[i] = b, C[i] = c, D[i] = d, E[i] = e;Ranks[a][1] = i, Ranks[b][2] = i, Ranks[c][3] = i,Ranks[d][4] = i, Ranks[e][5] = i;}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) {printf("%d\n", (QRanks[1][A[i] - 1] & QRanks[2][B[i] - 1]& QRanks[3][C[i] - 1] & QRanks[4][D[i] - 1] & QRanks[5][E[i] - 1]).count());}return 0; }轉載于:https://www.cnblogs.com/qdscwyy/p/9775060.html
總結
以上是生活随笔為你收集整理的HihoCoder 1513 : 小Hi的烦恼的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webstorm中git密码输入错误,重
- 下一篇: Stock Market(luogu 2