洛谷 P1311 【选择客栈】

本文介绍了一种算法,通过枚举方法计算咖啡店两侧同色客栈的对数,利用前缀和与后缀和技巧优化计算过程,提高了效率。

枚举在那个咖啡店喝咖啡

想要计算咖啡店两侧同色的客栈的对数

枚举i求和(左边第i种颜色的个数*右边第i种颜色的个数)

前缀和+后缀和

f[i][j]f[i][j]f[i][j]表示到第i家客栈及之前颜色为j的客栈有几个

f[i][j]=f[i−1][j]+(color[i]==j)f[i][j]=f[i-1][j]+(color[i]==j)f[i][j]=f[i1][j]+(color[i]==j)

g[i][j]g[i][j]g[i][j] 表示到第i家客栈及之后颜色为j的客栈有几个

g[i][j]=g[i+1][j]+(color[i]==j)g[i][j]=g[i+1][j]+(color[i]==j)g[i][j]=g[i+1][j]+(color[i]==j)

假设当前客栈咖啡店消费<=p 当前位置为i 颜色为x

sigma(f[i−1][j]∗g[i+1][j])+f[i−1][x]+g[i+1][x]sigma( f[i-1][j]*g[i+1][j] )+f[i-1][x]+g[i+1][x]sigma(f[i1][j]g[i+1][j])+f[i1][x]+g[i+1][x]

转载于:https://www.cnblogs.com/ShineEternal/p/10834319.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值