【ATCOER、D - ±1 Operation 2】前缀和+排序二分
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays; public class Main {
public static void main(String[] args) throws Exception {
int N,Q;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] words = br.readLine().split("\\s+");
N = Integer.valueOf(words[0]);
Q = Integer.valueOf(words[1]);
long[] A = new long[N];
words = br.readLine().split("\\s+");
for (int i = 0; i < N; i++) {
A[i] = Long.valueOf(words[i]);
}
long[] sum = new long[N];
Arrays.sort(A);
for (int i = 0; i < N; i++) {
if( i==0){
sum[0] = A[i];
}else{
sum[i] = sum[i-1] + A[i];
}
}
//
for (int i = 0; i < Q; i++) {
long x = Long.valueOf(br.readLine());
int upper = upperBound(A,0,N,x); if( upper == 0){
long ans = sum[N-1] - x*N;
System.out.println(ans);
}
else if( upper < N){
long ans = x*upper - sum[upper-1];
ans += sum[N-1] - sum[upper-1];
ans -= x*(N-upper);
System.out.println(ans);
}else{
long ans = x*N - sum[N-1];
System.out.println(ans);
}
} } public static int upperBound(long[] arr, int start, int high, long key) {
while (start < high) {
int mid = (start+high)/2; if(arr[mid] >key){
high = mid;
}else{
start = mid+1;
}
}
return high;
} }
【ATCOER、D - ±1 Operation 2】前缀和+排序二分的更多相关文章
- UVA.10474 Where is the Marble ( 排序 二分查找 )
UVA.10474 Where is the Marble ( 排序 二分查找 ) 题意分析 大水题一道.排序好找到第一个目标数字的位置,返回其下标即可.暴力可过,强行写了一发BS,发现错误百出.应了 ...
- HDU 6299.Balanced Sequence-贪心、前缀和排序 (2018 Multi-University Training Contest 1 1002)
HDU6299.Balanced Sequence 这个题就是将括号处理一下,先把串里能匹配上的先计数去掉,然后统计左半边括号的前缀和以及右半边括号的前缀和,然后结构体排序,然后遍历一遍,贪心策略走一 ...
- ACM学习历程—HDU5700 区间交(树状数组 && 前缀和 && 排序)
http://acm.hdu.edu.cn/showproblem.php?pid=5700 这是这次百度之星初赛2B的第五题.省赛回来看了一下,有这样一个思路:对于所有的区间排序,按左值排序. 然后 ...
- 前缀和+排序——cf1043E
先不考虑第二个条件 要求i和所有其他人的分数和最小,选择x还是y,可以推出一个公式,即差xi-yi小的j都选y,反之都选x 那么按照xi-yi排序即可 然后再考虑第二个条件,做减法就行 /* xi+y ...
- Codeforces Gym 100513D D. Data Center 前缀和 排序
D. Data Center Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/560/proble ...
- 牛客练习赛46 B 华华送奕奕小礼物 (预处理前缀和,二分)
链接:https://ac.nowcoder.com/acm/contest/894/B?&headNav=acm 来源:牛客网 华华送奕奕小礼物 时间限制:C/C++ 1秒,其他语言2秒 空 ...
- 2014 Super Training #6 H Edward's Cola Plan --排序+二分
原题: ZOJ 3676 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3676 题意:给每个朋友一瓶可乐,可乐有普通和高 ...
- CROC 2016 - Elimination Round (Rated Unofficial Edition) D. Robot Rapping Results Report 拓扑排序+二分
题目链接: http://www.codeforces.com/contest/655/problem/D 题意: 题目是要求前k个场次就能确定唯一的拓扑序,求满足条件的最小k. 题解: 二分k的取值 ...
- Codeforces 484B Maximum Value(排序+二分)
题目链接: http://codeforces.com/problemset/problem/484/B 题意: 求a[i]%a[j] (a[i]>a[j])的余数的最大值 分析: 要求余数的最 ...
- [bzoj4552][Tjoi2016&Heoi2016]排序-二分+线段树
Brief Description DZY有一个数列a[1..n],它是1∼n这n个正整数的一个排列. 现在他想支持两种操作: 0, l, r: 将a[l..r]原地升序排序. 1, l, r: 将a ...
随机推荐
- ElasticSearch7.3学习(一)----采用restful风格 基本的增删查改语句
1 .新建图书索引 首先建立图书索引 book 语法:put /index PUT /book 结果 2.新增图书 :新增文档 语法:PUT /index/type/id PUT /book/_doc ...
- 下载安装JDK 和 IntelliJ IDEA 和 ActiveMq
wget http://yun.diandaxia.com/other/jdk-8u92-linux-x64.rpm rpm -ivh jdk-8u92-linux-x64.rpm wget http ...
- 时间减去一个小时怎么做 delphi 很方便 看代码
procedure TfrmTongBuTid.Button1Click(Sender: TObject); begin TopStartModifiedTime_dtp.Time := TopSta ...
- JS leetcode 寻找数组的中心索引 题解分析
壹 ❀ 引 今天是的题目来自leetcode的724. 寻找数组的中心索引,做完之后我感觉自己像个憨憨,题目描述如下: 给定一个整数类型的数组 nums,请编写一个能够返回数组"中心索引&q ...
- Shiro 框架的MD5加密算法实现原理
直接上代码:该代码可以直接用于项目中做MD5加密,加盐加密,多层散列加密 import java.io.UnsupportedEncodingException; import java.securi ...
- java 从零开始手写 redis(11)clock时钟淘汰算法详解及实现
前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...
- win32-使用GDI+缩放图像
滑动鼠标滚轮可以改变图像大小 #include <windows.h> #include <tchar.h> #include <Urlmon.h> // URLD ...
- redis7源码分析:redis 单线程模型解析,一条get命令执行流程
有了下文的梳理后 redis 启动流程 再来解析redis 在单线程模式下解析并处理客户端发来的命令 1. 当 client fd 可读时,会回调readQueryFromClient函数 void ...
- Jenkins共享库使用
简单使用 共享库(Shared libraries)是一种可以用来封装函数.变量甚至整个 Pipeline 的机制.通过共享库,可以将常用的功能和流程逻辑定义在单独的 Groovy 脚本中,然后在多个 ...
- Qt+MySql开发笔记:Qt5.9.3的mingw32版本编译MySql8版本驱动并Demo连接数据库测试
前言 之前特定的mysql版本msvc版本已经调通了,但是为了更好的跨平台,所以选择用mingw32版本,于是需要编译mysql驱动的mingw32版本的驱动库,以便提供给qt连接mysql使用. ...