洛谷 P2672 推銷員

2021-07-24 06:46:59 字數 2164 閱讀 9803

阿明是一名推銷員,他奉命到螺絲街推銷他們公司的產品。螺絲街是一條死胡同,出口與入口是同乙個,街道的一側是圍牆,另一側是住戶。螺絲街一共有n家住戶,第i家住戶到入口的距離為si公尺。由於同一棟房子裡可以有多家住戶,所以可能有多家住戶與入口的距離相等。阿明會從入口進入,依次向螺絲街的x家住戶推銷產品,然後再原路走出去。

阿明每走1公尺就會積累1點疲勞值,向第i家住戶推銷產品會積累ai點疲勞值。阿明是工作狂,他想知道,對於不同的x,在不走多餘的路的前提下,他最多可以積累多少點疲勞值。

輸入格式:

第一行有乙個正整數n,表示螺絲街住戶的數量。

接下來的一行有n個正整數,其中第i個整數si表示第i家住戶到入口的距離。資料保證s1≤s2≤…≤sn<10^8。

接下來的一行有n個正整數,其中第i個整數ai表示向第i戶住戶推銷產品會積累的疲勞值。資料保證ai<10^3。

輸出格式:

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

輸入樣例#1:

5

1 2 3 4 5

1 2 3 4 5

輸出樣例#1:

15

1922

2425

輸入樣例#2:

5

1 2 2 4 5

5 4 3 4 1

輸出樣例#2:

12

1721

2427

【輸入輸出樣例1說明】

x=1:向住戶5推銷,往返走路的疲勞值為5+5,推銷的疲勞值為5,總疲勞值為15。

x=2:向住戶4、5推銷,往返走路的疲勞值為5+5,推銷的疲勞值為4+5,總疲勞值為5+5+4+5=19。

x=3:向住戶3、4、5推銷,往返走路的疲勞值為5+5,推銷的疲勞值3+4+5,總疲勞值為5+5+3+4+5=22。

x=4:向住戶2、3、4、5推銷,往返走路的疲勞值為5+5,推銷的疲勞值2+3+4+5,總疲勞值5+5+2+3+4+5=24。

x=5:向住戶1、2、3、4、5推銷,往返走路的疲勞值為5+5,推銷的疲勞值1+2+3+4+5,總疲勞值5+5+1+2+3+4+5=25。

【輸入輸出樣例2說明】

x=1:向住戶4推銷,往返走路的疲勞值為4+4,推銷的疲勞值為4,總疲勞值4+4+4=12。

x=2:向住戶1、4推銷,往返走路的疲勞值為4+4,推銷的疲勞值為5+4,總疲勞值4+4+5+4=17。

x=3:向住戶1、2、4推銷,往返走路的疲勞值為4+4,推銷的疲勞值為5+4+4,總疲勞值4+4+5+4+4=21。

x=4:向住戶1、2、3、4推銷,往返走路的疲勞值為4+4,推銷的疲勞值為5+4+3+4,總疲勞值4+4+5+4+3+4=24。或者向住戶1、2、4、5推銷,往返走路的疲勞值為5+5,推銷的疲勞值為5+4+4+1,總疲勞值5+5+5+4+4+1=24。

x=5:向住戶1、2、3、4、5推銷,往返走路的疲勞值為5+5,推銷的疲勞值為5+4+3+4+1,

總疲勞值5+5+5+4+3+4+1=27。

【資料說明】

對於20%的資料,1≤n≤20;

對於40%的資料,1≤n≤100;

對於60%的資料,1≤n≤1000;

對於100%的資料,1≤n≤100000。

哈哈,我才不會告訴你我第一次作這題,模擬了一天得了60分呢。

說正解吧,考慮貪心,對於選x個人,和選(x+1)個人,後一種一定是先選了x是的人,再選乙個沒有被選過的人。

沒有被選過的人分兩種情況,一種是要多走一段,另一種則不。

建兩個堆,分別維護兩種情況,時間複雜度是o(n*log(n))。

#include#include#includeusing namespace std;

const int n=100005;

int n,pos,ans,lst;

bool vis[n];

struct node

a[n];

struct cmp1

else

printf("%d\n",ans);

} return 0;

}

洛谷 P2672 推銷員

題目描述 阿明是一名推銷員,他奉命到螺絲街推銷他們公司的產品。螺絲街是一條死胡同,出口與入口是同乙個,街道的一側是圍牆,另一側是住戶。螺絲街一共有n家住戶,第i家住戶到入口的距離為si公尺。由於同一棟房子裡可以有多家住戶,所以可能有多家住戶與入口的距離相等。阿明會從入口進入,依次向螺絲街的x家住戶推...

洛谷 p2672 推銷員

推銷員 題目鏈結 好了為了湊字數先把題目複製一下 好了題解第一篇正解 首先輸入,莫得什麼好說的 scanf d n for int i 1 i n i scanf d a i s for int i 1 i n i scanf d a i v 然後是思路 對於每乙個x,我們有兩種選擇 選擇前x個a值...

洛谷 P2672 推銷員

阿明是一名推銷員,他奉命到螺絲街推銷他們公司的產品。螺絲街是一條死胡同,出口與入口是同乙個,街道的一側是圍牆,另一側是住戶。螺絲街一共有n家住戶,第i家住戶到入口的距離為si 公尺。由於同一棟房子裡可以有多家住戶,所以可能有多家住戶與入口的距離相等。阿明會從入口進入,依次向螺絲街的x家住戶推銷產品,...