Winniechen’s test1

https://winniechen.cn/wp-content/uploads/2018/08/Winniechens_test_1.rar

放水练习赛,主要考察最短路,DP,状态压缩等知识点

题解:

T1 公平

部分分我就不说了,反正题也不难,直接说正解吧。建图,跑K次最短路求出到每个节点这K种物品的最短路。之后,每个点用一个堆,取前S大即可!

Codeforces 986 A Fair

T2 寻宝游戏

这个题是一个非常棒的DP,我们可以这样设:f[i][j][k][l]表示走到j,使用了K次机会,还有l个库存,每次跨行转移的时候,O(n)统计从第i行,j+1到n和第i+1行1到j-1选择多少个交换即可。之后不跨行转移直接转移即可。

总时间复杂度  O(n^3K^2) 

lydsy05 T2 BZOJ 5359

T3 分裂

这个题很好啊,比起什么裸的状压DP高多了!

我们可以考虑,什么时候答案最大:全合并,之后再分裂

这样,我们必定可以得到答案,也就是说答案必定小于n+m

那么我们可以考虑,什么时候能够使答案更小:就是n中去一些,m中取一些,它们的和相等的时候,ans-=2;

这样,我们就可以考虑状态f[S][s]表示,在n中取状态S,m中取状态s的最多和相等部分

之后转移可以从f[S-1<<i-1][s]或者f[S][s-1<<i-1]转移,之后判断sum[S]和sum[s]是否相等,相等f[S][s]+=2;

最后答案为n+m-f[(1<<n)-1][(1<<m)-1];

时间复杂度  O(n*2^{n+m}) 

BZOJ 2064

转载于:https://www.cnblogs.com/Winniechen/p/9525829.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值