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

题意:

给出n支花,每支花都有一个漂亮值。挑选最大和最小漂亮值得两支花,问他们的差值为多少,并且有多少种选法(无先后顺序)。

现场做时,想到的是:用multimap记录每个漂亮值出现的次数,并不断更新最大最小值。

这个方法很笨,而且multimap的val值是多余的。

需要注意特殊情况:max==min

代码如下:

#include<iostream>//A - Pashmak and Flowers CodeForces - 459B 
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<map> using namespace std;
typedef long long ll; multimap<int,int> m; int main()
{
    int n,max = -1,min = 2000000000,a;
    ll smax,smin;
    m.clear();
    scanf("%d",&n);
    for(int i = 0; i<n; i++)
    {
        scanf("%d",&a);
        m.insert(pair<int,int>(a,0));         if(a>max) max = a;
        if(a<min) min = a;
    }     smax = m.count(max);
    smin = m.count(min);     if(max==min)
        printf("0 %lld\n",smax*(smax-1)/2);
    else
        printf("%d %lld\n",max-min, smax*smin); }

后来朋友说排序。恍然大悟,排个序什么都好说了。

代码如下:

#include<iostream>//A - Pashmak and Flowers CodeForces - 459B  排序
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm> using namespace std;
typedef long long ll; ll v[200005]; int main()
{
ll n,max,min,a,j,smax,smin,i; scanf("%lld",&n);
for(i = 0; i<n; i++)
{
scanf("%lld",&v[i]);
}
sort(v,v+n); min = v[0];
smin = 1;
for(i = 1; i<n && v[i]==min; i++)
smin++; max = v[n-1];
smax = 1;
for(i = n-2; i>=0 && v[i]==max; i--)
smax++; if(max==min)
printf("0 %lld\n",smax*(smax-1)/2);
else
printf("%lld %lld\n",max-min, smax*smin);
}

最新文章

  1. 原生js封装二级城市下拉列表
  2. .net网站能走多远
  3. gulp详细入门教程(转载)
  4. Mac mysql修改密码
  5. lnmp memcache出问题
  6. 让ecshop用户登录评价以可择匿名评价
  7. UIKit-3347.44.2/UICollectionView.m:3443
  8. Flink资料(2)-- 数据流容错机制
  9. ForeignKey.on_delete
  10. swfupload多文件上传[附源码]
  11. (1)认识javascript
  12. Python学习笔记——import模块
  13. MongoDB Sharding分片 shell 脚本
  14. nginx简介与配置
  15. Linux网络底层收发探究【转】
  16. 浏览器开启桌面通知Web Notification
  17. 关于python的“重载”
  18. 序列化 json 模块
  19. mysql数据库1129错误
  20. VC++ 删除一个文件目录下的所有文件以及目录

热门文章

  1. 358. Rearrange String k Distance Apart
  2. javascript 对象初探 (四)--- 内建对象之旅之Boolean
  3. Java使用QRCode.jar生成与解析二维码
  4. fastscript增加三方控件之二
  5. android中如何发送一个广播
  6. android -- 存储byte
  7. [置顶] Android 应用内禁止截屏功能的实现
  8. scala使用FunSpec进行单元测试报错
  9. persits.jpeg 水印组件
  10. python(24)- 面向对象进阶