Red-Blue Operations (Hard Version)
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)相关推荐
- 计算机qqT教案,It's red 教学设计
一.教学目标 1.知识目标: (1) 能听懂和正确说出"red, blue, yellow, green, black"这五个颜色单词. (2)能运用句型It's red/blue ...
- CS231n(1):图片分类笔记与KNN编程作业
声明:本博客笔记部分为CS231n官网笔记,这里对其进行引用,在此表示感谢. 课程官网地址为:http://vision.stanford.edu/teaching/cs231n/syllabus.h ...
- django2.2 简单博客 一
博客项目 无论进行什么项目,首先进行需求分析. 需求分析 要建立最初始需求文档,每个功能要一个一个梳理,建立一个个功能点,清晰,然后需要客户过目,事后要放入项目归档.项目管理很关键.但是客户往往是跳跃 ...
- LEETCODE-刷题个人笔记 Python(1-400)-TAG标签版本
1. Array (1) 27. Remove Element(Easy) 给定数组nums和值val,在适当位置删除该值的所有实例并返回新长度. 思路: 不需要使用排序,如果等于该值,则将n-1的值 ...
- Mysql Data types in summary.
MySQL Commands (Statements) • MySQL commands (also referred to as statements) fall into two ma ...
- Codeforces Round #747 (Div. 2)题解
Codeforces Round #747 (Div. 2)题解 (本博客将持续更新以后每场CF div2的题解,喜欢ACM.OI的小伙伴记得点个关注哟) 昨天夜晚刷网络流刷入迷了,渐渐就忘记了我还要 ...
- C++11 FAQ中文版
C++11 FAQ中文版 http://www.chenlq.net/cpp11-faq-chs http://www.stroustrup.com/C++11FAQ.html Morgan Stan ...
- Java--创建窗口和程序片
Java 创建窗口和程序片 在Java 1.0中,图形用户接口(GUI)库最初的设计目标是让程序员构建一个通用的GUI,使其在所有平台上都能正常显示. 但遗憾的是,这个目标并未达到.事实上,Java ...
- [转载]Maximum Flow: Augmenting Path Algorithms Comparison
https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-augmenting-path- ...
最新文章
- [3]MVC3中使用Telerik(转)
- mysql中的逻辑类型如何定义_MYSQL存储过程即常用逻辑知识点总结
- 游戏行业的人工智能设计:AI的设计和实施
- WebIDE discovery when destination is selected from dropdown list
- Swift - 推送之本地推送(UILocalNotification)添加Button的点击事件
- Singleton 与 MonoState 模式
- 对象的比较与排序(二):实现IComparable和IComparer接口 和 Comparer类(转)
- idc机房建设费用_机房建设方案及报价清单.doc
- java工具类-Java对象转换成Map
- Excel金额大小写转换公式
- 企业宣传片解说词的写法指导。
- 公众号丶服务号丶订阅号三者间的区别
- ArcGIS校园3D展示图制作详细教程
- Spark的Cache和Checkpoint区别和联系拾遗
- Android 图片 批量上传,移动端图片批量上传问题
- 策略性发疯_如何使自己的房屋“智能”而不发疯
- 八、python编写IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、主机数
- Android中判断应用是否第一次打开
- 8位算术逻辑运算实验
- 如何脱离USB给ESP8266下载程序?