2019/11/5 考试总结

2019/11/5 爆零总结

T1
大概就是一个打牌的过程,你有 n n n种兵符,对手有 m 1 m1 m1种御符和 m 2 m2 m2种兵符,给出每种符的能力值和数量,你为进攻方,你的兵符只对能量值相同或更小的有作用,打御符时不得分,打兵符时得分为能力值之差,御符全部清除后可以直接走脸,得分为你的兵符的能力值,最大化你的得分
其实这就是一个贪心,考虑先打兵还是先破防,不过细节贼多,而且还有负数,巨坑……

T2
题面描述太长了,大概就是给你一张图对边进行黑白染色,求使得一个边集合包括两种颜色的边,且图联通,求使得最小的集合的边权和 = X =X =X的方案数
考场上没有看出题意,没想到跟 m s t mst mst有关(主要是题读错了),其实存在一个结论——对于一张图的最小集合,其仅与 m s t mst mst有一条边的差别
然后就考虑计算答案:
m s t mst mst的权值和为 s u m sum sum
分3种情况
1. s u m > X sum>X sum>X 答案为 0 0 0
2. s u m = X sum=X sum=X 倍增求出路径上边权最大值,求出与 m s t mst mst替换后 s u m sum sum不变的边数 c n t 1 cnt1 cnt1,对于这些边,我们需要使其至少有一条边与 m s t mst mst边颜色不同,于是可以算不合法的情况
a n s = 2 m − 2 m − ( n − 1 ) − c n t 1 ∗ 2 ans=2^m-2^{m-(n-1)-cnt1}*2 ans=2m2m(n1)cnt12
3. s u m < X sum<X sum<X 倍增同上,求出与 m s t mst mst替换后 s u m = X sum=X sum=X的边数 c n t 1 cnt1 cnt1 s u m > X sum>X sum>X的边数 c n t 2 cnt2 cnt2 m s t mst mst的边颜色显然相同,所以那 c n t 1 cnt1 cnt1条边至少有一条与 m s t mst mst颜色不同,剩下的那 c n t 2 cnt2 cnt2条边是可以随便选颜色的
a n s = 2 ∗ ( 2 c n t 1 − 1 ) ∗ 2 c n t 2 ans=2*(2^{cnt1}-1)*2^{cnt2} ans=2(2cnt11)2cnt2

T3
太复杂了Orz
给定一个模式串,和一个某些位置未知(可为 0 − 9 0-9 09,以 ? ? ?形式读入)的串,求模式串在该串中至少出现一次的第k小串
考场上肝这道题太久,浪费了很多时间,其实可以再去看看T2,做法很好想但是不是很好写,我直接扔题解了
d p [ i ] [ j ] dp[i][j] dp[i][j]表示前 i − 1 i − 1 i1位已经确定,并且匹配了 m m m的一个长度为j的前缀
时,第 i i i位到第 n n n位有多少种合法的填数方案.
询问时可以通过 d p dp dp数组依次确定 S S S每一位的值,复杂度 O ( n ) O(n) O(n),需要一些优化.
如果状态 v v v由状态 u u u转移而来,我们称 u u u v v v的后继.
类似树的重链剖分,对于每个状态,我们取其所有后继中 d p dp dp值最大的一个作为重
后继(有多个取字典序最小的),倍增求出每个状态沿着重后继走 2 k 2^k 2k步之后到达的状态,以及这两个状态之间的相对排名.
复杂度 O ( n m l o g n + q l o g k l o g n ) . O(nmlogn + qlogklogn). O(nmlogn+qlogklogn).

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值