竞赛讨论区 > 【题解】牛客练习赛45
头像
lililalala
编辑于 2019-07-30 12:13
+ 关注

【题解】牛客练习赛45

A.QAQ

处理出‘Q’数量的后缀和,直接枚举'Q'和'A'计算即可。

B.Tic-Tac-Toe

暴力模拟。
方法是先枚举对Alice每个位置能否胜利,再枚举拿走每颗白子,并按照之前的方法验证即可。

C.Buy Fruits

构造。
时直接特判。
为奇数且不为时,可以证明解一定不存在:
关键点是序列中一定有一个,根据题意,只要走到的点就再也不能去到其他的点了(永远停留)。所以一个合理的解必须最后到达的点。
在到达的点的过程中,可以知道一共走了步。求和可得。由于为奇数,那么为偶数即能够整除,所以
这样就能知道如果有解一定要保证号点。但很明显不合要求,故这种情况下是没有解的。
为偶数时,依照上面证明方法仍可推出
有一种简单的构造方法:

D.Data Structure

是因为题目写了数据结构所以没人做了吗,还是都嫌弃这是码农题。我错了TAT。
暴力就可以。
考虑没有修改的情况,贪心的从高位开始对答案的每一位取,然后验证是否可以贪心的划分出段,可以则把该位置,否则置。这个过程时间复杂度是O(31*n)。
关于修改:
把所有的数或上一个数其实等价于把所有的数的中为的位锁定为中为的位不变;
把所有与数或上一个数其实等价于把所有的数的中为的位锁定为中为的位不变。
既然被锁定的位所有数的该位都是,那么答案的这些位一定同样是(与锁定的值相同),与如何划分无关,那么忽略已被锁定的位,直接按无修改的情况对剩余的位贪心,最后加上被锁定且是的位的贡献就是答案。
那么如果两次查询之间被锁定的位没有变化,那么直接用上次贪心的结果加上被锁定位的贡献即可。
由于只有个位,那么被锁定的位的集合最多只会变化次。所以最多只需要贪心的求解次。
总复杂度为O(31*31*n+31*q)

E.Pyramid

考虑没有禁着点的情况: 对点(x,y)如果n-x为偶数且y为奇数那么必败,否则必胜。
那么选取一个禁着点可以认为就是把一个点变为必胜点。 如果这个点之前是必胜点,那么不会产生任何影响。
如果这个点之前是必败点,那么会影响一个区间的胜负性。
这些点的正负性会被反转:
(x,y)(x-1,y)(x-2,y)…(y,y)
(y-1,y-1)
如果y不小于2,(1,y-2)(2,y-2)(3,y-2)…(y-2,y-2)
然后判断(1,1)的胜负性即可。

F.Magic Slab

最大权闭合子图。
每个格子一个正权点,权值为
每个行或列为一个负权点,权值为
从每个格子向它所在的行或列建有向边。
对于每条奖励,新建一个负权点,权值为然后把这条奖励对应的两个格子对应的点的点权分别加上从这两个格子向新建的负权点分别建一条有向边。
转化为最大流求解即可。

upd:
标程

全部评论

(4) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐