zoukankan      html  css  js  c++  java
  • D. Maxim and Array

    https://www.cnblogs.com/qscqesze/p/5925893.html  原博客

    http://codeforces.com/group/1EzrFFyOc0/contest/721/problem/D 题目

    题意

    给你n个数,你可以操作k次,每次使得一个数增加x或者减小x

    你要使得最后所有数的乘积最小,问你最后这个序列长什么样子。

    题解:

    贪心,根据符号的不同,每次贪心的使得一个绝对值最小的数减去x或者加上x就好了

    这个贪心比较显然。

    假设当前乘积为ANS,那么你改变a[i]的大小的话,那么对答案的影响为ANS/A[i]/*X

    然后找到影响最大的就好了。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include <cctype>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<cmath>
     7 #include<string>
     8 #include<cmath>
     9 #include<set>
    10 #include<vector>
    11 #include<stack>
    12 #include<queue>
    13 #include<map>
    14 using namespace std;
    15 #define ll long long
    16 #define mem(a,x) memset(a,x,sizeof(a))
    17 #define se second
    18 #define fi first
    19 const int INF= 0x3f3f3f3f;
    20 const int N=2e5+5;
    21 
    22 ll n,k,x;
    23 ll a[N];
    24 
    25 set< pair<ll,ll> > s; //自动排序
    26 
    27 int main()
    28 {
    29     cin>>n>>k>>x;
    30     bool flag=0; //负数的数目奇偶情况
    31     for(ll i=1;i<=n;i++){
    32         scanf("%lld",&a[i]);
    33         if(a[i]<0)  flag^=1;//这技巧要记住
    34         s.insert( make_pair (abs(a[i]),i) );//这技巧要记住
    35     }
    36     for(int i=1;i<=k;i++)
    37     {
    38         int j=s.begin()->second; //这技巧要记住
    39         s.erase(s.begin());
    40 
    41         if(a[j]<0) flag^=1; //如果当前这个数是负数,负数数量减少1,讨论这个a[j]
    42         if(!flag){ //除a[i]以外的 负数个数为偶数
    43             a[j]-=x;
    44         }
    45         else{ //除a[i]以外的 负数个数为奇数
    46             a[j]+=x;
    47         }
    48         if(a[j]<0) flag^=1; //再对改变后的a[j]讨论,如果是负的,负数数量+1;
    49         s.insert( make_pair( abs(a[j]),j) );
    50     }
    51     for(int i=1;i<=n;i++)
    52     {
    53         cout<<a[i]<<' ';
    54     }
    55 }
  • 相关阅读:
    LINUX中常用操作命令
    NET Core Kestrel部署HTTPS
    Java中Enum枚举的使用
    Java多线程——sychronized
    Java中SynchronizedMap与ConcurrentHashMap的对比
    Java中HashMap实现原理
    数据结构——Java实现单向链表
    数据库——事务基础
    数据结构——Java实现二叉树
    Java中ThreadLocal的深入理解
  • 原文地址:https://www.cnblogs.com/thunder-110/p/9340279.html
Copyright © 2011-2022 走看看