正向推导出贪心推公式排序的结论

方法总结

(1)假设结论为按照规则ff排序,其相反结论为!f!f
(2)假设先按照!f!f排序,再按照ff对序列元素ai,ai+1a_i,a_{i+1}进行调整,得到关系g(ai,ai+1)g(a_i,a_{i+1})
(3)再由gg化简推导出!f!f,其相反结论即为ff

例题1 国王游戏

分析

设大臣ii左右手数字分别为li,ril_i,r_i,

假设按照!f!f排序,

ii个大臣和第i+1i+1个大臣的奖赏为l1l2li1ri\frac{l_1l_2…l_{i-1}}{r_i},l1l2liri+1\frac{l_1l_2……l_{i}}{r_{i+1}},

按照ff调整后得到l1l2li1ri+1\frac{l_1l_2……l_{i-1}}{r_{i+1}},l1l2li1li+1ri\frac{l_1l_2……l_{i-1}l_{i+1}}{r_i},

因为ff为正确结论,则必有调整后的最大值小于调整前的最大值,

即关系g:max(l1l2li1ri,l1l2liri+1)>max(l1l2li1ri+1,l1l2li1li+1ri)g:max(\frac{l_1l_2……l_{i-1}}{r_i},\frac{l_1l_2……l_i}{r_{i+1}})>max(\frac{l_1l_2……l_{i-1}}{r_{i+1}},\frac{l_1l_2……l_{i-1}l_{i+1}}{r_i}),

化简得g:max(ri+1,lrrr)>max(ri,li+1ri+1)g:max(r_{i+1},l_rr_r)>max(r_i,l_{i+1}r_{i+1}),

可以推导出liri>li+1ri+1l_ir_i>l_{i+1}r_{i+1},即为!f!f,

其相反结论f:liri<li+1ri+1f:l_ir_i<l_{i+1}r_{i+1}

所以本题方法为按照liril_ir_i从小到大排序。

python代码

1
2
3
4
5
6
7
8
9
10
11
12
n=int(input())
w=[]
for i in range(n+1):
a,b=map(int,input().split())
w.append((a,b))
w=[w[0]]+list(sorted(w[1:],key=lambda x:(x[0]*x[1])))
res=0
s=w[0][0]
for i in range(1,n+1):
res=max(res,s//w[i][1])
s*=w[i][0]
print(res)

例题2 耍杂技的牛

设奶牛ii体重和强壮程度分别为wi,siw_i,s_i,

假设按照!f!f排序,

ii个奶牛和第i+1i+1个奶牛的风险值为w1+w2+wi1siw_1+w_2…+w_{i-1}-s_i,w1+w2+wisi+1w_1+w_2…+w_i-s_{i+1},

按照ff调整后得到w1+w2+wi1si+1w_1+w_2…+w_{i-1}-s_{i+1},w1+w2+wi1+wi+1siw_1+w_2…+w_{i-1}+w_{i+1}-s_i,

因为ff为正确结论,则必有调整后的最大值小于调整前的最大值,

即关系g:max(w1+w2+wi1si,w1+w2+wisi+1)>max(w1+w2+wi1si+1,w1+w2+wi1+wi+1si)g:max(w_1+w_2…+w_{i-1}-s_i,w_1+w_2…+w_i-s_{i+1})>max(w_1+w_2…+w_{i-1}-s_{i+1},w_1+w_2…+w_{i-1}+w_{i+1}-s_i),

化简得g:max(si+1,wi+si)>max(si,wi+1+si+1)g:max(s_{i+1},w_i+s_i)>max(s_i,w_{i+1}+s_{i+1}),

可以推导出wi+si>wi+1+si+1w_i+s_i>w_{i+1}+s_{i+1},即为!f!f,

其相反结论f:wi+si<wi+1+si+1f:w_i+s_i<w_{i+1}+s_{i+1}

所以本题方法为按照wi+siw_i+s_i从小到大排序。

python代码

1
2
3
4
5
6
7
8
9
10
11
12
n=int(input())
cow=[]
for i in range(n):
w,s=map(int,input().split())
cow.append((w,s))
cow.sort(key=lambda x:(x[0]+x[1]))
suma=0
res=-float('inf')
for i in range(n):
res=max(res,suma-cow[i][1])
suma+=cow[i][0]
print(res)
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 Shiki
  • Visitors: | Views: