/*
不要低头,不要放弃,不要气馁,不要慌张。
题意:
给一列数a,可以进行k次操作,每次操作可以选取任意一个数加x或者减x,x是固定的数。求如何才能使得这个数列所有数乘积最小。
思路:
贪心...讨论这列数中负数的个数,如果为偶数,那么把数列中绝对值最小的数使其往0的方向前进。
如果为奇数,同样选择绝对值最小的数,使其往背离0的方向前进。
道理很简单...自己写写就看出来了...
wa点:
有一个细节没处理好,如果经过某次操作某个数变成0了...那么我们的负数记录并没有更新...
默认下一次会减...因为我们需要构造一个新的负数...所以这里gg了...
*/ #include<bits/stdc++.h>
#define N 200050
using namespace std;
long long jilu[N];
long long ans[N];
struct st{
st(){}
st(long long a,int aa){
bb=a;
jue=max(a,-a);
id=aa;
}
int id;
long long bb,jue;
};
bool operator < (const st &a,const st &b){
return a.jue<b.jue;
}
multiset<st> ms;
int main()
{
int n,k;
long long x;
int zero=,zheng=,fu=;
scanf("%d%d%lld",&n,&k,&x);
int ddd=;
for(int i=;i<=n;i++){
scanf("%lld",jilu+i);
if(jilu[i]!=-)ddd++;
if(jilu[i]==)zero++;
else if(jilu[i]>)zheng++;
else fu++;
}
for(int i=;i<=n;i++)ms.insert(st(jilu[i],i));
st tmp;
for(int i=;i<=k;i++){
tmp=*ms.begin();
ms.erase(ms.begin());
if(fu%==){
if(tmp.jue<=x)fu++;
if(tmp.bb>=){
tmp.bb-=x;
if(tmp.bb==&&i!=k){
i++;
tmp.bb-=x;
}
}
else{
tmp.bb+=x;
if(tmp.bb==&&i!=k){
tmp.bb+=x;
i++;
}
}
ms.insert(st(tmp.bb,tmp.id));
}
else{
if(tmp.bb>=)tmp.bb+=x;
else tmp.bb-=x;
ms.insert(st(tmp.bb,tmp.id));
}
}
multiset<st>::iterator it;
for(it=ms.begin();it!=ms.end();it++){
ans[it->id]=it->bb;
}
for(int i=;i<=n;i++){
printf("%lld ",ans[i]);
}
}

Codeforces 721D [贪心]的更多相关文章

  1. Maxim and Array CodeForces - 721D (贪心)

    大意: 给定序列, 每次操作选择一个数+x或-x, 最多k次操作, 求操作后所有元素积的最小值 贪心先选出绝对值最小的调整为负数, 再不断选出绝对值最小的增大它的绝对值 #include <io ...

  2. CodeForces - 721D 贪心+优先队列(整理一下优先队列排序情况)

    题意: 给你一个长度为n的数组,你可以对其中某个元素加上x或者减去x,这种操作你最多只能使用k次,让你输出操作后的数组,且保证这个数组所有元素的乘积尽可能小 题解: 在这之前我们要知道a*b>a ...

  3. CodeForces - 721D Maxim and Array (贪心)

    Recently Maxim has found an array of n integers, needed by no one. He immediately come up with idea ...

  4. CodeForces - 893D 贪心

    http://codeforces.com/problemset/problem/893/D 题意 Recenlty Luba有一张信用卡可用,一开始金额为0,每天早上可以去充任意数量的钱.到了晚上, ...

  5. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划

    There are n people and k keys on a straight line. Every person wants to get to the office which is l ...

  6. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 828D) - 贪心

    Arkady needs your help again! This time he decided to build his own high-speed Internet exchange poi ...

  7. CodeForces - 93B(贪心+vector<pair<int,double> >+double 的精度操作

    题目链接:http://codeforces.com/problemset/problem/93/B B. End of Exams time limit per test 1 second memo ...

  8. C - Ordering Pizza CodeForces - 867C 贪心 经典

    C - Ordering Pizza CodeForces - 867C C - Ordering Pizza 这个是最难的,一个贪心,很经典,但是我不会,早训结束看了题解才知道怎么贪心的. 这个是先 ...

  9. Codeforces 570C 贪心

    题目:http://codeforces.com/contest/570/problem/C 题意:给你一个字符串,由‘.’和小写字母组成.把两个相邻的‘.’替换成一个‘.’,算一次变换.现在给你一些 ...

随机推荐

  1. Makefile三个有用变量$@,$^,$<

    $@:目标文件 $^:所有的依赖文件 $<:第一个依赖文件 使用上面三个变量就可以简化我们的Makefile文件: #简化后的Makefile main : main.o log.o test_ ...

  2. mac系统xcode升级等软件更换appid账户

    删掉xcode 后发现 还是 会存在更新项,点击还是会提示输入之前app id 账号的密码 经过搜索和分析,发现是 Spotlight 在捣鬼,文件和目录删除了,但是索引文件没有被更新. 依次执行下面 ...

  3. leetcode 日记 3sumclosest java

    思路一为遍历: public int thirdSolution(int[] nums, int target) { int result = nums[0] + nums[1] + nums[2]; ...

  4. spring-mvc xml文件的最基本配置

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  5. DES跨(C# Android IOS)三个平台通用的加解密方法

          #region   跨平台加解密(c# 安卓 IOS)       //  public static string sKey = "12345678";       ...

  6. iOS 自定义emoji表情键盘

    之前走了很多弯路,包括自己定以emoji表情,自己创建view类去处理图文混排 ,当把这些焦头烂额的东西处理完了才发现 ,其实系统自带键盘是如此的方便,iOS 系统自带的表情在view,textfie ...

  7. Android 优化List图片显示

    通常在界面中涉及到大量图片加载的时候都会产生卡顿,因此需要优化 其核心思想就是减少在getView()中的代码量和操作,让其尽可能的轻量化.众多方法最根本的目的是 将一切耗时的操作从getView中抽 ...

  8. 初探groupcache

    groupcache是用于dl.google.com的一个memcached的替代品,相对于memcached,提供更小的功能集和更高的效率,以第三方库的形式提供服务. groupcache的常见部署 ...

  9. [原创] 用两个stack实现queue的功能

    #include <iostream> #include <stack> using namespace std; class doubleStackToQueue { pri ...

  10. linux C之access函数(转-追梦的小鸟)

    access():判断是否具有存取文件的权限 相关函数    stat,open,chmod,chown,setuid,setgid表头文件    #include<unistd.h>定义 ...