题意:给你n个数,然后你只能对一个数做一次操作使得这个数组里面的不同的数个数最多;
操作:
1.你可以对一个数-1(注意体重不能为0);
2.你可以对一个数+1;
3.你可以对这个数不做修改;
这道题可以这样思考,就是sort之后,然后把尽可能大的+1使得给前面小的数腾出向上的空位(因为这样就可以把范围扩大,使得不同的数尽可能多一些)
这个可以用集合或者数组模拟一遍;

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;
}
//ll QP(ll x,ll n,ll Mod){
//   ll res=1;
//   while(n){
//        if(n&1){
//           res=(res*x)%Mod;
//         }
//         x=(x*x)%Mod;
//         n>>=1;
//   }
//   return res;
//}
ll a[150050],b[150050];ll n;
int main(){scanf("%lld",&n);for(int i=0;i<n;i++)scanf("%lld",a+i);sort(a,a+n);for(int i=n-1;i>=0;i--){if(b[a[i]+1]==0){//这里的判断顺序是不能变的,因为是贪心算法,需要把尽可能大的位子空出来,才能让小的更可能有多的空位填上去a[i]++;b[a[i]]=1;}else if(b[a[i]]==0){//如果后面没有空位了才到它b[a[i]]=1;}else if(a[i]-1>0&&b[a[i]-1]==0){//如果后面没有空位了,那么只能往下走了;a[i]--;b[a[i]]=1;}}sort(a,a+n);ll ans=unique(a,a+n)-a;//计算个数unique常常和sort一起用,因为它的功能是删除相邻的相同的数字,并且只保留相同的数字中的一个printf("%lld\n",ans);return 0;
}

E. Boxers(贪心+移出多余空位)相关推荐

  1. codefrces 1203 E. Boxers(贪心)

    E. Boxers time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...

  2. codeforces 1203 E Boxers 贪心

    https://codeforces.com/problemset/problem/1203/E 题目大意:给 n n n个数,每个数可以做两种变化:(1) + 1 +1 +1:(2) − 1 -1 ...

  3. Codeforces Round #579 (Div. 3) E. Boxers (贪心)

    题目链接:https://codeforces.com/contest/1203/problem/E 思路:一开始想的是记录数字出现次数,看每个数字的三种变化能否产生新数,但是这样容易多算或者少算答案 ...

  4. Codeforces 1203E Boxers(贪心)

    题目链接:https://codeforces.com/problemset/problem/1203/E 题意:给定n个数字,每个数字可以进行一次+1或是-1的变换(也可以不变),问通过对部分数字适 ...

  5. codeforces:E. MEX and Increments【贪心 + 略加优化】

    分析 mex(a) 表示不在a中的最小非负整数 ans[i] 表示最少的操作数使得mex(a) = i 我们用个counter记录一下原始每个位置出现的次数 我们的思路很简单:找出缺口,然后把多余的平 ...

  6. Verilog HDL程序设计——基本要素

    Verilog基本上熟悉了,继续整理一下Verilog的学习笔记吧.前面记载了Verilog的结构,写Verilog的结构有了,但是该怎么写呢?在写之前就得了解一下Verilog的一些基本要素了,也就 ...

  7. ARM架构与编程2--ARM架构(基于百问网ARM架构与编程教程视频)

    一.RISC和CISC 1.1 RISC 上一章介绍过,通过指针操作寄存器,可以选择操作内存,也可以选择直接操作外设.这样是因为在ARM中,对于内存和外设他们是位于同一块存储空间内的.CPU访问他们的 ...

  8. Verilog 中的移位(算术移位, 逻辑移位, 循环移位)

    (1)>>>(算术右移)与>>(逻辑右移)的区别: 逻辑右移就是不考虑符号位,右移一位,左边补零即可. 算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,:否 ...

  9. C51位运算应用技巧

    位运算应用口诀: 清零取位要用与,某位置一可用或,若要取反和交换,轻轻松松用异或! 移位运算要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形. 2 "<<&quo ...

最新文章

  1. 二、linux最小驱动
  2. android wifi定位服务,如何在Android中使用Wifi获取位置?
  3. PL/SQL 处理流程
  4. 如何利用FFT(基2时间以及基2频率)信号流图求序列的DFT
  5. 上海大学计算机组成原理实验13,上海大学计算机组成原理实验报告11.doc
  6. Cinchoo ETL-对大型CSV文件进行排序
  7. AS3显示当前帧速率的类:FrameRater Class
  8. c++ 基本知识汇总
  9. 机电工程专业技术-测量技术
  10. 使用Rufus制作系统启动盘
  11. win10如何显示文件后缀
  12. select_related和prefetch_related的用法与区别
  13. sprd9820 来电归属地
  14. 一.stm32的内部flash操作笔记
  15. [微软帮助和支持]来自Windows XP和Office 2003的告别信
  16. Unirech:阿里云国际云服务器ecs建站流程
  17. JAVA高级基础(26)---File的常用方法
  18. Browser Security Plus 企业网络过滤工具
  19. java时间,日期,毫秒值,String的相互转换总结
  20. C++题目及答案(15)——质检员问题升级

热门文章

  1. 河北省考计算机知识,河北省职称计算机考试基础知识试题及答案.pdf
  2. QTranslate翻译工具
  3. 解决“**无法访问,你可能没有权限使用网络资源,请与管理员联系,拒绝访问!
  4. 联想笔记本关闭锁定计算机,如何打开或关闭ThinkPad笔记本电脑的滚动锁定功能...
  5. 一份正真的让你成为工程师的贴子
  6. 2013中国域名注册商报告:万网新增15.6万域名
  7. tensorflow 中 fully_connected
  8. 李彦宏登上时代周刊封面 研究院完成调整【附时代周刊中文全文】
  9. ESP32设备驱动-BMP183温度传感器驱动
  10. 小程序开发收费价目表