Educational Codeforces Round 75 (Rated for Div. 2)E2. Voting (Hard Version)

2024-04-18 06:32

本文主要是介绍Educational Codeforces Round 75 (Rated for Div. 2)E2. Voting (Hard Version),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:https://codeforces.com/contest/1251/problem/E2

 

题目大意:有n个人要投票,每个人有两个属性m和p,表示当有m个人投票时,他就会免费投票,否则就需要花p元让他投票,问最少花多少钱能让n个人都投票

 

题目思路:E题,过的人这么少,代码竟然如此简单并没有算法,让我挺惊讶的,以后还是不能被人数吓到。

这题贪心非常巧妙。如何才能让花的钱最少?那就尽量能使人免费投票就让他免费投票。所以我们通过人数排序,先计算m比较大的,从大到小,每次把他需要的钱推进优先队列,把i从m遍历到0,表示需要i个人投票才能免费投,那么当优先队列里的人数大于n-i时,那么剩下来还没投加上以及花钱买来的人都已经没法让他免费获得了,那就只能花钱买人。买人买之前最便宜的,为什么一定要之前处理的呢?因为假如你用整体的最小值,很有可能不满足题意,因为可能有个最小值需要的人数非常少,那么在你买了一部分人的情况下,他就已经免费归你了,你没法再买他一次,但是如果倒着来的话,算过的家伙都是目前还等着别人帮忙的,一定没法直接就完成任务,所以需要他们出力

 

以下是代码:

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define ll long long
const int MAXN = 2e5+5;
const int MOD = 1e9+7;int n,x,y;
vector<int>v[MAXN];
priority_queue<int>q;
int main(){int _;cin>>_;while(_--){while(!q.empty())q.pop();cin>>n;rep(i,0,n)v[i].clear();rep(i,1,n){cin>>x>>y;v[x].push_back(y);}ll ans=0;per(i,n,0){for(auto u:v[i]){q.push(-u);if(q.size()>n-i){ans+=-q.top();q.pop();}}}cout<<ans<<endl;}return 0;
}

 

这篇关于Educational Codeforces Round 75 (Rated for Div. 2)E2. Voting (Hard Version)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914013

相关文章

Java compiler level does not match the version of the installed Java project facet. map解决方法

右键项目“Properties”,在弹出的“Properties”窗口左侧,单击“Project Facets”,打开“Project Facets”页面。 在页面中的“Java”下拉列表中,选择相应版本就OK了。

由于jdk版本问题引起的Unsupported major.minor version 52.0

tomcat启动报错 错误日志信息: 三月 01, 2019 9:47:02 下午 org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring root WebApplicationContext 三月 01, 2019 9:47:08 下午 org.apache.catalina.core.Standard

Codeforces 158B

很久没有刷题了,刚刚有小学弟问了这道题,AC之后贴上来吧。水~~~ #include <cstdio>#include <cmath>int main() {int n;while(scanf("%d", &n) != EOF) {int a = 0, b = 0, c = 0, d = 0;int arr[100001];for (int i = 0; i < n; ++

Codeforces April Fools Day Contest 2014(附官方题解)

Codeforces2014年愚人节的坑题。。。但还是感觉挺好玩的。。。 A. The Great Game time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Two teams mee

Codeforces April Fools Day Contest 2013

2013年愚人节的坑题。。。 A. Mysterious strings time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Input The input contains a sin

查询课程编号以'c05'开头,被3名及以上学生选修且期末成绩的平均分高于75分的课程号、选修人数和期末成绩平均分,并按平均分降序排序

--查询课程编号以'c05'开头,被3名及以上学生选修--且期末成绩的平均分高于75分的课程号、选修人数--和期末成绩平均分,并按平均分降序排序use teachinggoselect courseno,count(studentno)as '选修人数',avg(final) as '期末平均分'from scorewhere courseno like 'c05%' and fi

Spring (75)Spring Boot的部署最佳实践

在部署Spring Boot应用程序时,最佳实践通常涉及应用程序的打包、配置管理、健康检查、日志记录、安全、环境隔离和监控。以下是结合一些最佳实践的详细步骤和解释。 1. 打包和构建 Spring Boot应用程序通常打包为可执行的JAR文件,它包括应用程序和所有依赖项以及嵌入式Tomcat、Jetty或Undertow服务器。 使用Maven或Gradle作为构建工具,并且确保使用Spri

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Jun 2024)

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Jun 2024) Windows 11, version 23H2,企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Windows 11

力扣SQL50 项目员工 I ROUND AVG

Problem: 1075. 项目员工 I 👨‍🏫 参考题解 Code select project_id,ROUND(AVG(e.experience_years),2) as average_yearsFROMproject as pLEFT JOINemployee as eONp.employee_id = e.employee_idGROUP BYp.proje

System.Runtime, Version=6.0.0.0,生成的dll使用出现错误问题

解决: 1.unity左上角file点击选中build settings 点击player settings ,然后在player的window的other settings的configuration更改为 Framerwork 其实这个不换也可以的,我后面调试完,发现这个不是重点,下面第2点才是重点 2.然后vscode创建项目确保为framework 版本默认即可,如果选择sta