题目链接:https://codeforces.com/problemset/problem/1203/E

题意:给定n个数字,每个数字可以进行一次+1或是-1的变换(也可以不变),问通过对部分数字适当变换后n个数中有多少个互不相同的数。

依然是弱鸡补题ing。这道题只要贪心就行了,贪心要注意一点就是在储存完每个值的个数后不要直接给已有的值打标记。为什么呢?为了方便后面进行移动:考虑到存在的一些特殊情况,比如

数字:1 2 3 4 5 6 7

个数:2 1 1 0 1 1 2

对于这个例子,如果我们将原来的2、3整体+1变为3、4,那就可以把4这个空补上,同时使一个1加上1,这段数列中就有7个互不相同的数,但如果一开始就打好标记,就意味着我们无法做出这种移动了。而这种移动的实现方式就是贪心。

具体实现方式就是另建一个vis数组来打标记,从小到大或者从大到小遍历都可以,只要记住哪一边开始就贪心地往哪一边靠,比如从1到150000的话,每个值先看比它小1的有没有vis,已经vis了的话再来标记自己这个值的位置。最后标记完统计一遍输出就行了。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<set>
 4 #include<stdio.h>
 5 #include<string.h>
 6 #include<math.h>
 7 #include<vector>
 8 #include<stdlib.h>
 9 #include<queue>
10 #include<algorithm>
11 #include<map>
12 #include<stack>
13 using namespace std;
14 int n;
15 int a[150010];
16 int vis[150010];
17 int main()
18 {
19     scanf("%d",&n);
20     int k;
21     int s=0;
22     for(int i=0;i<n;i++)
23     {
24         scanf("%d",&k);
25         a[k]++;
26     }
27     for(int i=1;i<=150000;i++)
28     {
29         if(a[i])
30         {
31             for(int j=i-1;j<=i+1;j++)
32             {
33                 if(a[i]&&j>0&&!vis[j])
34                 {
35                     vis[j]=1;
36                     a[i]--;
37                 }
38             }
39         }
40     }
41     for(int i=1;i<=150001;i++)
42     {
43         if(vis[i]>0)
44         {
45             s++;
46         }
47     }
48     printf("%d\n",s);
49     return 0;
50 }

转载于:https://www.cnblogs.com/forever3329/p/11354454.html

Codeforces 1203E Boxers(贪心)相关推荐

  1. Boxers CodeForces - 1203E (贪心解法)——26行代码AC

    立志用更少的代码做更高效的表达 There are n boxers, the weight of the i-th boxer is ai. Each of them can change the ...

  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. Codeforces1600数学day5[找规律CodeForces - 1059C,贪心数学A - Banh-mi CodeForces - 1062C ]

    A - Banh-mi CodeForces - 1062C 题目大意:就是开始给你一个01序列,和q次询问,每次询问会给你一个区间,每次你会从这个区间内拿出一个数,在区间内的其他未被拿走的数字会加上 ...

  5. CodeForces - 1494D Dogeforces(贪心+构造)

    题目链接:点击查看 题目大意:给出 nnn 个叶子结点和一个 n∗nn*nn∗n 的 LCALCALCA 矩阵,其中 LCALCALCA 表示的是最近公共祖先节点的权值,现在需要构造出一棵自顶向下权值 ...

  6. codefrces 1203 E. Boxers(贪心)

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

  7. codeforces数学1600day4[贪心数学公式推导CodeForces - 1151D ,思维CodeForces - 1085C,数论同余+组合计数 CodeForces - 1056B]

    A - Stas and the Queue at the Buffet CodeForces - 1151D 题目大意:就是给你n个人在排队,每个人都有一个ai值和bi值,每个人的不满意度就是f(i ...

  8. Codeforces 1093C (思维+贪心)

    题面 传送门 题目大意: 有一个长n(n为偶数)的序列a 已知a满足 \(a_1≤a_2≤⋯≤a_n\) 给出一个长度为\(\frac{n}{2}\) 的序列b,定义\(b_i=a_i+a_{n-i+ ...

  9. codeforces#236_div2_A nuts 贪心

    题目地址:cf#236_div2_A 题目大意: 给你四个数 k,a,b,v;      k代表每个隔间最多不能超过的数目  ,a是果子个数,b是有多少隔板数量,v是一个隔板最多能装多少 现在问你,要 ...

最新文章

  1. php怎么读取图片并输出,php读取图片内容并输出到浏览器的实现代码_PHP教程
  2. 自动驾驶新突破,国内有了第一款AI标注软件
  3. spring-gateway(一)Reactor编程基础
  4. AutoCAD如何输入文字
  5. WPF在预览视图下可以看到图片,运行时却报错提示找不到资源
  6. php接收get参数false是字符串,php解析url (parse_url) 参数成数组 (parse_str)
  7. python 强制结束线程_在python中实现强制关闭线程的示例
  8. 唐云峰:想当科学家的怪极客
  9. linux禁用防火墙配置,CentOS Linux防火墙配置及关闭
  10. 【B站免费教程】2W 收藏!火爆 B 站的计算机科学速成教程发布,全中文版
  11. java中priorityqueue_详解JAVA中priorityqueue的具体使用
  12. shell脚本实例-命令记录
  13. Vue前端路由~满满的干货
  14. 模块化方案esl以及amd的依赖方式
  15. 全局空间自相关算法:Join Count
  16. php 搭建laravel,laravel框架_搭建php Laravel框架教程详解
  17. POSTMAN接口测试流程
  18. 梦幻西游这么火, Python也不甘示弱, Python写游戏辅助软件!
  19. hdu 5053 水
  20. 马蹄集------函数的幂

热门文章

  1. 交变磁场中特斯拉线圈感应电压
  2. 查看网页源代码和框架源代码的区别
  3. html幻灯片图片大小,如何制作ppt?如插入图片、调整图片大小与母版一致!
  4. 和差化积公式 与 积化和差公式的推导
  5. VC++ CComboBox自绘
  6. VBS调用Windows API函数
  7. 【狄拉克量子力学原理】【4】对易,相容
  8. 浅谈搜索引擎SEO(HTML/CSS)
  9. DirectX 9.0 3D 笔记
  10. 《uni-app》一个非canvas的飞机对战小游戏实现(一)准备