关于结构体的sort函数的用法
引入一个问题:
链接: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函数的用法相关推荐
- C++ sort函数的用法
C++ sort函数的用法 STL有个排序函数sort,可以直接对数组和向量排序. 一.功能:给定区间所有元素进行排序 二.头文件: #include <algorithm> 三.sort ...
- 结构体中定义函数指针
结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...
- C语言中的指针应用,函数指针,指针函数,结构体中定义函数指针。
指针函数 指针函数就是一个返回指针的函数,其本质是一个函数,该函数的返回值是一个指针. 声明一个指针函数 int* fun(int x,int y); 例子 typedef struct _Data{ ...
- C语言结构体中定义函数指针详解
C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...
- c语言中结构体类型定义的函数指针,结构体中定义函数指针
结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...
- 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )
文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...
- 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
文章目录 一.读取文件中的结构体数组 | feof 函数使用注意事项 二.代码示例 一.读取文件中的结构体数组 | feof 函数使用注意事项 读取文件结构体时 , 可以循环读取文件中的数据 , 只使 ...
- c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...
C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...
- C++ sort()函数的用法
C++sort()函数的用法 C++sort()函数的用法 近来看了c++标准库这本书,学到了很多,就把这其中的一点C++sort()函数的用法写下来和大家分享吧! (一)为什么要用c++标准库里的排 ...
最新文章
- HDU 4832 Chess 排列组合 DP
- win10计算机里文件夹怎么删除文件,如何删除win10“此电脑”中6个文件夹?
- FreeRTOS 事件标志组 ——提高篇
- 员工信息增删改查程序 (大神版)
- 2006年上海交通大学计算机研究生机试真题
- 第十三天-迭代器、三元表达、字典生成式、生成器、递归
- cmd背景换成老婆(冰冰)
- 【C++基础】异常匹配与内建异常类
- 贪心算法+回溯算法+动态规划
- mysql identity 获取_如何获取MySQL中Identity列的种子值?
- mysql注解实体类_jpa实体类生成mysql表及字段注解
- php自动打印小票_php操作 cookie
- 利用css做导航栏,利用CSS制作导航栏
- PSPnet网络结构搭建
- Java9中使用jpa,如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)...
- CSDN博客放阿里妈妈广告代码的方法
- 腾讯云 mysql 数据库名_腾讯云数据库MySQL如何选择配置
- 基于Java+Swing+Mysql项目信息管理系统
- 算法提高 盾神与积木游戏
- 基于django channel 实现websocket的聊天室
热门文章
- JavaScript学习笔记_5 Map
- 冷冻电镜(cryo-EM)三维图像重构软件Relion工作站配置推荐
- 话说“数字钥匙”(蓝牙钥匙)
- #软件技术 常用软件与资源网站
- 合宙 模块-重启问题
- 计算机计算潮流的方法,3.电潮流手工计算方法,计算机潮流算法.pdf
- Android自定义View——心电图,曲线图,波形图
- vue项目seo prerender-spa-plugin
- GMU(Global Mobile UI)是百度前端通用组开发的移动端组件库
- 基于算力网络的大数据计算资源智能调度分配方法