zoukankan      html  css  js  c++  java
  • codeforces A. Puzzles 解题报告

    题目链接:http://codeforces.com/problemset/problem/337/A

    题意:有n个学生,m块puzzles,选出n块puzzles,但是需要满足这n块puzzles里的最大pieces(A)和最小pieces(B)之差最少,即the least possible difference。

          这是一道贪心兼排序的题目,解决方法不难。首先对m块puzzles以非递减的顺序排序(可以保证每个n长度的区间difference最小),接着求出所有长度为n的区间中最大和最小的值之差,即代码中  a[i+n-1] - a[i]  ,最后选出最小的差就是题目的答案。

        

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <stdio.h>
     4 #include <string.h>
     5 using namespace std;
     6 
     7 const int maxn = 1000+5;
     8 int a[maxn];
     9 
    10 int main()
    11 {
    12     int i, n, m, min;
    13     while (cin >> n >> m)
    14     {
    15         for (i = 0; i < m; i++)
    16         {
    17             scanf("%d", &a[i]);
    18         }
    19         sort(a, a+m);      
    20     //  cout << endl;
    21     //  for (i = 0; i < m; i++)
    22     //      cout << a[i] << " ";
    23     //  cout << endl;
    24         min = maxn;
    25         for (i = 0; i+n-1 < m; i++)
    26         {
    27     //      cout << a[i+n-1] - a[i] << endl;
    28             if (min > a[i+n-1] - a[i])    // 求出所有n区间的最大值和最小值之差
    29                 min = a[i+n-1] - a[i];    // 并同时得出最终的最小值
    30         }
    31         printf("%d\n", min);
    32     }
    33     return 0;
    34 }

         

  • 相关阅读:
    Java 多线程概述
    Java 线程的创建和启动
    状态模式
    Spring 依赖注入
    Spring IOC
    在JavaEE中使用Mybatis框架
    Active Reports 补空白行
    SpreadForWin 清空Sheet
    日期格式转换
    Select Case 的实现
  • 原文地址:https://www.cnblogs.com/windysai/p/3264043.html
Copyright © 2011-2022 走看看