¥贪心算法¥

组员:盛赞宇、陈隆铭、王浩宇、付骞煜、丁文淏

交换原则:每次贪心选出的答案,一定包含在全局最优解中

国王游戏
假如i,j相邻
i:k/r[i] j:kl[i]/r[j]
max(k/r[i],k
l[i]/r[i])<max(k/r[j],k*l[j]/r[i])
l[i]/r[i]>=1/r[j]

i在j前更优
i:max(pre,sum+ai)+bi
j:sum+ai+bj
max(max(pre,sum+ai)+bi,sum+ai+bj)+bj<max(max(pre,sum+aj)+bj,sum+aj+bi)+bi
max(sum+ai+bi+bj,sum+ai+aj+bj)
sum+ai+bi+bj-max()>sum+ai+bi+bj-max()
min(aj,bi)>min(ai,bj)

最大子矩阵
设dp[i]=以i结尾的最大子段和
if dp[i-1]>=0
dp[i]=dp[i-1]+a[i]
else dp[i]=a[i]

正向拓扑:求得上限
反向拓扑:求得下限

for i=1-k
if 以i作为下限&&之前没放过值
放i
else 找到点 上线最小&&未放值 放i

设1在2前放入a车间更优
a1+max(a2,b1)+b2<a2+max(a1,b2)+b1
min(a2,b1)>min(a1,b2)

ai>bi—ai升序
ai<bi—bi降序

vecbi> vec<ai

3 个赞

虽然我看不懂但大受震撼

1 个赞

太强了!

1 个赞

有我吗?

1 个赞