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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

推销员(codevs 5126)

發布時間:2024/7/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 推销员(codevs 5126) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述?Description

阿明是一名推銷員,他奉命到螺絲街推銷他們公司的產品。螺絲街是一條死胡同,出口與入口是同一個,街道的一側是圍墻,另一側是住戶。螺絲街一共有N家住戶,第i家住戶到入口的距離為Si米。由于同一棟房子里可以有多家住戶,所以可能有多家住戶與入口的距離相等。阿明會從入口進入,依次向螺絲街的X家住戶推銷產品,然后再原路走出去。阿明每走1米就會積累1點疲勞值,向第i家住戶推銷產品會積累Ai點疲勞值。阿明是工作狂,他想知道,對于不同的X,在不走多余的路的前提下,他最多可以積累多少點疲勞值。

輸入描述?Input Description

第一行有一個正整數N,表示螺絲街住戶的數量。
接下來的一行有N個正整數,其中第i個整數Si表示第i家住戶到入口的距離。數據保證S1≤S2≤…≤Sn<10^8。
接下來的一行有N個正整數,其中第i個整數Ai表示向第i戶住戶推銷產品會積累的疲勞值。數據保證Ai<10^3。

輸出描述?Output Description

輸出N行,每行一個正整數,第i行整數表示當X=i時,阿明最多積累的疲勞值。

樣例輸入?Sample Input

【樣例1】
5
1?2?3?4?5
1?2?3?4?5

【樣例2】
5
1?2?2?4?5
5?4?3?4?1

樣例輸出?Sample Output

【樣例1】
15
19
22
24
25

【樣例2】
12
17
21
24
27

數據范圍及提示?Data Size & Hint

1≤N≤100000
注:請用?scanf?輸入。

/*剛開始想了一個貪心思路,不知道對不對,然而真的就對了,只不過是O(n^2)的,TLE,然后用優先隊列優化就過了。貪心思路首先我們明確,找前i個住戶一定是在i-1的基礎上找的,具體方法是記錄當前我們最遠找到的村莊位置now,因為當你往回找和往前找時走的路程是不同的,對于now來說,我們有兩種決策,一種是向上找,一種是向下找,找到最大值加入ans,這樣是O(n^2)的方法。然而我們發現向上找的部分會隨now的變大而逐漸不浪費時間,向下找的部分則會重復找很多次,所以我們搞一個優先隊列,再記錄一個當前最遠的入隊元素位置from,每次當我們更新now時,就把from+1到now內的元素放入優先隊列,這樣我們在下一次向下找的時候就不用再循環一遍,而是直接從優先隊列中取頭元素就好了。 */ #include<cstdio> #include<iostream> #include<queue> #include<algorithm> #define M 100010 using namespace std; int n,ans; struct node {int v,pos;bool operator< (node x)const{return v<x.v;} };node a[M],b; priority_queue<node> q; int main() {scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i].pos);for(int i=1;i<=n;i++)scanf("%d",&a[i].v);b.v=0;b.pos=0;q.push(b);int now=0,from;for(int i=1;i<=n;i++){b=q.top();int mx=b.v,p=0;for(int j=now+1;j<=n;j++)if((a[j].pos-a[now].pos)*2+a[j].v>mx){mx=(a[j].pos-a[now].pos)*2+a[j].v;p=j;}if(p){b.pos=p;b.v=mx;from=now;now=p;q.push(b);for(int j=from+1;j<now;j++)q.push(a[j]);}node b=q.top();ans+=b.v;q.pop();printf("%d\n",ans);}return 0; } View Code

?

轉載于:https://www.cnblogs.com/harden/p/5811386.html

總結

以上是生活随笔為你收集整理的推销员(codevs 5126)的全部內容,希望文章能夠幫你解決所遇到的問題。

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