BIT training short round #1 summary

BIT 校赛 2.5h场第一场总结

  • solved 5/6 , rk 5

我又来送罚时辣(11发)

流程

其实是在各个 CF 赛中选的原题,我 B,C 题做过写过,E 题看过思路。写起来就得心应手了。这里只说 D,E 题的拉跨历程。

D 题最开始想的是一棵树,不构成树无解,但样例 1 就错了。再仔细一想是个二分类问题,每个车有朝左朝右,于是就想 2-sat 去了,但是忘了咋写了......最后才想到二分图。最后跑拓扑偏序时判环又写错了,nm。

E 题我还看过原,写这么久,挂这么多发!大部分时间用在求欧拉路上了,一直想不到不用建图的做法(其实有)。最后偶数图还忘删边了,本地机跑大数据还爆栈了,还以为写挂了......

F 好高深的题。

部分题解

D - Cars

题目链接

一个性质:有要求的车方向必须相对,同相而行的车不满足任何性质。

由这个性质我们可以构造二分图来确定车的朝向。

接着根据题目的限制,例如:若两车分别朝右,朝左,要求相遇,则前者的位置必须在后者的前面。这就确定了偏序关系,建有向图跑拓扑序就行,要注意判断该图是否有环。

E - Turtle and Multiplication

题目链接

我们设不同的数字有 n 种,假设不存在两对不同的数字使得乘积一样,那最多可以写出 (n2)+nn22[n mod 2=0]+1 个数字,前者是满图的欧拉回路长度,同时要去掉偶数的情况,需要删掉 (2,3),(4,5)(n2,n1) 这些边以使得存在欧拉回路。

为了满足我们的假设,n 种数用质数就行,筛一遍发现质数数量是够的,最大的 n 需要 103 左右个质数。

那求欧拉回路就行了。

F - Game of Questions

题目链接

很厉害的题。

每道题只能出现一次的限制比较麻烦,但其实一道题选完后,在后来的任何时刻再选这道题不会对选手产生任何影响,因为不会做的已经被淘汰了,会做的还是会做。因此我们不需要记录哪些题目被使用了。

我们设 fS 表示当前剩余 S 集合的选手,Alice 最终能胜出的概率,答案就是 f2m1

随着题目推进,当前选手集合会逐渐取其子集,这启示我们从子集进行转移。

考虑转移,对于一个问题 ai ,从 fs 可以转移到 fs&ai。把这些问题合并起来,设 gs,t 表示将 s 状态变成 t 状态的问题数量,有转移:

fs=tsgs,tftngs,sgs,0

即:分母为能将 s 改变的问题数,随机选择一个问题进行转移。

现在我们求 gs,t :对于 s 二进制为 0任意一个位置 x,有 gsx,t>gs,tgsx,tx>gs,t。注意无论 x 选哪个位置都是等价的。直接转移是 O(3m)

复杂度为 O(3m)

用多项式好像可以优化到 O(m22m) , 回头来补一下。

posted @   蒻蒻虫  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示