日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息学奥赛一本通 2005:【20CSPJ普及组】直播获奖 | 洛谷 P7072 [CSP-J2020] 直播获奖

發布時間:2025/3/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息学奥赛一本通 2005:【20CSPJ普及组】直播获奖 | 洛谷 P7072 [CSP-J2020] 直播获奖 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目鏈接】

ybt 2005:【20CSPJ普及組】直播獲獎
洛谷 P7072 [CSP-J2020] 直播獲獎

【題目考點】

  • 計數排序(桶排序)
    其核心為:設計數數組c,c[i]表示數字i出現的個數
    遍歷計數數組c,即可得到排序。
    計數排序只能對范圍有限的整數進行排序
  • 【解題思路】

    • 該題突破點在于“每個選手的成績均為不超過600的非負整數”,整數,且范圍有限,適合使用計數排序。
    • 題目要求每增加一個數據后,都要得到數據列表中第?p?w/100?\lfloor p\cdot w/100 \rfloor?p?w/100?個元素。
      需要維護一個計數數組,循環n次,每次在計數數組中添加一個數字,而后查找值?p?w/100?\lfloor p\cdot w/100 \rfloor?p?w/100?的最后一次出現的位置。
    • 【復雜度】記k為分數的范圍,遍歷計數數組查找值位置的復雜度為O(k),循環n次, 總復雜度為O(nk)O(nk)O(nk),題目給定n最大為10510^5105,k為600,n?k<107n\cdot k < 10^7n?k<107,那么O(nk)O(nk)O(nk)是可以接受的復雜度。
    • 【注意 輸入輸出】: 由于要輸出10510^5105數量級個的數據,所以不能使用cin和cout,只能使用scanf與printf。

    【題解代碼】

    #include<bits/stdc++.h> using namespace std; int c[700];//計數數組 c[i]表示分數i出現的個數 int main() {int n, w, g, i, j, p, c[700]={};//j:分數線scanf("%d %d", &n, &w);//n:人數 w:百分比 for(int i = 1; i <= n; ++i)//當前有i個人{cin >> g;//輸入分數 c[g]++;//分數g的個數增加1 p = max(1, i * w / 100);//此時獲獎的是p個人for(j = 600; j >= 0; --j)//尋找分數線,即第p人的分數,已知分數不超過600{//降序排列,先看高分再看低分 p -= c[j];//分數為j的人有c[j]人,p減少j人。p表示還要看幾個人。 if(p <= 0)break;//此時j是分數線}printf("%d ", j);}return 0; }

    總結

    以上是生活随笔為你收集整理的信息学奥赛一本通 2005:【20CSPJ普及组】直播获奖 | 洛谷 P7072 [CSP-J2020] 直播获奖的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。