题目:
Fred likes to wear mismatched socks. This sometimes means he has to plan ahead.
Suppose his sock drawer has 1 red, 1 blue, and 2 green socks. If he wears the red with the blue, he is stuck with matching green socks the next day. Given the contents of his sock drawer, how many pairs of mismatched socks can he put together?
Input
The first line of input contains a single integer n (1 ≤ n ≤ 1,000), the number of different colors of socks in Fred’s drawer. The ith of the next n lines contains a single integer ki (1 ≤ ki ≤ 109), the number of socks of the ith color.
Output
Print, on a single line, the maximum number of mismatched pairs of socks that Fred can make with the contents of his sock drawer.

样例输入 样例输出
3 1 2 1 2
5 1 2 1 10 3 7

题意: 给你n种个数为ai袜子的袜子,求最多能有多少对袜子颜色不相同.

思路: 贪心题,我们可以先优先着手最大的袜子数,如果最大的袜子数>=其他袜子的数之和,那么显然此时的结果一定为其他袜子的数之和。反之如果最大的袜子数<其他袜子的数之和,则说明每个袜子的个数都是小于sum/2的,从结果最大的方向考虑,我们肯定想要的结果应该尽可能更大。
那么,大到什么程度呢?
答案显然是sum/2,因为我们最多只有sum支袜子.而我们上面讨论的那种情况已经限制所有袜子的个数是小于sum/2的,那我们不妨把每个袜子依次排序,种类相同的放一起,我们每次取当前袜子和该位置往后移动sum/2位置的袜子,这样不仅可以保证袜子的种类不相同(因为每种袜子数量都小于sum/2),同时也能让结果往sum/2方向趋近。
如果读者了解了上面的意思的话,就会发现,结果一定是sum/2

上述sum均是偶数条件下,但sum为奇数时同样适用.

AC代码:

#include <iostream>
using namespace std;
long long n;
long long a;
int main() {cin>>n;long long sum=0,maxs = 0;for(int i=0;i<n;i++) {cin>>a;sum+=a;maxs = max(a,maxs);}if(sum<=maxs*2) cout<<min(sum-maxs,maxs)<<endl;else {cout<<sum/2<<endl;}return 0;
}

这题是看大佬的题解思路AC的,觉得很厉害就想自己写写.

Gym - 101291I Mismatched Socks(贪心)相关推荐

  1. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  2. 【思维题】Mismatched Socks

    [题目] [题意]一堆袜子,每种颜色的袜子有若干只,问最多能凑出多少双不同颜色的袜子. [思路]如果有一种颜色的比总数的一半多,那么答案就是sum-max: 如果最多的没有一半多,那么答案就是sum/ ...

  3. [CF/AT]各大网站网赛 体验部部长第一季度工作报告

    文章目录 CodeForces #712 (Div. 1)--1503 A. Balance the Bits B. 3-Coloring C. Travelling Salesman Problem ...

  4. Vitalik Buterin:我的 40 升背包旅行指南

    How Vitalik Buterin, the founder of Ethereum, likes to travel. "My 40-liter backpack travel gui ...

  5. 二十一世纪大学英语读写教程(第四册)学习笔记(原文)——6 - The EQ Factor(情商因素)

    Unit 6 - The EQ Factor(情商因素) The EQ Factor Nancy Gibbs It turns out that a scientist can see the fut ...

  6. 【贪心】【字典树】Gym - 101466A - Gaby And Addition

    题意:定义一种无进位加法运算,给你n个正整数,问你取出两个数,使得他们加起来和最大/最小是多少. 无进位加法运算,其实是一种位运算,跟最大xor那个套路类似,很容易写出对于每个数字,其对应的最优数字是 ...

  7. Gym - 101471D Money for Nothing(决策单调性+分治+贪心)

    题目链接:点击查看 题目大意:在二维平面中给出 n 个点可以作为矩形左下角的点,再给出 m 个点可以作为矩形右上角的点,现在问最大可以构造出多大面积的矩形,即如何选择,可以使得 ( b[ j ] . ...

  8. 【Gym 102893 L】The Firm Knapsack Problem (贪心)

    题目链接 题目大意 一个 01 背包问题,物品数 n≤105n\le 10^5n≤105 ,容量 W≤1012W\le 10^{12}W≤1012 .将体积上限放宽到 32W\frac{3}{2}W2 ...

  9. codeforce Gym 100685E Epic Fail of a Genie(MaximumProduction 贪心)

    题意:给出一堆元素,求一个子集,使子集的乘积最大,如有多个,应该使子集元素个数尽量小. 题解:贪心,如果有大于1的正数,那么是一定要选的,注意负数也可能凑出大于1的正数,那么将绝对值大于1的负数两两配 ...

最新文章

  1. R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释一个iris数据样本的预测结果、LIME解释器进行模型预测结果解释并可视化
  2. Hibernate QBC 分页
  3. tomcat会自动解压webapps目录下的war包
  4. windows10安装python环境_在windows10下安装python(配置环境变量),Windows10
  5. Hadoop Yarn常用参数配置项整理
  6. outdated: 29.Blitter Function, RAW Texture Loading
  7. 最大学术出版商妥协!与挪威46所机构签协议,90%出版物免费阅读
  8. .netFramework 升级NetCore 问题汇总及解决方案
  9. 【前端】书签应用开发总结
  10. 1023 组个最小数 (20 分)—PAT (Basic Level) Practice (中文)
  11. Harris 角点检测子
  12. 思科三层+TPAC200+TP AP实现每个SSID独立网段
  13. 计算机组策略怎么显示音量图标,win7系统电源、网络、音量图标不见的解决方法...
  14. ps html 优化,优化 Photoshop 的性能
  15. 【转】Latex编译报错后中断编译并改正,然后重复出现不明原因报错的解决方法...
  16. Bert模型(一)安装及问题解决(基本每一步都有问题)
  17. 感染 <SCRIPT Language=VBScript> DropFileName = “svchost.exe” Ramnit 蠕虫病毒 HTML清除工具
  18. 我个人的人生学习感想!
  19. 阿里云大数据ACP(一)大数据开发平台 DataWorks
  20. Word里的图片显示不全,只显示最下面的一小部分的解决办法

热门文章

  1. C语言学习记录——辗转相除法
  2. CSS样式属性margin,padding详解
  3. C语言(void *)用法实例
  4. HBase2.x(十一)HBase 读流程
  5. 给查询出的SQL语句加序号
  6. VScode与VSstdio差别该如何选择C语言IDE(集成开发环境)
  7. UTC和本地时间互相转换
  8. OpenOffice源文件中的文件扩展
  9. C# 农历日期帮助类
  10. nginx配置日志记录问题