引入一个问题:

链接:https://ac.nowcoder.com/acm/contest/911/D来源:牛客网
有 n件商品,第 i件商品价格为 a[i],购买后,其它所有未购买的商品价格乘上 p[i],现在要买下所有商品,输出最小耗费。

题目分析:

判断2件商品商品先买哪一件,这两件商品买完后对剩余商品的折扣不便,所以这2商品的先后顺序不会对后面有所影响,

所以我们只需根据当前的汇率进行判断先买哪一个产品

当前汇率en

第1件产品的价格a1,折扣b1

第2件产品的价格a2,折扣b2

先买1,再买2,sum1=a1*en+a2*en*b1

先买2,再买1,sum2=a2*en+a1*en*b2

比较sum1和sum2,小的在前,所以假设sum1<sum2,

两边不等式化简为a1*(1-b2)<a2*(1-b1)    (式子1)

还可以化简为a1/(1-b1)<a2/(1-b2),           (式子2)

所以在用结构体进行比较时我们可以直接用式子1进行比较,也可以在写一个变量等于式子2,在进行比较

#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;struct mmp
{int a;double b;
};int cmp(const mmp &x,const mmp &y)
{return x.a*(1-y.b)<y.a*(1-x.b); //小于号表示升序
}
mmp p[maxn];int main()
{int n,i;double ans,en;scanf("%d",&n);for(i=0; i<n; ++i){scanf("%d%lf",&p[i].a,&p[i].b);}sort(p,p+n,cmp);for(i=0,en=1,ans=0; i<n; ++i){ans=en*p[i].a+ans;en=en*p[i].b;}printf("%.6lf\n",ans);return 0;
}
#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;struct mmp
{int a;double b;double c;bool operator<(const mmp &w) const{return c<w.c; //小于号表示升序}
};mmp p[maxn];int main()
{int n,i;double ans,en;scanf("%d",&n);for(i=0; i<n; ++i){scanf("%d%lf",&p[i].a,&p[i].b);p[i].c=1.0*p[i].a/(1-p[i].b);}sort(p,p+n);for(i=0,en=1,ans=0; i<n; ++i){ans=en*p[i].a+ans;en=en*p[i].b;}printf("%.6lf\n",ans);return 0;
}

关于结构体的sort函数的用法相关推荐

  1. C++ sort函数的用法

    C++ sort函数的用法 STL有个排序函数sort,可以直接对数组和向量排序. 一.功能:给定区间所有元素进行排序 二.头文件: #include <algorithm> 三.sort ...

  2. 结构体中定义函数指针

    结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...

  3. C语言中的指针应用,函数指针,指针函数,结构体中定义函数指针。

    指针函数 指针函数就是一个返回指针的函数,其本质是一个函数,该函数的返回值是一个指针. 声明一个指针函数 int* fun(int x,int y); 例子 typedef struct _Data{ ...

  4. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  5. c语言中结构体类型定义的函数指针,结构体中定义函数指针

    结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...

  6. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

  7. 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )

    文章目录 一.读取文件中的结构体数组 | feof 函数使用注意事项 二.代码示例 一.读取文件中的结构体数组 | feof 函数使用注意事项 读取文件结构体时 , 可以循环读取文件中的数据 , 只使 ...

  8. c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...

    C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...

  9. C++ sort()函数的用法

    C++sort()函数的用法 C++sort()函数的用法 近来看了c++标准库这本书,学到了很多,就把这其中的一点C++sort()函数的用法写下来和大家分享吧! (一)为什么要用c++标准库里的排 ...

最新文章

  1. HDU 4832 Chess 排列组合 DP
  2. win10计算机里文件夹怎么删除文件,如何删除win10“此电脑”中6个文件夹?
  3. FreeRTOS 事件标志组 ——提高篇
  4. 员工信息增删改查程序 (大神版)
  5. 2006年上海交通大学计算机研究生机试真题
  6. 第十三天-迭代器、三元表达、字典生成式、生成器、递归
  7. cmd背景换成老婆(冰冰)
  8. 【C++基础】异常匹配与内建异常类
  9. 贪心算法+回溯算法+动态规划
  10. mysql identity 获取_如何获取MySQL中Identity列的种子值?
  11. mysql注解实体类_jpa实体类生成mysql表及字段注解
  12. php自动打印小票_php操作 cookie
  13. 利用css做导航栏,利用CSS制作导航栏
  14. PSPnet网络结构搭建
  15. Java9中使用jpa,如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)...
  16. CSDN博客放阿里妈妈广告代码的方法
  17. 腾讯云 mysql 数据库名_腾讯云数据库MySQL如何选择配置
  18. 基于Java+Swing+Mysql项目信息管理系统
  19. 算法提高 盾神与积木游戏
  20. 基于django channel 实现websocket的聊天室

热门文章

  1. JavaScript学习笔记_5 Map
  2. 冷冻电镜(cryo-EM)三维图像重构软件Relion工作站配置推荐
  3. 话说“数字钥匙”(蓝牙钥匙)
  4. #软件技术 常用软件与资源网站
  5. 合宙 模块-重启问题
  6. 计算机计算潮流的方法,3.电潮流手工计算方法,计算机潮流算法.pdf
  7. Android自定义View——心电图,曲线图,波形图
  8. vue项目seo prerender-spa-plugin
  9. GMU(Global Mobile UI)是百度前端通用组开发的移动端组件库
  10. 基于算力网络的大数据计算资源智能调度分配方法