codeforces 721D D. Maxim and Array (STL||优先队列)
来源:互联网 发布:如何测试udp端口通不通 编辑:程序博客网 时间:2024/05/04 10:34
Recently Maxim has found an array of n integers, needed by no one. He immediately come up with idea of changing it: he invented positive integerx and decided to add or subtract it from arbitrary array elements. Formally, by applying single operation Maxim chooses integeri (1 ≤ i ≤ n) and replaces thei-th element of array ai either with ai + x or with ai - x. Please note that the operation may be applied more than once to the same position.
Maxim is a curious minimalis, thus he wants to know what is the minimum value that the product of all array elements (i.e.) can reach, if Maxim would apply no more thank operations to it. Please help him in that.
The first line of the input contains three integers n, k andx (1 ≤ n, k ≤ 200 000, 1 ≤ x ≤ 109) — the number of elements in the array, the maximum number of operations and the number invented by Maxim, respectively.
The second line contains n integers a1, a2, ..., an () — the elements of the array found by Maxim.
Print n integers b1, b2, ..., bn in the only line — the array elements after applying no more thank operations to the array. In particular, should stay true for every 1 ≤ i ≤ n, but the product of all array elements should beminimum possible.
If there are multiple answers, print any of them.
5 3 15 4 3 5 2
5 4 3 5 -1
5 3 15 4 3 5 5
5 4 0 5 5
5 3 15 4 4 5 5
5 1 4 5 5
3 2 75 4 2
5 11 -5
题意:
给你n个数,k次操作,每次操作可以将第i个数+x或者-x,输出k次操作后这n个数乘积最小时的数列
解题:每次处理绝对值最小的数,如果当前乘积是负数,该数尽量远离0。如果当前成绩是正数,该数靠近0。。
我是用优先队列来处理,重载运算符
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<queue>using namespace std;const int N = 2e5+100;typedef long long ll;struct node{ll x;ll index;}a[N];bool operator<(node a , node b){ return abs(a.x)>abs(b.x); } priority_queue<node>que;int main(){ios::sync_with_stdio(false); ll n,k,x,i,j;int flag=1;node temp;cin>>n>>k>>x;for(i=1;i<=n;i++) {cin>>a[i].x;a[i].index=i;que.push(a[i]);if(a[i].x<0) flag=-flag; }while(k--) {temp=que.top();que.pop();if(temp.x<0) {if(flag==-1) a[temp.index].x-=x;else a[temp.index].x +=x;if(a[temp.index].x>=0) flag=-flag;}else {if(flag==-1) a[temp.index].x+=x;else a[temp.index].x-=x;if(a[temp.index].x<0) flag=-flag;}que.push(a[temp.index]);}for(i=1;i<=n;i++) cout<<a[i].x<<" ";cout<<endl;return 0;}
- codeforces 721D D. Maxim and Array (STL||优先队列)
- Codeforces 721D Maxim and Array【贪心+优先队列+分类讨论】
- Codeforces 721D Maxim and Array[贪心]
- codeforces 721D Maxim and Array(贪心)
- 721D Maxim and Array codeforces(模拟)
- 【24.17%】【codeforces 721D】Maxim and Array
- codeforces 721D. Maxim and Array(贪心)
- CodeForces 721D. Maxim and Array(贪心,思维题)
- cf 721 D Maxim and Array
- Codeforces Round #374 (Div. 2) D - Maxim and Array
- Codeforces Round #374 (Div. 2) D. Maxim and Array
- Codeforces Round #374 (Div. 2)D. Maxim and Array(贪心)
- Codeforces Round 374 (Div 2)D Maxim and Array 【贪心】
- Codeforces Round #374 (Div. 2) D. Maxim and Array
- Codeforces Round #374 (Div. 2) D. Maxim and Array 贪心
- Codeforces Round #374 (Div. 2) D. Maxim and Array 贪心
- 水题(Maxim and Array,cf 721D)
- Codeforces712 D. Maxim and Array (贪心)
- oracle11g OCP 认证 1Z0-053考试笔记6
- iOS-UI控件-UIScrollView-滚动视图
- idea,vim,eclipse配色方案免费下载easycolor.cc
- python3.5.2下载安装Tensorflow
- 移动端搭建Http Server(四)—— 解析HTTP请求Headers
- codeforces 721D D. Maxim and Array (STL||优先队列)
- javaweb项目设计文档
- Hibernate常见错误解答
- oracle11g OCP 认证 1Z0-053考试笔记7
- 二分查找
- IntelliJ IDEA 中如何配置JDK
- android内存管理—内存溢出和内存泄漏
- Linux定时任务Crontab详解
- 详解Java中多进程编程的实现