【51nod】1494 选举拉票 扫描线+线段树

51nod 1494 选举拉票【贪心】【扫描线】【线段树】2023华为od机试真题【人气最高的店铺】 51nod 1494 选举拉票,华为od机试真题【人气最高的店铺】算法思路 阅读详情

题目传送门

扫描线是什么鬼啊……为什么我好像什么都不会啊QwQ……

Orz sillyf

以上的图片来自sillyf大佬的博客,大佬传送门

把所有的候选人拥有的票数看做一条线段,枚举当前自己拥有的票数为 i ,所有票数大于等于自己的票数的人必须要去py(逃)收买投票的人

如果把当前必须买的部分全买完了票数还是不够,就需要去挑着买的部分选一些便宜的买来,这个可以用权值线段树实现。

附上AC代码:

#include <cstdio>
#include <cctype>
#include <vector>
#include <algorithm>
using namespace std;

typedef long long ll;
const int N=1e5+10;
int n,x,y,num,m,c,t1[N<<2];
vector <int> a[N],b[N];
ll sum,ans,t2[N<<2];

inline char nc(void){
    static char ch[100010],*p1=ch,*p2=ch;
    return p1==p2&&(p2=(p1=ch)+fread(ch,1,100010,stdin),p1==p2)?EOF:*p1++;
}

inline void read(int &a){
    static char c=nc();int f=1;
    for (;!isdigit(c);c=nc()) if (c=='-') f=-1;
    for (a=0;isdigit(c);a=(a<<3)+(a<<1)+c-'0',c=nc());
    return (void)(a*=f);
}

inline bool cmp(int x,int y){return x>y;}

#define lt (k<<1)
#define rt (k<<1|1)
#define mid (l+r>>1)

inline void change(int k,int l,int r,int wz){
    if (l==r) return (void)(++t1[k],t2[k]+=1ll*l);
    if (wz<=mid) change(lt,l,mid,wz);
    else change(rt,mid+1,r,wz);
    return (void)(t1[k]=t1[lt]+t1[rt],t2[k]=t2[lt]+t2[rt]);
}

inline ll query(int k,int l,int r,int w){
    if (l==r) return 1ll*l*w;
    if (w==t1[lt]) return t2[lt];
    if (w<t1[lt]) return query(lt,l,mid,w);
    return t2[lt]+query(rt,mid+1,r,w-t1[lt]);
}

int main(void){
    read(n),m=1;
    for (int i=1; i<=n; ++i){
        read(x),read(y),num=max(num,x);
        if (y==0) continue;
        m=max(m,y),ans+=1ll*y,a[x].push_back(y);
    }
    for (int i=1; i<=num; ++i)
        if (a[i].size()){
            sort(a[i].begin(),a[i].end(),cmp);
            for (int j=0; j<a[i].size(); ++j) b[j+1].push_back(a[i][j]);
        }
    c=n,sum=ans;
    for (int i=1; i<=n; ++i){
        c-=b[i].size();
        for (int j=0; j<b[i].size(); ++j) change(1,1,m,b[i][j]),sum-=1ll*b[i][j];
        ll t=0;
        if (c<=i) t=query(1,1,m,min(i+1-c,n));
        ans=min(ans,sum+t);
    }
    return printf("%lld\n",ans),0;
}
华为OD机试|华为od题库|华为od机考|2025真题目录C++实现|2025C卷B卷 华为OD机试|华为od题库|华为od机考|2025真题目录C++实现|B卷C卷|华为OD机试|华为od题库|华为od机考|2025真题目录C++实现|B卷C卷|华为OD机试|华为od题库|华为od机考|2025真题目录C++实现|B卷C卷|华为OD机试|华为od题库|华为od机考|2025真题目录C++实现|B卷C卷 阅读详情

相关推荐

【选举拉票】

0 ≤ bi ≤ 10^4),表示第 i 个选民选的是第 ai 号候选人,想要让他选择自己就要花 bi 的钱。你是 0 号候选人(所以,如果一个选民选你的话 ai 就是 0,这个时候 bi 也肯定是 0 )。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(严格的多,不能和他们中最多的相等)。第一行有一个整数 n(1 ≤ n ≤ 10^5),表示这个县的选民数目。输出一个整数表示花费的最少的钱。

优快云 1575

51nod 1494 选举拉票 (线段树+扫描线)

1494选举拉票 题目来源:CodeForces 基准时间限制:1秒 空间限制:131072KB 分值:80难度:5级算法题 收藏 关注 现在你要竞选一个县的县长。你去对每一个选民进行了调查。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(...

weixin_30341735的博客 204

华为OD机试 - 人气最高的店铺(JS)

如果选择发放 10元+20元+30元=60元 的补贴来抢2,3.4号店铺的票,总共发放了60元补贴(5号店铺有2票,1号店铺要3票才能胜出)如果选择发放 10元+20元+30元=60元 的补贴来抢2,3,4号店铺的票,总共发放了60元补贴(5号店铺有2票,1号店铺要3票才能胜出)如果选择发放 10元+40元=50元 的补贴来抢2,5号店铺的票,总共发放了50元补贴(抢了5号店铺的票后,现在1号店铺只要2票就能胜出)的换皮题,具体解析请看该博客的。有5个人参与,共5个店铺。有5个人参与,共5个店铺。

m0_46181452的博客 96

[枚举 线段树] 51Nod1494 选举拉票

直接做不太可做,我们可以枚举一个 dd 表示其他人最大值不大于 dd 时的方案数。 这样就好做多了,比 dd 大的部分就一定要全部扣掉。然后如果自己的票数不足 dd ,就需要在剩下的所有票里取最便宜的前几个,需要线段树询问前k小值的加和。#include<cstdio> #include<vector> #include<algorithm> #define Fir first #define Se

Lynstery's blog 578

基于h5端的视频录制和回溯功能的实现

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

发果叁 3191

QWEN 2.5模型结构解析与代码解读

对Qwen2.5大模型的代码进行研究

4364

51nod 1494 选举拉票【贪心】【扫描线】【线段树】

Description现在你要竞选一个县的县长。你去对每一个选民进行了调查。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(严格的多,不能和他们中最多的相等)。请计算一下最少要花多少钱。题解直接做很困难,所以我们想到了枚举我的选票数,所有选票数比我多的人的选票都要被我抢到小于我的选票数(一定是从小到大

Sdywolf的博客 681

vLLM 多机多卡推理测试与验证(Kubernetes)vLLM 多机多卡推理 Kubernetes 验证

本文记录在两台 L20 机器,每台机器 4 块 L20 显卡(46G)的环境下,使用 vLLM 部署 Qwen2.5-32B-Instruct-GPTQ-Int4 模型并提供多节点多卡推理服务的过程。服务(Serving)模型服务是指将模型部署到生产环境中,通过 API 或其他接口提供预测服务的过程。【分布式推理与服务】(Distributed Inference and Serving)是指在多个机器或设备之间部署和管理机器学习模型,以高效地处理推理请求并满足大规模服务需求。3、启动 vLLM 服务。

流水_鱼鱼的博客 3459

51nod 1494 选举拉票 | 线段树

51nod1494 选举拉票 题面 现在你要竞选一个县的县长。你去对每一个选民进行了调查。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(严格的多,不能和他们中最多的相等)。请计算一下最少要花多少钱。 Input 单组测试数据。 第一行有一个整数n (1 ≤ n ≤ 10^5),表示这个县的选民数...

weixin_30556161的博客 165

携程旅行网景区,评论数据爬虫项目数据库保存附源码

这是一个专门用于爬取某旅行网景区评论数据的Python爬虫项目。项目采用模块化设计,支持MySQL数据库存储,具备完整的异常处理机制和反爬虫策略。

ymqzhy的博客 2568

Android逆向实战:用Xposed Hook微信消息发送(附完整代码)

本文提供了一份Android逆向实战指南,详细讲解如何使用Xposed框架Hook微信消息发送功能。内容涵盖环境搭建、逆向分析定位关键方法、编写Hook模块代码以及调试部署的全过程,并附有完整代码示例,帮助开发者深入理解Android应用底层交互与Hook技术。

weixin_29196315的博客 1118

【51NOD1494】选举拉票

题面 现在你要竞选一个县的县长。你去对每一个选民进行了调查。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(严格的多,不能和他们中最多的相等)。请计算一下最少要花多少钱。1 ≤ n ≤ 10^5,0 ≤ ai ≤ 10^5; 0 ≤ bi ≤ 10^4 分析 选举拉票是否违法? 是...

Ashley_2013的博客 223

keil4.72添加GD32F10x芯片

1. 下载 GD32F10x_AddOn_V2.0.1.rar,解压缩。 2. 安装 运行GigaDevice.GD32F10x_AddOn.2.0.0.exe 安装位置 再新建工程,发现已经有GD32F10x 3. 增加的文件分析 运行GigaDevice.GD32F10x_AddOn.2.0.0.exe后,在keil文件夹种增加文件如下: ...

TrueLink的博客 2762

选举拉票 51Nod - 1494

现在你要竞选一个县的县长。你去对每一个选民进行了调查。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(严格的多,不能和他们中最多的相等)。请计算一下最少要花多少钱。 Input 单组测试数据。 第一行有一个整数n (1 ≤ n ≤ 10^5),表示这个县的选民数目。 接下来有n行,每一行有两个整...

jinduo16的博客 291

TPAMI 2024 | 面向大型城市场景的快速建筑实例代理重建

大规模城市场景(特别是建筑物)的数字化是一个长期存在的开放问题,这归因于数据获取方面的挑战,如场景覆盖不完整、缺乏语义、规划路径的效率和可靠性低。在本文中,我们针对从航拍图像中重建城市建筑的问题,提出了一个有效的工作流程和一些新颖的算法,用于大型城市场景中高效的3D建筑实例代理重建。具体来说,我们提出了一种基于学习的新型方法,用于从航拍图像中进行城市建筑的实例分割,然后通过基于投票的算法将多视图实例信息融合到稀疏点云中(使用标准结构从运动管道重建)。我们的方法实现了从点云中对建筑实例进行有效的实例分割。

小白学视觉 322

配置 SAP ABAP Secure Storage

系统在进行数据加密时,会将数据与当前 Key ID 进行关联,也就是说,如果此时使用的是 Key ID 4713,则该条数据会在 Encrypt.Data 字段存储一个由密钥 4713 加密后的密文。Key ID 代表了不同的密钥标识,Current Key 表示系统当前正在使用的主密钥,Value 则是对应密钥的存储值,Management Data 通常包括一些管理性或辅助性的信息,用于描述密钥的状态、过期时间或者其他属性。对于每一条被加密的业务数据,系统会记录它使用了哪一条 Key ID。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 566

51Nod-1494-选举拉票

ACM模版描述题解线段树的题倒是做过一些,但是和扫描线组合的倒是第一次做,以前甚至不知道什么叫做扫描线,做了这个题感觉有那么丢丢感觉了。首先,我们默认要拉所有选民,然后开始减少要拉的选民数。这是中心思想。具体的实现方式是,我们先对每个人的选民进行代价排序,然后扫描出来每个候选人的选民的代价 rankrank,同等 rankrank 的放在一起,你要是问什么是 rankrank 的话,举个最简单的例子

逐梦者 1074

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

线段树专项训练习题集

ACM模版线段树专项训练开始了,网上找了找相关的训练题,但是没有找到好的集锦,也只好作罢,自己根据前辈们的博客整理出来一份习题集吧,想来一下子全部整理出来不如一道道尝试,一道道整理,这样子可以给不同的试题更好的定位,所以,从今天开始,陆陆续续会更新本习题集,希望对大家以及我自己有更好的帮助。更新结点,区间求和HDU 1166 敌兵布阵更新结点,区间最值HDU 1754 I Hate It

逐梦者 2278

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【51nod】1461 稳定桌 扫描线+线段树

题目传送门感觉这题的套路要比“【51nod】1494 选举拉票”那题要简单啊……大雾在这题把每一条腿的长度看成线段,从小到大枚举一个长度ii,长度大于ii的所有腿必须要取,如果剩下的腿中长度为ii的腿的数量没有严格超过半数,那么就取长度小于ii的腿的权值前num−size∗2+1num-size*2+1小。然而我TMD线段树打错了,query(lt,l,mid,w)query(lt,l,mid,w)

Chester King 423

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

2019 CCSU GOLD!!!

线段树专场 更新结点,更新区间,区间求和(平均数)+ 树链剖分51Nod 1199 Money out of Thin Air 更新结点,区间最值,结点查找,区间求和51Nod 1364 最大字典序排列 区间合并 + LCA51Nod 1766 树上的最远点对 更新结点,结点查找,扫描线51Nod 1494 选举拉票 更新结点,区间最值 + dp51Nod 1781 Pinball 更...

weixin_34331102的博客 80

51Nod 1494 选举拉票(权值线段树)

http://www.51nod.com/Challenge/Problem.html#!#problemId=1494 题解 一开始有start个人投自己,num表示当前已经收买了多少人,从大到小枚举自己以i张票当选,那么其他人的票数一定要小于i,拿钱收买他们花费最少的>=i的这部分人,再加上另外要收买的i-start-num个最便宜收买的花费就是当前答案,这里可以对每个人的收买代价建...

weixin_34405925的博客 222

[51nod] 1494 选举拉票 #算法设计策略

1494选举拉票 题目来源:CodeForces基准时间限制:1秒 空间限制:131072KB 分值:80难度:5级算法题 现在你要竞选一个县的县长。你去对每一个选民进行了调查。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(严格的多,不能和他们中最多的相等...

weixin_30847865的博客 241

51nod 1494 选举拉票

题意: 1494 选举拉票 1.0 秒 131,072.0 KB 80 分 5级题 现在你要竞选一个县的县长。你去对每一个选民进行了调查。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(严格的多,不能和他们中最多的相等)。请计算一下最少要花多少钱。 输入 单组测试数据。 第一行有一个整数n (1 ≤ n ≤ 10^5),表示这个县的选民数目。 接下来有n行,每一行有两个整数ai 和 bi (0 ≤ ai ≤

m0_46082460的博客 275

51nod - 1494 选举拉票

现在你要竞选一个县的县长。你去对每一个选民进行了调查。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(严格的多,不能和他们中最多的相等)。请计算一下最少要花多少钱。 Input 单组测试数据。 第一行有一个整数n(1≤n≤10^5),表示这个县的选民数目。 接下来有n行,每一行有...

brucehb的专栏 635

51nod 1206 1028 1494题解+扫描线模板

51nod 1206 1028 1494题解+扫描线模板          扫描线是线段树在几何方面的经典应用,主要用来解决线段交点个数,矩形面积并和矩形周长并问题。但是扫面线的应用绝不仅限于此,很多看起来跟几何关系不大的问题,往往通过巧妙的转化可以变成扫描线的经典问题,下面就给出三道扫描线的例题。   题目1:https://www.51nod.com/onlineJudge/questi

hit_buxiaoyu的博客 1793
上一篇: 【BZOJ】4337 BJOI2015 树的同构 树hash
下一篇: 【BZOJ】1999 [Noip2007]Core树网的核 树的直径+DFS
Chester_King
博客等级 码龄10年 28粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值