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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【JZOJ4835】【GDOI2017模拟10.31】量化交易

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JZOJ4835】【GDOI2017模拟10.31】量化交易 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

數據范圍

解法

貪心;
從左往右枚舉,設枚舉到元素為x,并維護一個堆:
設此時堆頂元素為y,
如果x大于y,那么x可以與y產生差價,立即將差價貢獻給答案。
如果y之前已經和其他元素z產生過差價了,那么y顯然可以省出來以得到最優答案,因為x-z=x-y+y-z;
否則,把y移出堆。

代碼

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define ll long long #define sqr(x) ((x)*(x)) #define ln(x,y) ll(log(x)/log(y)) using namespace std; const char* fin="trade.in"; const char* fout="trade.out"; const ll inf=0x7fffffff; const ll maxn=100008; ll n,i,j,k,v=0,ans,t; ll a[maxn],son[maxn]; struct dui{ll data[maxn],num;void init(){memset(data,0,sizeof(data));num=0;}dui(){init();}bool cmp(ll v,ll u){return a[v]<=a[u];}void up(ll x){while (x>1 && cmp(data[x],data[x/2])) swap(data[x],data[x/2]),x=x/2;}void down(ll x){while (x*2<=num && cmp(data[x*2],data[x]) || x*2+1<=num && cmp(data[x*2+1],data[x])){if (x*2+1>num || cmp(data[x*2],data[x*2+1])){swap(data[x],data[x*2]);x=x*2;}else{swap(data[x],data[x*2+1]);x=x*2+1;}}}void push(ll v){data[++num]=v;up(num);}void pull(){swap(data[1],data[num--]);down(1);}ll top(){if (num) return data[1];else return 0;} }d; ll read(){ll x=0,y=0;char ch=getchar();while (ch<'0' || ch>'9') {ch=getchar();y++;if (y==10) return -1;}while (ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return x; } int main(){freopen(fin,"r",stdin);freopen(fout,"w",stdout);while (1){n=read();if (n==-1) break;ans=0;t++;d.init();for (i=1;i<=n;i++) a[i]=read();memset(son,0,sizeof(son));for (i=1;i<=n;i++){if (d.top()){j=d.top();if (a[i]>a[j]){ans+=a[i]-a[j];if (son[j]){son[j]=0;son[i]=j;}else {d.pull();son[i]=j;}}}d.push(i);}printf("Case #%lld: %lld\n",t,ans);}return 0; }

啟發

有關策略的問題可以考慮貪心;
貪心正著推,可以使用數據結構幫助貪心找到更優的解。

轉載于:https://www.cnblogs.com/hiweibolu/p/6714859.html

總結

以上是生活随笔為你收集整理的【JZOJ4835】【GDOI2017模拟10.31】量化交易的全部內容,希望文章能夠幫你解決所遇到的問題。

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