八目鳗(双变量贪心)
时间限制: 1 Sec 内存限制: 128 MB
[提交] [状态]
题目描述
米斯蒂娅去捕捉八目鳗为开店作准备。现在,她在一个有八目鳗的池塘边。她知道池塘里的有n条八目鳗,把第i条八目鳗从池塘弄回小店需要ti∗2个单位的时间(毕竟需要往返)。
这些八目鳗会自己吃P点!随着时间的推移,米斯琪把它们弄回来所消耗的体力与时间成正比,即在第t个时刻开始运第i条八目鳗所消耗的体力为t∗ci,其中,ci是给定的常数。一开始所有的八目鳗都没有P点,也就是说运送第一条八目鳗所消耗的体力为0。
米斯琪想知道把所有八目鳗运回小店所消耗的体力最少是多少。
输入
第一行输入一个整数n,表示八目鳗的数量。
接下来n行,每行包含两个整数ti,ci。
输出
一个整数,表示最少消耗的体力。
样例输入 Copy
6
3 1
2 5
2 3
3 2
4 1
1 6
样例输出 Copy
86
提示
对于10%的数据,n≤10,t≤100,ci≤10;
对于60%的数据,n≤1000,t≤20000,ci≤100;
对于100%的数据,n≤100000,t≤2000000,ci≤100。
考查贪心。由于后面会用到前面的t,因此首先想到t越小的越往前排。但是最后的结果受两个变量影响,这种单变量的贪心准则就不再适用。
考虑从左到右相邻的两个八目鳗x,y,显然x对应的t等于其左侧的t之和*2,记为S(x-1)
。设x对应的t,c分别为tx,cx
,y对应的t,c分别为ty,cy
,则交换前代价为2*S(x-1)*cx+2*(S(x-1)+tx)*cy=2*S(x-1)*cx+2*S(x-1)*cy+2*tx*cy
,交换后的代价为2*S(x-1)*cy+2*(S(x-1)+ty)*cx=2*S(x-1)*cy+2*S(x-1)*cx+2*ty*cx
,比较两式可知只有tx*cy
与ty*cx
不同,当tx*cy<=ty*cx
时交换前更优,当tx*cy>ty*cx
时交换后更优,即对整个序列按tx*cy<=ty*cx
升序排列。
#include<stdio.h>
#include<stdlib.h>
typedef struct obj
{int t,c;
}o;
o w[100005];
int cmp(const void*a,const void*b)
{o*x=(o*)a;o*y=(o*)b;return x->t*y->c-x->c*y->t;//升序排列
}
int main()
{int n,i;long long int ans=0,temp=0;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d %d",&w[i].t,&w[i].c);}qsort(w+1,n,sizeof(w[1]),cmp);temp=w[1].t;for(i=2;i<=n;i++){ans+=2*temp*(long long int)w[i].c;//temp记录的是前i-1个的t之和temp+=w[i].t;}printf("%lld",ans);return 0;
}
/**************************************************************Language: C++Result: 正确Time:43 msMemory:2684 kb
****************************************************************/
八目鳗(双变量贪心)相关推荐
- seaborn可视化绘制双变量分组条形图(Annotating Grouped Barplot: Side-by-side)、添加数值标签进行标记
seaborn可视化绘制双变量分组条形图(Annotating Grouped Barplot: Side-by-side).添加数值标签进行标记 目录
- seaborn可视化绘制双变量分组条形图(Customizing Annotation of Bars: Side-by-side)、添加数值标签进行标记、并自定义条形图数值标签的格式
seaborn可视化绘制双变量分组条形图(Customizing Annotation of Bars: Side-by-side).添加数值标签进行标记.并自定义条形图数值标签的格式(从45000到 ...
- seaborn系列 (15) | 双变量关系图jointplot()
目录 双变量关系图 函数原型 参数解读 案例教程 案例地址 双变量关系图 在默认情况下双变量关系图是散点图与直方图组合的联合直方图,可以通过设置kind来改变联合直方图. 函数原型 seaborn.j ...
- python绘制双Y轴折线图以及单Y轴双变量柱状图
近来实验室的师姐要发论文,由于论文交稿时间临近,有一些杂活儿需要处理,作为实验室资历最浅的一批,我这个实习生也就责无旁贷地帮忙当个下手.今天师姐派了一个小活,具体要求是: 给一些训练模型的迭代次数,训 ...
- varclus变量聚类对变量有啥要求_互助问答第208期:递归的双变量probit模型问题...
递归的双变量probit模型的stata命令是什么?比如二元被解释变量为y1,内生的二元变量为t1,x1和x2是其他外生协变量,iv1为内生二元解释变量的工具变量,那么,递归双变量probit模型是否 ...
- seaborn单变量/双变量/多变量绘图
sns.regplot(x="属性1",y="属性2",data = dataframe) 首先导入库: import numpy as np import m ...
- 技巧 | 如何使用R语言的常用工具包绘制双变量填充地图
之前本号转载了DataCharm公众号的一篇推送: 转载 | 双变量映射地图可视化绘制方法 这篇推送使用了biscale工具包绘制了双变量填充地图.近来,小编发现使用常用的绘图工具包也能很便捷的绘制这 ...
- 为什么机器人运动学逆解最好采用双变量反正切函数atan2而不用反正/余弦函数?
文章目录 一.采用atan2(y,x)atan2(y,x)atan2(y,x)的三点优势 二.采用atan2(y,x)atan2(y,x)atan2(y,x)的两个坑 三.参考文献/资料 一.采用at ...
- 高考导数大题中的双变量不等式问题的求解思路
关于高考函数双变量问题处理方法:交叉放缩 By\mathtt{By}By transfornet_2005\space{}\mathfrak {transfornet\_2005} transforn ...
最新文章
- Java面试题中高级,神策数据Java面试题
- VLC-DSS搭建直播系统中链路断开影响测试
- 王勇详谈 Linux Deepin 背后的故事
- Linux查看:crontab开启状态
- java中thread实例_Java多线程并发执行demo代码实例
- 工业机器人维保调查表_《工业机器人系统集成及维护》课程建设调研报告
- 全方位解析阿里云核心技术竞争力,CSDN 独家在线峰会来了!
- 求单链表的最大值与原地逆转_数据结构:单链表中求最大值的算法。
- dsp31段最佳调音图_车载dsp功放调音小经验分享!dsp调音31段EQ调音图与皇帝位时间延迟调整...
- 【财经期刊FM-Radio|2020年11月16日】
- PS快捷键大全 打开置入 图层操作的快捷键 新建图层 填充上色 前景色背景色等的快捷键
- 题6.12:有一行电文,已按照下面规律翻译成密码: A->Z a->z B->Y b->y C->X c->x即第1个字母编程第26个字母,第i个字母编程第(26-i+1)个字母,非字母字符不变,要求
- 通过bat来实现 以Notepad++打开某个指定文件
- 【历史上的今天】12 月 21 日:Ruby 语言问世;玛雅预言世界末日;计算机先驱诞生日
- SparkRDD算子(三)键值对聚合操作(reduceByKey,foldByKey,sortByKey, join)
- 电话键盘 电脑键盘与标点符号英文读法
- 程序媛 :逛 GitHub 开源项目吗? 很沙雕的那种!
- Origin坐标轴上的连字符修改为负号
- Java如何创建支付接口
- 姨搜侯松:信贷场景全流程数据风控体系
热门文章
- KWS Water System Standard Rendering 教程
- 阿里旗下蚂蚁金服副总:有望3-5年内消灭伪基站
- Oracle EBS R12经验谈(二)
- 带上这款“移动小空调”,哪里都是乘凉地!安静舒适健康,不用插电就能持久使用!...
- Android之ViewModel的使用
- ViewModel源码分析
- 4.1 独立键盘检测
- python实现回响_Python的变化音调的WAV文件
- 多域间访问:创建子域及树域并搭建信任关系并实现林中跨域访问
- “玲珑杯”ACM比赛 Round #21-C-战舰萝莉(线段树区间更新)