hdu KM小集(中低难度)

源自-------------------------------------Ice_Crazy


hdu2255

    KM模板题。




hdu3722
    KM模板题。




hdu3395
    KM水题。




hdu2448
    KM+最短路,不难,两部分都是果的。注意这句“ships are only allowed to sail between
mining stations which can communicate with each other directly.”




hdu3718
        假设用序列2中的字母A来和序列1中的字母C等效,那么可以有map[A][C]=count,count为
两个序列放在一起,情况1出现的次数。情况1:“set1[i]=='C' && set2[l]=='A' && i==l”。
        那么根据这个建图、KM就行了。




hdu2282
    巧克力和盒子,边就是每个巧克力到某个盒子的距离(注意盒子的摆放是环形的)。




hdu2426
    N!=M的KM。




hdu2853
    KM小变异。
    如果只是km的话很简单,但是还要尽量少移动,那么就有难度了囧~,用的是网上学来的方
法:
        每个边权值变为k倍(k>n),然后让原本已经match的那几条边边权+1,那么就加重了我
    们想尽量保持不变的边的权值。最后匹配完后的sum/k就是总匹配出来的结果,而sum%k就是
    没有被删除的原有组合。




hdu1853
    KM小变异
    看到这题的第一反应不是用KM,但是有人用KM干掉呀,所以我就想为什么可以用KM呀,然后
就想到了呀:如果KM整出了完美匹配,那么对于每个node,有:“有进有出”,所以自然就有环了~,
so~,KM可行~。




hdu3488
    KM小变异,和hdu1853同一题。




hdu3435
    KM小变异,和上面俩题(hdu1853、hdu3488)是同一题,只不过这个题中边是无向的。




hdu1533
    KM小变异,求最小匹配。
    两种方法:
    一. 我们了解了KM求最大匹配的原理了,那么把算法稍微修改一下,让算法求最小匹配。:

    二. 但是第一种方法多多少少还是有点儿麻烦呢,那怎么办呢?我们不妨来《修改数据》,
让权值最小的边变为权值最大的边,依次类推,不就ok了么~。
    我的选择是,将所有边的权值乘上-1,然后加上k(k>=MAX(abs(边权)))。
    原创----------------------------Ice_Crazy。
    当然这想法还是挺容易想到的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值