E2. Voting (Hard Version)(思维)

阅读: 评论:0

E2. Voting (Hard Version)(思维)

E2. Voting (Hard Version)(思维)

 

 

有 n 个人,每个人有 mi 和 pi ,mi 代表着如果有 mi 个人投票给他,那么他就免费投票给他,否则你需要花费pi的代价来收买他。请问最少花费多少使得所有人都投他。

看到 m 数组的数据范围,m 数组作为数组下标应该是没得跑了,有贪心策略我们应该选择 pi 尽量少的那些人,但是同时要照顾到 m 数组。

因为要贿赂的总人数我们不知道,但借用优先队列(小根堆),将目前为止的最少需要的贿赂人数贿赂。

向题目中提到的:m :1 2 2 4 5,只需贿赂 m[5] 即可,这样贪心策略就出来了:把这些 m 偏大的人先贿赂了,贿赂的最少人数为 n-i (i 为 m 数组的下标)  

    vector<int> v[N];int main()
{//IOS;rush(){sd(n);for(i=0;i<=n;i++) v[i].clear();for(int i=1,p;i<=n;i++){sdd(m,p);v[m].pb(p);}priority_queue< int ,vector<int>,greater<int> >q;ll ans=0;for(i=n;i>=0;i--){int len=v[i].size();for(j=0;j<len;j++) q.push(v[i][j]);while(q.size()>n-i){//到此时为止必须有 n-i 个人为其投票 ans+&#p();q.pop();}}pll(ans);}//PAUSE;return 0;
}

 

本文发布于:2024-01-28 13:11:17,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064186817658.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:思维   Voting   Version   Hard
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23