主要考察对vector的使用

Problem - C - Codeforces

题意概括:给你一段序列,要求你将l到r区间内的数全部加K,这个l和r可以由你任意取。最后求所有可能的方案中众数的最大个数。

我们可以理解为x和x+k只能选择其中之一。当然必须选连续的一段。

然后我们可以知道最后的众数一定是序列a的其中一个,枚举这个数字,然后用vector v[x]储存可以变成x的所有数,也就是x和x-k,然后这个最大众数可以用类似前缀和的方式快速计算出。(就是遍历然后求左边的最大值,详情见代码)

综合复杂度不超过2*n

由于x和x+k只能选择一个,当k≠0时上述算法显然是满足的。但k=0时就同时统计了x和x+k,所以这种情况下的答案要除以二

#include <bits/stdc++.h>
using namespace std;#define go(i, a, b) for (int i = a; i <= b; ++i)const int N = 1e6 + 10, B = 1e6;int n, k, vis[2 * N];
vector<int> v[2 * N];
vector<int> app;void read(int &x) {int f = 1;char c;c = getchar();x = 0;while (!isdigit(c)) {if (c == '-') f = -1;c = getchar();}while (isdigit(c)) {x = x * 10 + c - '0';c = getchar();}x *= f;
}signed main() {// freopen("input.txt", "r", stdin);// freopen("out.txt", "w", stdout);cin >> n >> k;int x;app.reserve(2 * n);go(i, 1, n) {read(x);x += B;if (!vis[x]) {app.push_back(x);vis[x] = 1;}v[x].push_back(x);if (x + k >= 0 && x + k <= 2 * B) {v[x + k].push_back(x);}}int ans = 0;for (auto num : app) {if (!v[num].size()) continue;// cout << num << endl;int addk = 0, nok = 0, mx = 0;int all = 0;for (auto x : v[num]) all += x == num;ans = max(ans, all);for (auto x : v[num]) {addk += x != num;nok += x == num;ans = max(ans, all - nok + addk + mx);mx = max(mx, nok - addk);}}if (k == 0)cout << ans / 2 << endl;elsecout << ans << endl;return 0;
}

C. Klee in Solitary Confinement相关推荐

  1. C. Klee in Solitary Confinement(2021ICPC-南京)(公式推导)

    The 2021 ICPC Asia Nanjing Regional Contest Problem 给出一个长度为n的序列a(1≤n≤1e6,−1e6≤a[i]≤1e61 \leq n \leq ...

  2. C - Klee in Solitary Confinement--ICPC南京(思维)

    题目链接: Klee in Solitary Confinement - Gym 103470C - Virtual Judge 题意: 给定n和k,有一个长度为n的序列,可对序列中任意一段连续区间加 ...

  3. C-Klee in Solitary Confinement 思维

    链接:https://codeforces.com/gym/103470/problem/C 题意:给一个数字序列,可以给一个子区间+k,要求输出众数最多的数量. 题解: 考虑一个区间+k带来的影响, ...

  4. 2021acm-icpc区域赛(南京)补题笔记

    文章目录 前言 题目一览 A.Oops, It's Yesterday Twice More(签到) 题意 思路 M. Windblume Festival(签到) 题意 思路 C. Klee in ...

  5. 2021 46届icpc 南京

    文章目录 A. Oops, It's Yesterday Twice More C. Klee in Solitary Confinement D. Paimon Sorting H. Crystal ...

  6. 第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京),签到题5题

    文章目录 A.Oops, It's Yesterday Twice More M.Windblume Festival C.Klee in Solitary Confinement H.Crystal ...

  7. 2021icpc南京站

    A.Oops, It's Yesterday Twice More 题目链接:https://codeforces.com/gym/103470/problem/A 题意:给定一个n*n的方格,每个方 ...

  8. 2022/9/28-2022/9/30 21南京C,H,J

    1633D - Make Them Equal dp 先求出1转化为每一个数需要的最小次数f[b[i]],问题就转化为容量为k,每件物品的体积为f[b[i]],价值为c[i],01背包,做这题的时候脑 ...

  9. 2022 1.4 补题

    ​​​​​​C. Klee in Solitary Confinement 思路: 首先,对于每个数我们要将其存储在数组中,注意向右位移2e6,而不是1e6,因为k的取值也可能是负数. 其次,对于每一 ...

最新文章

  1. 三个大数据处理框架:Storm,Spark和Samza 介绍比较
  2. python好学吗mooc中文网-Python全栈工程师
  3. Exchange 2010通过NAT方式发布到公网
  4. 一步一步掌握设计模式一(最简单的开始--单例模式^_^)
  5. python怎么安装bokeh_python怎么安装bokeh
  6. Educational Codeforces Round 80 (Rated for Div. 2) C. Two Arrays 组合数|dp
  7. RDS查看Binlog日志内容
  8. php判断是否为数字_PHP知识点:从'xulei' == 0是否为真谈谈运算符===和==
  9. css3文档手册chm_你还在使用CHM帮助文档吗?赶快试试Baklib吧
  10. C#工控上位机实例_HINET智能网关用于三菱FX1S/1N/2N/3S/3G/3UPLC远程编程和上位机监控...
  11. HDU1598 并查集+枚举
  12. 台式计算机怎么安装无线信号接收器,电脑wifi接收器怎么用
  13. “打砖块”H5游戏源码
  14. 博图如何上载wincc程序_博图导入触摸屏程序 如何通过博图下载触摸屏程序
  15. html文档用什么浏览器打开,用什么打开HTML文件?
  16. Android 播放器 mov,適用於Android的頂級5 MOV播放器應用程序,可在移動設備上播放MOV視頻文件...
  17. 【备忘】大数据最火爆技术spark之王家林2016最新高清视频教程
  18. .Net再次使用FlashPaper
  19. 一次算法作业hhhhhh
  20. 机器学习技术:使用深度学习处理文本

热门文章

  1. 世界上最健康的工程师作息表!
  2. [Android] 介绍一个gradle插件shrinker: 快速无副作用去除apk包中多余的 R类
  3. IPAD如何退出恢复模式
  4. 人面不知何处,绿波依旧东流
  5. WOW原始UI代码分析【ZoneText】
  6. java swing 多层_java swing布局嵌套
  7. 浅析:OTN中的AMP/BMP/GMP/GFP-F映射
  8. JavaScript强制类型转换(String)
  9. Photoshop怎么给图片添加简介信息或者版权信息
  10. Maven打包Springboot Docker镜像遇到的问题记录