普及組2015 洛谷 P2672 推銷員

2021-08-30 02:39:22 字數 1345 閱讀 9209

題目:推銷員

思路:貪心。要取到最大的疲勞度只有兩種情況,一是全部取a最大的,二是取乙個遠的,再剩下的取a最大的。

先關於a對於住戶從大到小排序。

定義:

sums[i]:從i到i之後,a+

2*s的最大值

suma[i]:從1到i,2

*s的最大值

sum[i]

:從1到i的a之和

預處理出這三個陣列,列舉x。

考慮第一種情況,由於a是從大到小排過序的,所以答案就是 ∑i=

1xai

+2

×max⁡i

=1ns

i\sum\limits_^x a_i+2\times\max\limits_^ns_i

i=1∑x​

ai​+

2×i=

1maxn​

si​,也就是sum[x]+suma[x]。

第二種情況是∑i=

1x−1

ai

+max⁡i

=xn(

2×si

+ai)

\sum\limits_^ a_i+\max\limits_^n (2\times s_i+a_i)

i=1∑x−

1​ai

​+i=

xmaxn​

(2×s

i​+a

i​),即sum[x-1]+sums[x]。

所以 max(sum[x]+suma[x],sum[x-1]+sums[x]) 就是最終的答案

**:

#include

using

namespace std;

#define maxn 100000

#define read(x) scanf("%d",&x)

struct pair

pair

(int xx,

int yy)

bool

operator

<

(const pair& oth)

const};

int n;

pair a[maxn+5]

;int sums[maxn+5]

,suma[maxn+5]

;int sum[maxn+5]

;int

main()

for(

int i=

1;i<=n;i++

)for

(int i=

1;i<=n;i++

)for

(int i=

1;i<=n;i++

)return0;

}

洛谷P2672 NOIP2015普及組第四題

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

洛谷 P2672 推銷員

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

洛谷 P2672 推銷員

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