zoukankan      html  css  js  c++  java
  • B. Pashmak and Flowers

    题目链接:http://codeforces.com/problemset/problem/459/B

    这道题是个水题,但是如果你想要暴力去做的话是不能过的。

    思路:

    首先我们对数组进行排序,找到最大值和最小值。然后统计最大值和最小值出现的次数,然后相乘就可以了。

    但是!

    如果最大值和最小值相等呢?也就是说这个数组的所以元素都是一样的,那么是不符合上述公式的。

    所以我们需要特判一下。如果都相等的时候,任意取两个都符合条件,n*(n-1)/2

    因为出现了相乘,所以我们还得考虑类型的转化。 int-> long long 

    所以这道题的坑点还是挺多的。

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <stdlib.h>
     4 #include <string>
     5 #include <string.h>
     6 #include <set>
     7 #include <queue>
     8 #include <stdbool.h>
     9 #include <map>
    10 
    11 using namespace std;
    12 const int MAXN=200005;
    13 
    14 int n;
    15 int a[MAXN];
    16 int vis[MAXN];
    17 
    18 int main()
    19 {
    20 #ifndef ONLINE_JUDGE
    21     freopen("../in.txt","r",stdin);
    22 #endif
    23     scanf("%d",&n);
    24     for (int i=0;i<n;i++){
    25         cin >> a[i];
    26     }
    27     sort(a,a+n);
    28     long long int  cnt = 0;
    29     int max_count = a[n-1] - a[0];
    30     int mx = a[n-1];
    31     int mm = a[0];
    32     int m1 = 0;
    33     int m2 = 0;
    34     for (int i=0;i<n;i++)
    35     {
    36         if (a[i] == mx)
    37             m1++;
    38         if (a[i] == mm)
    39             m2++;
    40     }
    41     cnt = (long long)m1*m2;
    42     if (mx == mm)
    43         cnt = (long long)(n-1)*n/2;
    44     cout << max_count << " " << cnt << endl;
    45     return 0;
    46 }
  • 相关阅读:
    双击返回 退出程序
    读取InputStream 中的内容
    wsgi服务器
    python 中的GIL
    json
    __getattr__
    错误类型
    __slot__用法
    获取属性以及基本方法
    linux IO
  • 原文地址:https://www.cnblogs.com/-Ackerman/p/11215697.html
Copyright © 2011-2022 走看看