问题 G:[ECUST2018新生赛]花梨露营

题目描述

冬天到了,又到了出去玩的季节了(?@#$@!?)。小花梨和小信息一拍即合打算组织一场露营活动作为团日。
小信息一拍脑袋就上团少少买了一堆五花八门的燃料用于野炊。看着贴满‘爆’、‘辐射危害’、‘生物危害’的箱子,小花梨不禁感觉头皮发麻。
小花梨想选一种效果最好且不会招来消防大队的安全燃料。于是他向一位华东化工学院的前辈求助,前辈告诉他安全的燃料应该满足以下三点:
1、它至少含碳氢氧三种元素中的一或多种
2、它的分子中氢原子个数不会超过碳原子个数的两倍加二
3、它的分子中氢原子个数一定为偶数
(只要满足上述三点的燃料在本题中均认为安全燃料。)
“那我怎么分辨哪种燃料效率高呢?”——小花梨追问
“你知道热化学方程式么?比方说酒精燃烧,你可以简单理解为以下”
1C2H6O+3O2−→2CO2+3H2O+XkJ
“表示1mol(46g)酒精完全燃烧产生2mol二氧化碳和3mol水时会产生X千焦的热量。
而X的大小取决于在反应环境中,二氧化碳和水的生成热(kJ/mol)。
打个比方,如果二氧化碳的生成热是a,水的生成热是b,那么你可以认为1mol酒精完全燃烧释放的热量为(2a+3b)kJ,即(1mol)酒精的燃烧热为(2a+3b)kJ。”
“嗯嗯嗯(完全没懂)”——小花梨一脸懵逼
“如果只是去露营的话,选单位质量燃烧热最高的就行了。”——聊天结束
于是小花梨转向了聪明的你,你所需要做的,就是帮助小花梨在小信息买来的燃料中选取安全且单位质量燃烧热最高的一款。
(相对原子质量:C−12,O−16,H−1,题中燃料的燃烧热只和产物有关)

输入

第一行一个整数T,表示有T组数据,对于每组数据:
第一行三个整数n,a,b,表示小信息买的燃料总数和二氧化碳、水的生成热。
接下来n行,每行三个整数Xi,Yi,Zi,表示第i种燃料分子的化学式为CXiHYiOZi(即分子中碳、氢、氧原子个数)
(1≤T≤15,1≤n≤1000,0≤a,b≤100000,0≤Xi,Yi,Zi≤1000)

输出

对于每一组数据,输出"Case x: ans"(不含引号)
x表示第x组测试数据,从1开始编号,ans表示你所选择的燃料的化学式
每组数据保证有且仅有一组解。
化学式的输出规则如下:
1、按碳X氢Y氧Z的顺序输出,中间不要加空格
2、原子数只有1的时候不要输出原子数
3、没有出现的原子不要输出
正确输出样例:O2、CO2、CH4 错误输出样例:C1H4、H10C4、CH0

样例输入

3
2 393 242
1 4 1
2 6 1
5 1000 10
1 1 0
2 6 3
0 2 0
1 4 0
5 12 0
1 393 242
60 0 0

样例输出

Case 1: C2H6O
Case 2: C5H12
Case 3: C60

Code

//俺可是难得主动写函数啊,记录一下
#include <bits/stdc++.h>
using namespace std;

int ee[1010],X[1010],Y[1010],Z[1010];

int maxpos(){
    int pi=0,maxn=ee[0];
    for(int i=0;ee[i]!=-1;i++){
        if(ee[i]>maxn){
            pi=i;
            maxn=ee[i];
        }
    }
    return pi;
}

void print(int pi){
    if(X[pi]!=0){
        cout<<'C';
        if(X[pi]!=1) cout<<X[pi];
    }
    if(Y[pi]!=0){
        cout<<'H';
        if(Y[pi]!=1) cout<<Y[pi];
    }
    if(Z[pi]!=0){
        cout<<'O';
        if(Z[pi]!=1) cout<<Z[pi];
    }
    cout<<endl;
}

int main(){
    int t,num=1;
    cin>>t;
    while(t--){
        int n,a,b;
        cin>>n>>a>>b;
        memset(ee,-1,sizeof(ee));
        memset(X,-1,sizeof(X));
        memset(Y,-1,sizeof(Y));
        memset(Z,-1,sizeof(Z));
        int i=0;
        while(n--){
            int x,y,z;
            cin>>x>>y>>z;
            if(((x!=0)||(y!=0)||(z!=0))&&(y<=2*x+2)&&(y%2==0)){
                ee[i]=(x*a+y*b/2)/(12*x+y+16*z);
                X[i]=x;
                Y[i]=y;
                Z[i]=z;
                i++;
            }
            else continue;
        }
        cout<<"Case "<<num<<": ";
        print(maxpos());
        num++;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值