时间限制: 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*cyty*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
****************************************************************/

八目鳗(双变量贪心)相关推荐

  1. seaborn可视化绘制双变量分组条形图(Annotating Grouped Barplot: Side-by-side)、添加数值标签进行标记

    seaborn可视化绘制双变量分组条形图(Annotating Grouped Barplot: Side-by-side).添加数值标签进行标记 目录

  2. seaborn可视化绘制双变量分组条形图(Customizing Annotation of Bars: Side-by-side)、添加数值标签进行标记、并自定义条形图数值标签的格式

    seaborn可视化绘制双变量分组条形图(Customizing Annotation of Bars: Side-by-side).添加数值标签进行标记.并自定义条形图数值标签的格式(从45000到 ...

  3. seaborn系列 (15) | 双变量关系图jointplot()

    目录 双变量关系图 函数原型 参数解读 案例教程 案例地址 双变量关系图 在默认情况下双变量关系图是散点图与直方图组合的联合直方图,可以通过设置kind来改变联合直方图. 函数原型 seaborn.j ...

  4. python绘制双Y轴折线图以及单Y轴双变量柱状图

    近来实验室的师姐要发论文,由于论文交稿时间临近,有一些杂活儿需要处理,作为实验室资历最浅的一批,我这个实习生也就责无旁贷地帮忙当个下手.今天师姐派了一个小活,具体要求是: 给一些训练模型的迭代次数,训 ...

  5. varclus变量聚类对变量有啥要求_互助问答第208期:递归的双变量probit模型问题...

    递归的双变量probit模型的stata命令是什么?比如二元被解释变量为y1,内生的二元变量为t1,x1和x2是其他外生协变量,iv1为内生二元解释变量的工具变量,那么,递归双变量probit模型是否 ...

  6. seaborn单变量/双变量/多变量绘图

    sns.regplot(x="属性1",y="属性2",data = dataframe) 首先导入库: import numpy as np import m ...

  7. 技巧 | 如何使用R语言的常用工具包绘制双变量填充地图

    之前本号转载了DataCharm公众号的一篇推送: 转载 | 双变量映射地图可视化绘制方法 这篇推送使用了biscale工具包绘制了双变量填充地图.近来,小编发现使用常用的绘图工具包也能很便捷的绘制这 ...

  8. 为什么机器人运动学逆解最好采用双变量反正切函数atan2而不用反正/余弦函数?

    文章目录 一.采用atan2(y,x)atan2(y,x)atan2(y,x)的三点优势 二.采用atan2(y,x)atan2(y,x)atan2(y,x)的两个坑 三.参考文献/资料 一.采用at ...

  9. 高考导数大题中的双变量不等式问题的求解思路

    关于高考函数双变量问题处理方法:交叉放缩 By\mathtt{By}By transfornet_2005\space{}\mathfrak {transfornet\_2005} transforn ...

最新文章

  1. Java面试题中高级,神策数据Java面试题
  2. VLC-DSS搭建直播系统中链路断开影响测试
  3. 王勇详谈 Linux Deepin 背后的故事
  4. Linux查看:crontab开启状态
  5. java中thread实例_Java多线程并发执行demo代码实例
  6. 工业机器人维保调查表_《工业机器人系统集成及维护》课程建设调研报告
  7. 全方位解析阿里云核心技术竞争力,CSDN 独家在线峰会来了!
  8. 求单链表的最大值与原地逆转_数据结构:单链表中求最大值的算法。
  9. dsp31段最佳调音图_车载dsp功放调音小经验分享!dsp调音31段EQ调音图与皇帝位时间延迟调整...
  10. 【财经期刊FM-Radio|2020年11月16日】
  11. PS快捷键大全 打开置入 图层操作的快捷键 新建图层 填充上色 前景色背景色等的快捷键
  12. 题6.12:有一行电文,已按照下面规律翻译成密码: A->Z a->z B->Y b->y C->X c->x即第1个字母编程第26个字母,第i个字母编程第(26-i+1)个字母,非字母字符不变,要求
  13. 通过bat来实现 以Notepad++打开某个指定文件
  14. 【历史上的今天】12 月 21 日:Ruby 语言问世;玛雅预言世界末日;计算机先驱诞生日
  15. SparkRDD算子(三)键值对聚合操作(reduceByKey,foldByKey,sortByKey, join)
  16. 电话键盘 电脑键盘与标点符号英文读法
  17. 程序媛 :逛 GitHub 开源项目吗? 很沙雕的那种!
  18. Origin坐标轴上的连字符修改为负号
  19. Java如何创建支付接口
  20. 姨搜侯松:信贷场景全流程数据风控体系

热门文章

  1. KWS Water System Standard Rendering 教程
  2. 阿里旗下蚂蚁金服副总:有望3-5年内消灭伪基站
  3. Oracle EBS R12经验谈(二)
  4. 带上这款“移动小空调”,哪里都是乘凉地!安静舒适健康,不用插电就能持久使用!...
  5. Android之ViewModel的使用
  6. ViewModel源码分析
  7. 4.1 独立键盘检测
  8. python实现回响_Python的变化音调的WAV文件
  9. 多域间访问:创建子域及树域并搭建信任关系并实现林中跨域访问
  10. “玲珑杯”ACM比赛 Round #21-C-战舰萝莉(线段树区间更新)