如果
(
d
1
[
s
−
2
]
+
d
1
[
s
−
1
]
+
d
1
[
s
]
)
/
3
<
d
2
[
s
−
1
]
(d1[s-2]+d1[s-1]+d1[s])/3<d2[s-1]
(d1[s−2]+d1[s−1]+d1[s])/3<d2[s−1],说明第
s
s
s天的菜价低了,达不到第
s
−
1
s-1
s−1天的平均数
如果
(
d
1
[
s
−
2
]
+
d
1
[
s
−
1
]
+
d
1
[
s
]
)
/
3
=
=
d
2
[
s
−
1
]
(d1[s-2]+d1[s-1]+d1[s])/3==d2[s-1]
(d1[s−2]+d1[s−1]+d1[s])/3==d2[s−1],说明第
s
s
s天的菜价合适,符合题目要求
枚举时希望
(
d
1
[
s
−
2
]
+
d
1
[
s
−
1
]
+
d
1
[
s
]
)
/
3
=
=
d
2
[
s
−
1
]
(d1[s-2]+d1[s-1]+d1[s])/3==d2[s-1]
(d1[s−2]+d1[s−1]+d1[s])/3==d2[s−1],左右乘
3
3
3后(考虑原式
/
3
/3
/3后的精度问题),
(
d
1
[
s
−
2
]
+
d
1
[
s
−
1
]
+
d
1
[
s
]
)
=
=
3
∗
d
2
[
s
−
1
]
+
i
,
(
i
是
0
,
1
,
2
中
的
一
个
)
(d1[s-2]+d1[s-1]+d1[s])==3*d2[s-1]+i,(i是0,1,2中的一个)
(d1[s−2]+d1[s−1]+d1[s])==3∗d2[s−1]+i,(i是0,1,2中的一个),移向后得到
d
1
[
s
]
=
3
∗
d
2
[
s
−
1
]
−
d
1
[
s
−
2
]
−
d
1
[
s
−
1
]
+
i
d1[s]=3*d2[s-1]-d1[s-2]-d1[s-1]+i
d1[s]=3∗d2[s−1]−d1[s−2]−d1[s−1]+i,将
i
i
i分别枚举
0
,
1
,
2
0,1,2
0,1,2即可
d
1
[
n
o
w
]
d1[now]
d1[now]的取值会受到
d
1
[
n
o
w
−
2
]
、
d
1
[
n
o
w
−
1
]
d1[now-2]、d1[now-1]
d1[now−2]、d1[now−1]的影响。如果在DFS中出现了
d
1
[
n
o
w
−
2
]
、
d
1
[
n
o
w
−
1
]
、
d
1
[
n
o
w
]
d1[now-2]、d1[now-1]、d1[now]
d1[now−2]、d1[now−1]、d1[now]已经遍历过的时候,则不需要再继续遍历
用
b
o
o
l
bool
bool型数组
v
i
s
[
s
]
[
d
1
[
s
−
1
]
]
[
d
1
[
s
−
2
]
]
vis[s][d1[s-1]][d1[s-2]]
vis[s][d1[s−1]][d1[s−2]]记忆当前位置放
s
s
s,左边第一个数放
d
1
[
s
−
1
]
d1[s-1]
d1[s−1],左边第二个数放
d
1
[
s
−
2
]
d1[s-2]
d1[s−2]。
构造不等式组:
b
[
i
]
=
(
a
[
i
−
1
]
+
a
[
i
]
+
a
[
i
+
1
]
)
/
3
b[i]=(a[i-1]+a[i]+a[i+1])/3
b[i]=(a[i−1]+a[i]+a[i+1])/3等式两边同
∗
3
*3
∗3后得:
3
b
[
i
]
+
0
/
1
/
2
=
a
[
i
−
1
]
+
a
[
i
]
+
a
[
i
+
1
]
3b[i]+0/1/2=a[i-1]+a[i]+a[i+1]
3b[i]+0/1/2=a[i−1]+a[i]+a[i+1],转化为不等式为
3
b
[
i
]
≤
a
[
i
−
1
]
+
a
[
i
]
+
a
[
i
+
1
]
≤
3
b
[
i
]
+
2
,
i
≥
2
3b[i] \le a[i-1]+a[i]+a[i+1] \le 3b[i]+2,i \ge 2
3b[i]≤a[i−1]+a[i]+a[i+1]≤3b[i]+2,i≥2
在端点处的特殊情况:
2
b
[
1
]
≤
a
[
1
]
+
a
[
2
]
≤
2
b
[
1
]
+
1
,
2
b
[
n
]
≤
a
[
n
−
1
]
+
a
[
n
]
≤
2
b
[
n
]
+
1
2b[1] \le a[1]+a[2] \le 2b[1]+1,2b[n] \le a[n-1]+a[n] \le 2b[n]+1
2b[1]≤a[1]+a[2]≤2b[1]+1,2b[n]≤a[n−1]+a[n]≤2b[n]+1
记
s
[
i
]
=
a
[
1
]
+
a
[
2
]
+
.
.
.
+
a
[
i
]
,
s
[
0
]
=
0
s[i]=a[1]+a[2]+...+a[i],s[0]=0
s[i]=a[1]+a[2]+...+a[i],s[0]=0,将上述三组不等式转换为
{
3
b
[
i
]
≤
s
[
i
+
1
]
−
s
[
i
−
2
]
≤
3
b
[
i
]
+
2
,
i
≥
2
2
b
[
1
]
≤
s
[
2
]
−
s
[
0
]
≤
2
b
[
1
]
+
1
2
b
[
n
]
≤
s
[
n
]
−
s
[
n
−
2
]
≤
2
b
[
n
]
+
1
\left\{ \begin{aligned} 3b[i] \le s [i+1]-s[i-2] \le3b[i]+2,i\ge 2\\ 2b[1] \le s[2]-s[0] \le 2b[1]+1 \\ 2b[n] \le s[n]-s[n-2] \le 2b[n]+1 \end{aligned} \right.
⎩⎪⎨⎪⎧3b[i]≤s[i+1]−s[i−2]≤3b[i]+2,i≥22b[1]≤s[2]−s[0]≤2b[1]+12b[n]≤s[n]−s[n−2]≤2b[n]+1
保证最终结果为正数:
a
[
i
]
≥
1
⇒
s
[
i
]
−
s
[
i
−
1
]
≥
1
a[i] \ge 1\Rightarrow s[i]-s[i-1] \ge 1
a[i]≥1⇒s[i]−s[i−1]≥1