首页 > 其他分享 >建民打卡日记5.19

建民打卡日记5.19

时间:2023-05-19 12:13:39浏览次数:48  
标签:月饼 int double Moon 打卡 5.19 建民 万吨

一、问题描述

月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。

注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。

二、流程设计

1.分别求出每种月饼单价;

2.降序排列单价;

3.算总价;

三、代码实现

#include<iostream>
#include<algorithm>
using namespace std;
class Moon{
    public:
    double k;
    double p;
};
bool cmp(Moon m1,Moon m2){
    return m1.p>m2.p;
}
int main(){
    int n,d;
    cin>>n>>d;
    Moon *m= new Moon[n];
    for(int i=0;i<n;i++)
        cin>>m[i].k;
    for(int i=0;i<n;i++)
    {
        cin>>m[i].p;
        m[i].p/=m[i].k;
    }
    sort(m,m+n,cmp);
    double sum=0;
    for(int i=0;i<n;i++){
        if(d-m[i].k<=0){
            sum+=m[i].p*d;
            break;
        }
        d=d-m[i].k;
        sum+=m[i].p*m[i].k;
    }
    printf("%.2lf",sum);
}

 

标签:月饼,int,double,Moon,打卡,5.19,建民,万吨
From: https://www.cnblogs.com/cor0000/p/17414762.html

相关文章

  • 每日打卡,用到了set
    如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如123和51就是朋友数,因为1+2+3=5+1=6,而6就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。输入格式:输入第一行给出正整数N。随后一......
  • 每天打卡一小时 第三十天 贪心算法
     #include<bits/stdc++.h>usingnamespacestd;intfindContentChildren(vector<int>&children,vector<int>&cookies);intmain(){intn;cin>>n;vector<int>children(n);for(inti=0;i<n;i++)......
  • 编程打卡:面向对象程序设计测试
    #include<iostream>#include<iomanip>#include<string>#include<bitset>usingnamespacestd;intmain(){intx;cin>>oct>>x;cout<<dec<<x<<endl;cout<<setw(20)&l......
  • 打卡
    1.问题:输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为153=1³+5³+3³。2.思路:水仙花数的解题思路是把给出的某个三位数的个位、十位、百位分别拆分,并求其立方和。3.程序流程图: 4.代码实现:#include<ios......
  • 5.18打卡
    一、实验内容定义一个Dog类,包括体重和年龄两个数据成员及其成员函数,声明一个实例dog1,体重5,年龄10,使用I/O流把dog1的状态写入磁盘文件。再声明一个实例dog2,通过读取文件dog1的状态赋给dog2。分别用文本方式和二进制方式操作文件。二、实验代码#include<bits/stdc++.h>usingna......
  • 5-18打卡
    递归写爬楼梯#include<stdio.h>//定义一个函数,用来打印每次爬的台阶数voidprint_steps(intsteps[],intn){printf("一种可能的方法是:");for(inti=0;i<n;i++){printf("%d",steps[i]);}printf("\n");}//定义一个递......
  • 每日打卡
    把真分数分解为埃及分数问题描述:古埃及人用的分数都是分子为一的分数,将真分数拆分成埃及分数问题分析:1如果分子为1直接输出2.分母是分子的倍数,化简后输出3.如果不能消去的话可以分出一个a/b+1和c出来代码:#include<stdio.h>intmain(){ longinta,b,c; printf("请输入a......
  • c++打卡练习(33)
    求一个真分数的埃及分数表示埃及分数是指只使用1作为分子的分数,例如8/11=1/2+1/5+1/55+1/110;流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta,b,c,i,j; cout<<"请输入一个真分数"<<endl; cin>>a; getchar(); cin>>b; if(a>b){ cout<<......
  • 第二十三天打卡
    一、问题描述C语言实现两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。二、设计思路1、a和b都是3000以内2、穷举a在3000以内(或穷举b在3000以内)3、通过......
  • 打卡 c语言趣味编程 求最小公倍数
    问题描述:求任意两个正整数的最小公倍数(LCM)。思路:输入两个正整数,假设为num1和num2。定义一个变量lcm并初始化为较大的那个数(即lcm=max(num1,num2))。进入一个循环,循环条件为lcm不能同时被num1和num2整除。在每次循环中,将lcm增加1。循环结束后,lcm的值就是最小......