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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Fight against involution

發布時間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Fight against involution 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:

對抗內卷(大佬經常說別再卷了)
有一門課程n個學生選,期末要寫一篇論文每個同學寫的字數有一個下限和一個上限,課程的成績是按學生字數的排名來給分的,排名越高分數越高,每個同學都想得到更高的成績,而且他們都想寫最少字數,那么在滿足每個同學不能比原計劃分數低的情況下求出所有同學總共要寫的最少字數。

題解:

本題的關鍵在于要理解“不能比原計劃的分數低”,我認為是“戰勝該戰勝的人”,也就是如果有的人自己肯定能超過,那就一定要超過,還是不明白繼續看
如果A的上限大于B的上限,那么B永遠不能超過A,只要A的字數比B的上限高即可。也就是說對于A來說B是肯定能超過的人
如果兩個人的上限一樣,那么就比下限,如果AB上限一樣,A的下限比B的更低,為了讓大家的字數都少,B就取下限,A也取下限。(B的下限是在A的范圍內的,而反過來不對),也就是說當兩個人不存在絕對優勢時,不如大家寫的一樣少,即提高了排名又少了字數
現在我們根據這兩個規則來確定排名(含并):按照上限降序,當上限一樣時按照下限升序,這樣的排序結果基本上就是他們的排名
規定一個最小字數mini,我們從最后一名同學開始,如果該同學的下限小于mini,那么他就寫mini的字數,如果大于mini(說明該同學無法寫到mini的子樹),該同學只能寫自己下限的字數,并維護新的mini,這樣進行

代碼:

#include<bits/stdc++.h>using namespace std;struct node{long long a;long long b;node(){}node(long long aa,long long bb){a=aa;b=bb;}};bool cmp(node node1,node node2){if(node1.b==node2.b)return node1.a<node2.a;//下限從小到大 elsereturn node1.b>node2.b;//上限從大到小 }int main(){int n;long long ans;ans=0;node N[100005];cin>>n;for(int i=0;i<n;i++){long long aa,bb;cin>>aa>>bb;N[i]=node(aa,bb);}sort(N,N+n,cmp);long long minword=N[n-1].a;ans+=minword;for(int i=n-2;i>=0;i--){if(minword>=N[i].a){ans+=minword;}else{minword=N[i].a;ans+=minword;} }cout<<ans<<endl;return 0;}

總結

以上是生活随笔為你收集整理的Fight against involution的全部內容,希望文章能夠幫你解決所遇到的問題。

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