基于C语言中的sort如此这么方便,自然而然,java中也有类似C的sort函数。

1.普通数组:Arrays.sort(数组名,开始位置,结束位置)。

2.类中属性排序:

模板:

class A

{

  int n;

}

class cmp implement Comparator<A>

{

  降序:

  public int compare(A a,A b)

  {

    if(a.n < b.n)

    {

      return 1;

    }

    else if(a.n == b.n)

      return 0;

    else

      return -1;

  }

}

public class B

{

。。。。。。。

。。。。。。。

  A[] = new A[[10];

......................

  Arrays.sort(A,0,10,new cmp());

}

基本就是这样了

下面来看一道题目:

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)

题目描述

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

求量,请你计算可以获得的最大收益是多少。

注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、

72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第2种月饼、以及5万吨第3种月饼,获得

 72 + 45/2 = 94.5(亿元)。

输入描述:

每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N表示月饼的种类数、以及不超过500(以万吨为单位)的正整数

D表示市场最大需求量。随后一行给出N个正数表示每种月饼的库存量(以万吨为单位);最后一行给出N个正数表示每种月饼的总售价(以亿

元为单位)。数字间以空格分隔。

输出描述:

对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后2位。

输入例子:

3 20

18 15 10

75 72 45

输出例子:

94.50

代码实现如下:
package package1111; import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner; class MoonCake
{
    int    quantity;
    int money;
    double unitprice;
}
class cmp implements Comparator<MoonCake>
{
    public int compare(MoonCake A , MoonCake B)
    {
        if(A.unitprice < B.unitprice)
        {
            return 1;
        }
        else if(A.unitprice == B.unitprice)
        {
            return 0;
        }
        else
        {
            return -1;
        }
    }
}
public class Main
{
    public static MoonCake num[] = new MoonCake[1005];
    public static void main(String []args)
    {
        Scanner cin = new Scanner(System.in);
        int N,D;
        N = cin.nextInt();
        D = cin.nextInt();
        for(int i = 0 ; i < N ; i++)
        {
            num[i] = new MoonCake();
            num[i].quantity = cin.nextInt();
        }
        for(int i = 0 ; i < N ; i++)
        {
            num[i].money = cin.nextInt();
            num[i].unitprice = num[i].money*1.0/num[i].quantity;
        }
        Arrays.sort(num,0,N,new cmp());
        double sum = 0;
        for(int i = 0 ; i < N ; i++)
        {
            if(num[i].quantity < D)
            {
                sum += num[i].money;
                D = D - num[i].quantity;
                continue;
            }
            else if(num[i].quantity == D)
            {
                sum += num[i].money;
            }
            else
            {
                sum += D*num[i].unitprice;
            }
            break;
        }
        String output = String.format("%.2f", sum);
        System.out.print(output);
    }
}

最新文章

  1. 【bzoj1010】 HNOI2008—玩具装箱toy
  2. STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和串口只发送数据不能接收数据问题
  3. CSS3背景温故
  4. ios蓝牙开发(四)app作为外设被连接的实现-转发
  5. 【日期-时间】Java中Calendar的使用
  6. C#之猴子吃桃儿问题的解法——猴子吐桃儿
  7. Oracle性能调优
  8. 【NOI模拟赛(湖南)】DeepDarkFantasy
  9. js记录用户在网站的浏览记录和停留时间
  10. 链接与ELF文件格式的复习
  11. win8连接蓝牙听歌
  12. stagefright框架(四)-Video Buffer传输流程
  13. w3chtml页面和css书写规范
  14. django celery的分布式异步之路(一) 起步
  15. A Walk Through the Forest
  16. 织梦DedeCMS v5.7 实现导航条下拉菜单
  17. 终止Docker容器
  18. 3.7 unittest之断言
  19. 【java】内部类
  20. 130、 Android OkHttp完全解析(转载)

热门文章

  1. sftp服务器的安装与远程
  2. topcoder srm 545 div1
  3. Python3基础 list insert 在指定位置挤入一个元素
  4. minicom支持向串口自动发送命令的功能
  5. div包裹页面后多余部分没有显示,也没滚动条 overflow 属性设置
  6. 使用JAX-WS开发WebService
  7. P3521 [POI2011]ROT-Tree Rotations
  8. P3317 [SDOI2014]重建
  9. BZOJ 4771 七彩树(可持久化线段树合并)
  10. SAP月结操作讲解