牛客网【每日一题】3月25日 tokitsukaze and Soldier
牛客網(wǎng)【每日一題】3月25
題號:NC50439
名稱: tokitsukaze and Soldier
來源:練習(xí)賽50-C
鏈接: link.
來源:牛客網(wǎng)
時(shí)間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 524288K,其他語言1048576K
64bit IO Format: %lld
題目描述
在一個(gè)游戲中,tokitsukaze需要在n個(gè)士兵中選出一些士兵組成一個(gè)團(tuán)去打副本。
第i個(gè)士兵的戰(zhàn)力為v[i],團(tuán)的戰(zhàn)力是團(tuán)內(nèi)所有士兵的戰(zhàn)力之和。
但是這些士兵有特殊的要求:如果選了第i個(gè)士兵,這個(gè)士兵希望團(tuán)的人數(shù)不超過s[i]。(如果不選第i個(gè)士兵,就沒有這個(gè)限制。)
tokitsukaze想知道,團(tuán)的戰(zhàn)力最大為多少。
輸入描述:
第一行包含一個(gè)正整數(shù)n(1≤n≤10^5)。
接下來n行,每行包括2個(gè)正整數(shù)v,s(1≤v≤10^9,1≤s≤n)。
輸出描述:
輸出一個(gè)正整數(shù),表示團(tuán)的最大戰(zhàn)力。
示例1
輸入
輸出
3示例2
輸入
輸出
100思路
所求的最大戰(zhàn)斗力由v和s這兩個(gè)因素限制。
結(jié)構(gòu)體數(shù)組a存放v和s,然后對其排序,先按照s從大到小,如果s相同再排v,也是從大到小(先要保證足夠的人數(shù),后面好進(jìn)行取舍)。
定義一個(gè)從小到大的優(yōu)先隊(duì)列q,ans相互跟隨q,(q每次添加一個(gè)戰(zhàn)力值,同時(shí)用ans加上戰(zhàn)力值;ans刪去,q也彈出),戰(zhàn)力值的先后加入由s的排序決定,當(dāng)q的元素?cái)?shù)量大于當(dāng)前s的值時(shí)(s是由大到小的排序的),就將多出的部分pop出(q是從小到大排序,所以彈出的總是其中最小值),再用ans減去,這樣ans的值即為在人數(shù)限定在s內(nèi)的最佳情況(因?yàn)閺棾龅氖亲钚≈?#xff0c;相對于前s個(gè)數(shù)的和,所以之后也不用再考慮被彈出的數(shù)),記錄ans的最大值
我剛開始提交是70多分,想了一陣子才發(fā)現(xiàn)是數(shù)組開小了(笑哭)
總結(jié)
以上是生活随笔為你收集整理的牛客网【每日一题】3月25日 tokitsukaze and Soldier的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 域名没有空间怎么备案(域名没有空间怎么备
- 下一篇: 牛客网【每日一题】3月26日 合并回文子