日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CF374 Maxim and Array

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF374 Maxim and Array 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

貪心
如果有0先變成非0
如果負數的個數 應該變為偶數
之后就是每次將絕對值最小的值加K

#include<bits/stdc++.h> using namespace std; const int MAXN = 2e5+5; typedef long long ll;int N,K,X; ll A[MAXN]; int tag[MAXN]; struct Node{ll x; int id;Node(ll a=0, int b=0):x(a),id(b){}bool operator <(const Node &T) const {return x > T.x;} }; ll Abs(ll x) {if(x < 0) x *= -1;return x; } void doo(int id,ll num) {if(A[id] > 0) A[id] += num;else A[id] -= num; } priority_queue<Node> Q; int main(){while(~scanf("%d %d %d",&N,&K,&X)) {memset(tag,0,sizeof(tag));while(!Q.empty()) Q.pop();// int c1 = 0; int c2 = 0; int c3 = 0; // pos zero negfor(int i = 1; i <= N; ++i) {scanf("%lld",&A[i]);Q.push(Node(Abs(A[i]), i));}for(int i = 1; i <= N; ++i) {if(A[i] < 0) c3 ++; }while(K) {ll x = Q.top().x; int id = Q.top().id;Q.pop();if(x == 0) {if(~c3&1) {A[id] = -X;c3 ++;}else {A[id] = X; }}else if(~c3&1){ll tt = (x+X)/X; if(tt > K) {doo(id, -1ll*K*X);break;}else {doo(id,-1ll*tt*X); K -= tt; K++;}c3 ++;}else {doo(id,X);} // printf("%d %lld\n",id,A[id]);Q.push(Node(Abs(A[id]),id)); K--;}for(int i = 1; i <= N; ++i) printf("%lld ",A[i]); printf("\n");}return 0; }

轉載于:https://www.cnblogs.com/Basasuya/p/8433742.html

總結

以上是生活随笔為你收集整理的CF374 Maxim and Array的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。