jzoj5043 保持平衡 資料結構

2021-07-30 03:56:12 字數 1185 閱讀 8131

博愛路上種起了一棵棵的大樹,但是有一些地方的樹超過了負荷,有一些地方的樹的數量又不夠。

我們不妨把博愛路看做一條數軸,數軸有n個點,從1到n編號,第i個位置原來現在有ai棵樹,這個位置的需求是bi棵樹。ai,bi都是0到10的整數。由於你需要是這個位置的樹的數量保持平衡,所以你需要移除或者搬一些樹過來。

我們怎麼使樹的數量平衡呢?

首先,你可以從某個位置i移動一棵樹到位置j,這時,你需要的運費是|i-j|*z元。

其次,你可以從商店買一棵樹,需要支付x元,這時商店會把樹配送到任意位置。

還有就是,你可以叫別人收購在任意位置一棵樹,需要支付y元運費。

問使得樹的數量平衡最小需要支付多少錢?考慮往右移移的情況,要運走的點,可以花y的費用運走,為了將來可以反悔,我們把-花費-i*z扔進noneed的小根堆。到了需求的點我們可以查詢noneed看是否反悔,花費為最小值加i*z。

考慮左移的情況,只需在去最優值的時候相反地考慮即可。

#include

#include

#include

#include

#include

#define lf double

#define ll long long

#define min(a,b) ((a#define max(a,b) ((a>b)?a:b)

#define fo(i,j,k) for(int i=j;i<=k;i++)

#define fd(i,j,k) for(int i=j;i>=k;i--)

#define fr(i,j) for(int i=begin[j];i;i=next[i])

using

namespace

std;

intconst mxn=2*1e5+9,mxm=16*1e5+9,inf=1e9;

int n,x,y,z;

multiset

need,noneed;

int main()else tmp=x;

ans+=tmp;

need.insert(-i*z-tmp);}}

if(ai>bi)else tmp=y;

ans+=tmp;

noneed.insert(-i*z-tmp);}}

}printf("%lld",ans);

return

0;}

504 七進製數

題目描述 給定乙個整數,將其轉化為7進製,並以字串形式輸出。示例 1 輸入 100 輸出 202 示例 2 輸入 7 輸出 10 注意 輸入範圍是 1e7,1e7 方法1 主要思路 1 首先確定輸入值的絕對值,然後對絕對值使用 7 進行分解,將分解後的得到的字串,根據原來數字的正負,決定是否在字串的...

nginx http post請求返回504報錯

http post請求後,返回訊息碼為504 504錯誤代表閘道器超時 gateway timeout 是指伺服器作為閘道器或 但是沒有及時從上游伺服器收到請求。伺服器 不一定是 web 伺服器 正在作為乙個閘道器或 來完成客戶 如您的瀏覽器或我們的 checkupdown 機械人 訪問所需 的請求...

nginx tomcat報504超時錯誤

1.今天nginx tomcat報504超時錯誤?1.專案本地不用nginx訪問沒問題 2.今天以前訪問也沒問題 2.nginx配置的有問題了?1.我的nginx以及其他的比如mysql等,都是使用了oneinstack安裝的,預設都做了優化 2.搜尋了一大推 nginx 504 gateway t...