Codeforces MemSQL start[c]up Round 1

来源:互联网 发布:广州qt场及js汇总 编辑:程序博客网 时间:2024/05/16 09:51

A
Square and Rectangles

题意:给定5个不重叠的长方形,问是否组合成一个正方形。x,y范围10^5

先得到x,y的最大最小值
然后在这个范围内枚举 x ,判断每一个x的位置y是否完全覆盖,由于不相交,直接把包含这个x的长方形的y差值相加,判断是否和y最大值和最小值的差值相等。
trick: 漏判 x和y最大值和最小值的差值是否相等。

B
Stadium and Games

题意:给定n,求x,满足 x/2+x/4+x/8+..y + y*(y-1)/2。y为奇数,

枚举前面项数,不会超过61项,然后二分枚举y即可。

C
Monsters and Diamonds

题意:给定n个物品,每个物品能有至少一种拆分方式,拆分得到多个物品和至少1个钻石,求拆每一个物品直到不能拆为止得到的最少和最多钻石数量,无法拆完输出-1,可以得到无限多输出-2。

由于求得到最多钻石数量情况比求最少要多,先讨论求最少。
最短路,新增一个起点,起点的边为只拆分出钻石的拆分方案,u更新v时,找到u是拆分出来物品的拆分方案,比较此拆分方案的原物品v的值和拆分方案的值,更新原物品最小值以及v最为拆分出来物品的拆分方案。最后,无法到达的点即为无法拆完的物品。

求最大值dfs,那些最小值求出来为-1的点最大值也一定是-1,此外dfs到有拆分出来物品是可得到无线多时,自身也可得到无限多,dfs到环也是无限多,此外取拆分方案中最大的即可。

325D
Reclamation


题意:一个r*c的图,最左和最右是相邻的,原本没有障碍,现在一步步开始增加障碍,假如当前增加的障碍使从最上到最下不存在一条路经,则该障碍无法增加,问最后增加了几个障碍。r,c<=3000 障碍<=3*10^5

无法从最上走到最下,障碍一定形成了一条环形回路。
把图扩展成r*2*c,   增加(i,j)这个障碍时,同时增加(i,j+c),  假设从(i,j)到(i,j+c)存在一条路经,那就能表示有一条环形回路,判断存在路径使用并查集。