Red-Blue Operations (Hard Version)

题意:给一个数组,有q组操作,每组操作ki次,问操作完后数组中最小数最大是多少,n,q<=2e5。每次操作过程如下:

设当前操作次数为cnt;
选一个数,如果它是红色,则+cnt,如果是蓝色,则-cnt,
然后cnt++,如果当前是红色,变成蓝色,否则变成红色。

思路:

如果k小于n就直接加,如果k大于n就把加放在后面,后面全部加,前面的分组每一组为+cnt,-(cnt+1)如果k-n是偶数,那就要减(k-n)/2,如果是奇数,就减(k-n+1)/2。
具体看代码。

代码:

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#define int long long
#define endl '\n'using namespace std;const int maxn = 3e5 + 7;
const int inf = 1e18;int n, q, a[maxn];signed main(){ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> n >> q;int sum = 0;for(int i = 1; i <= n; i ++ )  cin >> a[i], sum += a[i];sort(a + 1, a + n + 1);vector<int> f(n + 2, inf);for(int i = 1; i <= n; i ++ )f[i + 1] = min(f[i], a[i]) + 1;while(q -- ){int k;cin >> k;if(k < n){cout << min(f[k + 1], a[k + 1]) << ' ';}else {int ans = 0;int s = sum;if((k - n) % 2 == 0){ans = f[n + 1] + k - n;s += n * (k + k - n + 1) / 2 - (k - n) / 2;}else {ans = min(f[n] + k - n + 1, a[n]);s += (n - 1) * (k + k - n + 2) / 2 - (k - n + 1) / 2;}cout << min(ans, s / n) << ' ';}}cout << endl;
}

Red-Blue Operations (Hard Version)相关推荐

  1. 计算机qqT教案,It's red  教学设计

    一.教学目标 1.知识目标: (1) 能听懂和正确说出"red, blue, yellow, green, black"这五个颜色单词. (2)能运用句型It's red/blue ...

  2. CS231n(1):图片分类笔记与KNN编程作业

    声明:本博客笔记部分为CS231n官网笔记,这里对其进行引用,在此表示感谢. 课程官网地址为:http://vision.stanford.edu/teaching/cs231n/syllabus.h ...

  3. django2.2 简单博客 一

    博客项目 无论进行什么项目,首先进行需求分析. 需求分析 要建立最初始需求文档,每个功能要一个一个梳理,建立一个个功能点,清晰,然后需要客户过目,事后要放入项目归档.项目管理很关键.但是客户往往是跳跃 ...

  4. LEETCODE-刷题个人笔记 Python(1-400)-TAG标签版本

    1. Array (1) 27. Remove Element(Easy) 给定数组nums和值val,在适当位置删除该值的所有实例并返回新长度. 思路: 不需要使用排序,如果等于该值,则将n-1的值 ...

  5. Mysql Data types in summary.

    MySQL Commands (Statements) •       MySQL commands (also referred to as statements) fall into two ma ...

  6. Codeforces Round #747 (Div. 2)题解

    Codeforces Round #747 (Div. 2)题解 (本博客将持续更新以后每场CF div2的题解,喜欢ACM.OI的小伙伴记得点个关注哟) 昨天夜晚刷网络流刷入迷了,渐渐就忘记了我还要 ...

  7. C++11 FAQ中文版

    C++11 FAQ中文版 http://www.chenlq.net/cpp11-faq-chs http://www.stroustrup.com/C++11FAQ.html Morgan Stan ...

  8. Java--创建窗口和程序片

    Java  创建窗口和程序片 在Java 1.0中,图形用户接口(GUI)库最初的设计目标是让程序员构建一个通用的GUI,使其在所有平台上都能正常显示. 但遗憾的是,这个目标并未达到.事实上,Java ...

  9. [转载]Maximum Flow: Augmenting Path Algorithms Comparison

    https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-augmenting-path- ...

最新文章

  1. [3]MVC3中使用Telerik(转)
  2. mysql中的逻辑类型如何定义_MYSQL存储过程即常用逻辑知识点总结
  3. 游戏行业的人工智能设计:AI的设计和实施
  4. WebIDE discovery when destination is selected from dropdown list
  5. Swift - 推送之本地推送(UILocalNotification)添加Button的点击事件
  6. Singleton 与 MonoState 模式
  7. 对象的比较与排序(二):实现IComparable和IComparer接口 和 Comparer类(转)
  8. idc机房建设费用_机房建设方案及报价清单.doc
  9. java工具类-Java对象转换成Map
  10. Excel金额大小写转换公式
  11. 企业宣传片解说词的写法指导。
  12. 公众号丶服务号丶订阅号三者间的区别
  13. ArcGIS校园3D展示图制作详细教程
  14. Spark的Cache和Checkpoint区别和联系拾遗
  15. Android 图片 批量上传,移动端图片批量上传问题
  16. 策略性发疯_如何使自己的房屋“智能”而不发疯
  17. 八、python编写IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、主机数
  18. Android中判断应用是否第一次打开
  19. 8位算术逻辑运算实验
  20. 如何脱离USB给ESP8266下载程序?

热门文章

  1. 大型网站软件系统的特点
  2. UNION 使用方法
  3. 设计模式沉思录读后感2
  4. 每天有60万人次连接风险WiFi
  5. 2022-2027年中国动物性水产行业市场全景评估及发展战略规划报告
  6. (PC+WAP)织梦模板水产养殖类网站
  7. Makefile中的$
  8. 10年Java开发经验,教你解决线上频出MySQL死锁问题!实战解析
  9. 美次贷危机对中国经济影响到底多大
  10. 影像科刘再毅教授:助推精准医学,AI的“能”与“不能”