问题 N: 小球(点击)

时间限制: 1 Sec  内存限制: 128 MB

                                                                          提交: 462  解决: 172

                                                              [提交] [状态] [讨论版] [命题人:admin]

题目描述

有R个红色盒子和B个蓝色盒子,还有R个红色小球和B个蓝色小球。每个盒子只能装一个小球,每个小球都要放在一个盒子里。如果把一个红色小球放在一个红色盒子里,那么得分是C。如果把一个蓝色小球放在一个蓝色盒子里,那么得分是D。如果把一个红色小球放在一个蓝色盒子里,那么得分是E。如果把一个蓝色小球放在一个红色盒子里,那么得分也是E。现在给出R,B,C,D,E。应该如何放置这些小球进盒子,才能使得总得分最大?输出最大的总得分。

输入

一行,5个整数,分别是R,B,C,D,E。(1 ≤ R ≤ 100,1 ≤ B ≤ 100,  -1000 ≤ C,D,E ≤ 1000)

输出

一个整数,最大总得分。

样例输入

复制样例数据

2  3  100  400  200

样例输出

1400

提示

#include<stdio.h>
int main()
{
long long int sum[100006],n,m,c,d,e,k,i,j,temp;
scanf("%lld%lld%lld%lld%lld",&n,&m,&c,&d,&e);
k=0;
if(n>=m){ //先判断n和m的个数关系 因为如果不相同肯定不是交换m+n次
for(i=0;i<=m;i++){
sum[k++]=2*i*e+(n-i)*c+(m-i)*d; //i表示从n和m中各自拿出的个数 由此可以计算总分数
}
}
else{
for(i=0;i<=n;i++){
sum[k++]=2*i*e+(n-i)*c+(m-i)*d;
}
}
for(i=0;i<k-1;i++){
for(j=0;j<k-i-1;j++){ //由于没改头文件 所以就先没用sort排序
if(sum[j]<sum[j+1]){
temp=sum[j];
sum[j]=sum[j+1];
sum[j+1]=temp;
}
}
}
printf("%lld\n",sum[0]); //输出最大的积分
return 0;
}

虽然题目简单 但由于没搞清楚字母i的含义导致多次错误。

    scanf("%lld%lld%lld%lld%lld",&n,&m,&c,&d,&e);
k=0;
if(n>=m){
for(i=0;i<=m;i+=2){
sum[k++]=i*e+(n-(i/2))*c+(m-(i/2))*d; //其实i并不是只可以取0 2 4 等偶数 因为由于i
表示的含义是从m和n中各取小球的数目 所以i可
以取任意小于n或m的值。(错误点)
}
}
else{
for(i=0;i<=n;i+=2){
sum[k++]=i*e+(n-(i/2))*c+(m-(i/2))*d;
}
}

总结 sort 和 cmp函数

1.对整形数值的使用:

int   cmp(int x,int y)

{

return x>y;    // 从大到小     return x<y;  // 从 小到大

}

这里面和在冒泡排序中对x和y的判断相反    因为这是返回时候的大小关系

而冒泡是对返回之前的大小关系的判断 然后做出排序

* 同样适用于 lang lang int 但注意一定要将cmp函数中所有的int换掉 不然提交后会报错(报错今天遇到最多的就是忘记加& 确实     不应该)。

2.对浮点型的数值的使用:

double cmp(double x,double y)

{

return x>y;    // 从大到小     return x<y;  // 从 小到大

}

3.达到像冒泡中对二维数组a[i][0]的排序 :(使用结构体)

普通冒泡排序:

     for(i=0;i<k-1;i++){
for(j=0;j<k-i-1;j++){
if(sum[j][0]<sum[j+1][0]){
temp=sum[j][0];
sum[j][0]=sum[j+1][0];
sum[j+1][0]=temp; temp=sum[j][1];
sum[j][1]=sum[j+1][1];
sum[j+1][1]=temp;
}
}
}

使用结构体排序: (c++头文件)

struct node{
int x,y; //定义结构体
}a[10006]; int cmp(node a,node b)
{
return a.x<b.x; //按照x 即a[0][0]和a[1][0]的大小关系排序 若为y则按照a[0][1]和a[1][1]
} for(i=0;i<n;i++){
scanf("%d%d",&a[i].x,&a[i].y); //结构体的输入
} //使用sort sort(a,a+n,cmp); //从0开始的n个值的排序 sort(a,a+n+1,cmp); //从1开始的n个值的排序

小球(总结sort和cmp函数、结构体排序)的更多相关文章

  1. <algorithm>里的sort函数对结构体排序

    题目描述 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请根据记录找出当天开门和关门的人. 输入描述: 每天的记录在第一行给出记录的条目数M (M &g ...

  2. 网上关于sort结构体排序都不完整,我来写一个完整版的 2014-08-09 16:50 60人阅读 评论(0) 收藏

    主要参考sort函数_百度文库, 但是那篇有错误 2.结构体排序,a升,b降,c降 平板视图 打印? 01 #include <iostream> 02 #include <algo ...

  3. qsort 与sort 对结构体排序实例

    qsort 与sort 对结构体排序实例 #include<bits/stdc++.h> using namespace std; typedef struct { string book ...

  4. 转载 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    转载自:http://www.cnblogs.com/cj695/p/3863142.html sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在 ...

  5. 【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  6. 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  7. 【C++】从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  8. sort的cmp函数

    sort的cmp函数只能写return a>b;或者return a<b;

  9. go语言的排序、结构体排序

    原文:https://studygolang.com/articles/1598 晚上准备动手写点 go 的程序的时候,想起 go 如何排序的问题.排序 sort 是个基本的操作,当然搜索 searc ...

随机推荐

  1. 坑爹的cmd(整人专用)

    今天我特地上网搜集了六条条最危险的cmd命令,注意! 如果你对其他人使用了这些cmd,本人概不负责. 1.蓝屏死机 @echo off del %systemdrive%\*.*/f/s/q shut ...

  2. ftp服务器搭建(一)

    先安装vsftpd 发现安装yum不行 root命令下也不行 那么可以去 /var/lib/dpkg 把lock文件rm掉 然后在yum install vsftpd 发现可以了 注意:如果发现yum ...

  3. 已解决[Authentication failed for token submission,Illegal hexadecimal charcter s at index 1]

    在初次学习使用shiro框架的时候碰到了这个问题,具体报错情况如下: [org.apache.shiro.authc.AbstractAuthenticator] - Authentication f ...

  4. vue生命周期函数2

    转载:http://blog.csdn.net/qq_15766181/article/details/73549933 钩子就好像是把人的出生到死亡分成一个个阶段,你肯定是在出生阶段起名字,而不会在 ...

  5. C#中的List基础用法汇总

    List类是ArrayList类的泛型等效类,该类使用大小可按需动态增加的数组实现IList泛型接口. 泛型的好处:它为使用c#语言编写面向对象程序增加了极大的效力和灵活性.不会强行对值类型进行装箱和 ...

  6. CF1353E K-periodic Garland(贪心/dp)

    Question 有n盏灯,0代表暗,1代表亮,相邻两个1之间为周期k,求出最少的改变次数 Solution First 贪心方法 详见博客https://blog.csdn.net/cheng__y ...

  7. Thunar左侧边栏不完全显示PLACES的解决

    场景 我的笔记本装上系统时用的英文,安装中文之后,发现文件管理器的默认的几个文件夹 Desktop.Music.Videos.Downloads等都变成了中文,由于是新安装的系统,就重新生成 loca ...

  8. lunix如何查看防火墙是否关闭和关闭开启防火墙命令

    查看防火墙是否关闭的命令如下: 1.通过 /etc/init.d/iptables status 或者 service iptables status命令 2.通过 iptables -L命令 查看 ...

  9. 离散数学 II(最全面的知识点汇总)

    离散数学 II(知识点汇总) 目录 离散数学 II(知识点汇总) 代数系统 代数系统定义 例子 二元运算定义 运算及其性质 二元运算的性质 封闭性 可交换性 可结合性 可分配性 吸收律 等幂性 消去律 ...

  10. HTML转义字符&url编码表

    ISO Latin-1字符集:  — 制表符Horizontal tab  — 换行Line feed  — 回车Carriage Return  — Space ! ! — 惊叹号Exclamati ...