557C - Arthur and Table (前缀和)

18927 前缀和 题目描述 前缀和是一种重要的预处理方法,能极大地降低查询序列区间和的时间复杂度。 现在一个序列中有n个整数,下标从1…n。 有m个查询,每个查询给出一个区间的左右端点下标,请输出这个区间所有数据的和。 输入格式 第一行一个整数n。(1<=n<=100000) 第二行n个整数,用空格分隔,int范围。 第三行一个整数m。(1<=m<=100000) 下面m行每行两个整数L,R。(1<=L<=R<=n) 输出格式 输出共m行,每行一个整数为对应区间[L,R]的序列和。 阅读详情

如果选择L为最后的最长长度,那么大于L的桌腿必须全去除。然后假如此时剩下M条桌腿,长度L的桌腿有num[L]条,如果tmp=num[L]*2-1-M<=0就不需要再去除,如果tmp>0,就需要在小于L的腿中选择tmp条花费最小的桌腿。


首先把桌腿按长度排序然后预处理前缀和,这样后可以O(1)得到大于L的桌腿的总代价。

然后因为代价的最大值才200,那么维护小于L的每种代价桌腿的数量,按照计数排序的方法选择桌腿去除,再维护这个数量。


代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#include <algorithm>
int N;
struct node{
    int l,d;
}G[100005];
int num[100005];
int c[100005];
int n[100005];
int D[205];
bool cmp(node a,node b){
    if(a.l==b.l) return a.d<b.d;
    return a.l<b.l;
}


int main(){
    scanf("%d",&N);
    for(int i=0;i<N;i++){
        scanf("%d",&G[i].l);
        num[G[i].l]++;
    }
    for(int i=0;i<N;i++){
        scanf("%d",&G[i].d);
    }
    sort(G,G+N,cmp);
    c[0]=G[0].d;
    for(int i=1;i<N;i++){
        c[i]=c[i-1]+G[i].d;
    }
    n[0]=0;
    for(int i=1;i<=100000;i++){
        n[i]=n[i-1]+num[i];
    }
    int res=100000000;
    for(int i=1;i<=100000;i++){
        if(!num[i]) continue;
        int cur=c[N-1]-c[n[i]-1];
        int tmp=n[i]-(num[i]*2-1);
        while(tmp>0){
            for(int i=1;i<=200;i++){
                if(D[i]<=tmp){
                    cur+=D[i]*i;
                    tmp-=D[i];
                }
                else if(tmp<D[i]){
                    cur+=tmp*i;
                    tmp=0;
                }
            }
        }
        res=min(res,cur);
        for(int j=n[i-1];j<n[i];j++){
            D[G[j].d]++;
        }
    }
    printf("%d\n",res);
    return 0;
}


Enterprise Architect 中文经典教程 本文使用到的EA工程文件下载 一、Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,... 阅读详情

相关推荐

VSCode+ESP-IDF开发环境搭建:从零开始创建你的第一个物联网项目(2024最新版)

本文详细介绍了如何在2024年使用VSCode和ESP-IDF搭建物联网开发环境,从零开始创建第一个物联网项目。内容包括环境准备、ESP-IDF配置、项目创建与结构解析、构建烧录步骤以及高级技巧和常见问题解决方案,帮助开发者快速上手ESP32开发。

weixin_29165725的博客 330

18727 数对问题一

18727 数对问题一 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC Description 一个长度为N的正整数序列,现在需要计算出有多少对数字的差的绝对值为C。 注意只要位置不同就认为是不相同的数对。 输入格式 第一行,两个整数 N, C。(1=<N<=10000),(1=<C<=10000) 第二行,N个正整数a1…an。 (1=<ai<=10000) 输出格式 仅一行,满足条件的数对的个数

Boucy的博客 318

LabVIEW+数据库应用系列保姆级教程,第一篇数据库连接

目录LabVIEW连接数据库的方法连接MySQL连接Oracle,SQL Server,Access等 LabVIEW连接数据库的方法 1、创建udl(Universal Data Link)是通用数据连接文件。界面操作,简单快捷。 2、编写连接字符串。需要熟悉连接字符串的结构,容易出错。 3、其他… 本教程教你使用第1种方法,也是最简单、最常用的方法。 连接MySQL 1、在MySQL Installer内安装MySQL Connector/ODBC,建议安装32位(X86),如下图: 2、创建ODBC

wwplh5520370的博客 1万+

SCAU 18927 前缀和

前缀和是一种重要的预处理方法,能极大地降低查询序列区间和的时间复杂度。 现在一个序列中有n个整数,下标从1…n。 有m个查询,每个查询给出一个区间的左右端点下标,请输出这个区间所有数据的和。 输入格式 第一行一个整数n。(1<=n<=100000) 第二行n个整数,用空格分隔,int范围。 第三行一个整数m。(1<=m<=100000) 下面m行每行两个整数L,R。(1<=L<=R<=n) 输出格式 输出共m行,每行一个整数为对应区间[L,R]的序列和。 注意序列和

qqqcp3的博客 1254

从宏观到街道:如何利用七普数据为WorldPop人口栅格做“本地化”校准?

本文探讨了如何利用第七次全国人口普查(七普)数据对WorldPop人口栅格进行本地化校准,以提高街道级别的人口分布精度。通过分析数据偏差、选择适当的技术路线和工具(如Arcgis和栅格计算器),文章详细介绍了从宏观到街道的校准实践,帮助规划公共卫生资源和优化城市基础设施。

janckywong963的专栏 512

遥感数据处理之MCD19A2数据的处理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 这一段时间一直在做modis气溶胶产品——MCD19A2这个数据的处理工作,总结了一些东西,在这里分享一下。 modis数据一般可以用MCTK和MRT这两个工具进行处理,下面先介绍一下用这两种工具处理MCD19A2的流程: 先解众惑:为什么使用MCD19A2数据处理出来的结果会有3个或4个或5个波段。 这里使用HDF Exploer这个软件,下载链接 1.使用MCTK处......

weixin_42176976的博客 1万+

【codeforces 557C Arthur and Table】+ 思维

C. Arthur and Table time limit per test 1 second memory limit per test 256 megabytes input standard input output standard outputArthur has bought a beautiful big table into his new flat. When h

楚江枫 745

EB Tresos激活失败?3种实用解决方案帮你搞定(含离线激活步骤)

本文针对EB Tresos软件激活失败问题,提供了三种实用的解决方案。详细分析了激活失败的常见根源,并系统阐述了在线环境下的排查步骤、无网环境下的离线激活全流程,以及高级许可证环境修复方法,帮助汽车电子工程师快速恢复开发环境。

milk8的博客 609

C. Arthur and Table

链接 [https://codeforces.com/contest/557/problem/C] 题意 给你每个木棍的长度,以及移除每个木棍的代价 使得桌子稳定,最长的木棍必须大于剩下的一半 分析 这个数据范围,就是得暴力和前缀和还有一些技巧 枚举每一种长度,大于它的全部移除, 那么剩下的就尽可能地移除少量的木棍,而且移除可以移除的最小代价 复杂度2e7左右。 代码 #include<bi...

weixin_30708329的博客 233

从理论到板级:FOC电机驱动硬件电路全链路设计解析

本文从硬件工程师视角,深度解析FOC电机驱动从理论到板级实现的全链路设计。重点剖析了电源保护、核心采样电路、三相逆变桥与驱动电路等关键硬件模块的设计要点与实战经验,强调硬件是FOC算法可靠运行的基石,并提供了PCB布局布线的核心原则,帮助开发者构建高性能、高可靠性的电机驱动硬件平台。

weixin_29240711的博客 332

保姆级教程:用CH34xSerCfg工具修改USB转串口芯片的VID/PID,避免驱动冲突

本文详细介绍了如何使用CH34xSerCfg工具修改USB转串口芯片的VID/PID,解决驱动冲突问题。通过实战案例和配置技巧,帮助开发者高效管理嵌入式设备,避免常见的USB设备识别问题,提升开发效率。

weixin_30924239的博客 224

C语言从零到实战:系统学习指南与项目开发

编程语言是计算机科学的基础工具,其核心在于通过语法规则和数据结构实现对计算过程的精确控制。从底层原理来看,编程语言通过编译器或解释器将人类可读的代码转换为机器指令,这一过程深刻体现了计算机系统的工作机制。掌握一门贴近硬件的系统级语言,对于理解内存管理、程序执行效率和计算机体系结构具有不可替代的技术价值,这直接关系到高性能计算、操作系统开发、嵌入式系统等核心领域的工程实践。在众多应用场景中,C语言以其简洁的语法、高效的执行和直接的内存操作能力,成为学习计算机底层原理和培养严谨编程思维的首选。本文围绕C语言学习

405

Python计算时间差的方法

使用datetime模块是Python内置的方法,使用timedelta对象可以更精确地计算时间差,而使用dateutil库则提供了更为灵活和方便的操作方式。我们可以使用datetime模块中的datetime类来表示一个具体的日期和时间,并进行相应的运算。在Python中,我们经常需要计算日期和时间之间的差异,例如计算两个日期之间的天数、小时数、分钟数等。Python提供了多种方法来计算时间差,下面我们将介绍其中的几种常用方法,并附上相应的源代码。在上面的代码中,我们使用了dateutil库中的。

学习使你进步。 2086

CodeForces - 557C Arthur and Table 预处理 前缀

题目链接:点击查看 题意:有n个桌腿,要砍掉某些桌腿,使剩下的桌腿中长度最大的桌腿的数量如果超过一半。砍掉每个桌腿需要付出代价。求最小的代价和,操蛋,砍掉的意思是直接去掉,我理解成了,可以砍去一部分使其变短,并且长度最长的超过一半没注意到,改了半天被别人提醒才知道,渣渣啊 题解:因为价值最多才200,长度100000,我们可以枚举每个长度,首先长度超过的肯定要去掉,如果还需要去掉再从价值小的去...

还我笑颜 297

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Arthur and Table CodeForces - 557C

Arthur has bought a beautiful big table into his new flat. When he came home, Arthur noticed that the new table is unstable. In total the table Arthur bought has n legs, the length of the i-th leg is ...

why932346109的博客 310

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Codeforces 557C Arthur and Table 乱搞题

题意: 如果最长长度的凳脚数量超过总凳脚数的一半,则认为这个凳子是稳定的。 现在有张凳子,有n个凳脚,分别分出长度和砍掉该凳脚的费用。 问你要使得凳子稳定的最小费用。 思路: 其实是很简单的一题。要砍当然是砍费用小的,当时没想到怎么维护前面最小费用,然后就gg了。 首先根据长度排个序,然后枚举每种长度作为最长长度。枚举到当前长度时,相同长度不砍,把比当前长度大的全砍掉(这个比较

1224

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

557C Arthur and Table

题意:题目给出的桌子的n条长度不一的腿,以及打断每条腿所需的花费。要求在最小的花费下,使桌子达到平衡。平衡的条件是最大腿的个数要大于总的腿数的一半。 思路:这道题刚开始往dp上考虑,结果怎么搞,都找不出最有子结构,导致状态无法定义,最后放弃dp。想着试一试枚举平衡时最大腿的长度,然后各种数组记录。本来以为会TLE,最后过了46ms。具体实现见代码。 #include #include #inc

ZT在努力 544

【35.29%】【codeforces 557C】Arthur and Table

time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Arthur has bought a beautiful big table into his new flat. When he came home,...

AWCXV 115

codeforces 557c Arthur and Table

题目链接:http://codeforces.com/problemset/problem/557/C 题目大意:       给出一个桌子,有n个腿,每个腿的长度是l,拆掉这条腿的花费是d,当最长的腿占腿总数大于其他腿的总数,那么合法,问如何才能花费最小到达合法情况 题目分析:       想到枚举最后的最长的那条腿的方法,比这条腿长的腿一定是要拆掉的,所以可以预处理出比长度为i的腿拆掉

weishengmingerfendou的专栏 663

Codeforces 557C Arthur and Table 【树状数组 + 二分】

题目链接:Codeforces 557C Arthur and Table C. Arthur and Table time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Arthur has bought a beautiful b

世界很大 799

Arthur and Table CodeForces - 557C(权值线段树)

Arthur has bought a beautiful big table into his new flat. When he came home, Arthur noticed that the new table is unstable. In total the table Arthur bought has n legs, the length of the i-th leg is ...

starlet_kiss的博客 632

Problem - 557C - Codeforces - Arthur and Table

Arthur and TableArthur has bought a beautiful big table into his new flat. When he came home, Arthur noticed that the new table is unstable.In total the table Arthur bought has n legs, the length of th

xiyue_jiang的博客 444

CF 557C Arthur and Table(贪心)

刚读题想到用dp,思考一下发现dp并不是那么容易。然后脑补出来了贪心做法:枚举每一个长度 l 使得最终的稳定态是以 l 为最长腿,那么所有比 l 大的桌腿我们都要砍掉,然后所有 l 的都不砍,最后把比 l 小的若干个 d 比较小的砍掉之后使得 l 的个数大于其他桌腿的个数。 具体实现的时候,我们先把桌腿按照 l 升序排列,然后预处理出来cnt[i],first[i],两个个数组。其中cnt[i]

acraz的专栏 507

CodeForces 557C Arthur and Table

题目链接:http://http://codeforces.com/contest/557/problem/C 题意:一张桌子,最长的腿有一半以上就是稳定的,给出n条腿的长度以及卸掉那条退所需要的精力值,求最小需要多少精力使得桌子是稳定的。 解题思路:倒着来思考,先按照腿的长度从小到大排序,将长度相等的精力总和记录到数组sum[]里面去 举个例子,长度分别为1 1 2 2 3 3 3

小小西北风 1028

Arthur and Table 【CodeForces - 557C】【Splay】

题目链接 有一张桌子,有n个腿。第i根腿的长度是li。 现在要拿掉一些腿,使得桌子稳定,拿掉第i根腿需要di的能量。 稳定的条件是,假如拿掉若干条腿之后,桌子还有k个腿,那么长度最长的腿的数目要超过一半。比如桌子有5根腿,那么至少要有三根腿是最长的。另外,只有一根腿的桌子是稳定的,两个腿的桌子想要稳定,必需长度是一样的。 你的任务是拿掉若干腿,使得桌子稳定,并且所消耗的能量要最少。 ...

既然弱小,就只顾变强就是了 278
上一篇: Codeforces 558D - Guess Your Way Out! II (求区间交,并)
下一篇: Codeforces 557D - Vitaly and Cycle (DFS染色)
Baoli1008
博客等级 码龄12年 70粉丝 293原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值