07 2019 档案

摘要:【题目链接】 【思路】: 涉及到树上区间修改操作,所以使用树链剖分,涉及到区间查询,所以使用线段树。 update操作时,就正常操作,难点在于query操作的计数。 因为树链剖分的dfs序只能保证一条重链上的dfn[]连续,不能使得任意两点之间简单路径上的dfn[]连续,所以当x往上跳到fa[top 阅读全文
posted @ 2019-07-23 11:02 CoffeeCati 阅读(161) 评论(0) 推荐(0)
摘要:#include using namespace std; typedef long long ll; struct Point{ ll x, y; Point( ll x=0, ll y=0 ): x(x), y(y){} }; typedef Point Vector; Point p[5]; Vector operator -(const Vector a, cons... 阅读全文
posted @ 2019-07-19 10:44 CoffeeCati 阅读(1321) 评论(5) 推荐(0)
摘要:【题目链接】 【思路】: 根据题意可以明显看出,当所有任务都完成时的时间是最终的结果,也就是说本题要求,求出最小的最大值。 那这样的话就暗示了将答案二分,进行check。 【check方法】: 如果说当前答案为ans,每个任务设为p[i],所花费的时间是p[i].tim,所有任务p[i].tim的最 阅读全文
posted @ 2019-07-13 16:48 CoffeeCati 阅读(189) 评论(0) 推荐(0)
摘要:【题意】: 有N个结点M条边的图,有Q次操作,每次操作在点x, y之间加一条边,加完E(x, y)后还有几个桥(割边),每次操作会累积,影响下一次操作。 【思路】: 先用Tarjan求出一开始总的桥的数量,然后求边双联通分量并记录每个结点v所属的连通分量号c[v],之后进行缩点,将每个双联通分量作为 阅读全文
posted @ 2019-07-12 16:43 CoffeeCati 阅读(190) 评论(0) 推荐(0)
摘要:乍一看题意比较麻烦,好像要删点求联通性,但其实是相当于求以某一个节点为根时,他的所有后代(儿子,儿子的儿子等等)的儿子的总和最大。 两边dfs即可,第一遍dfs随便找一个点为根,求出每个节点的儿子数siz[],第二遍dfs以每个点作为根更新ans。 这里注意:如果u为根,u是v的父亲,且此时u后代的 阅读全文
posted @ 2019-07-10 16:38 CoffeeCati 阅读(221) 评论(0) 推荐(0)
摘要:【题意】: 有N个房间,M条有向边,问能否毫无顾虑的随机选两个点x, y,使从①x到达y,或者,②从y到达x,一定至少有一条成立。注意是或者,不是且。 【思路】: 先考虑,x->y或者y->x是什么意思,如果是且的话就简单了,就直接判断整个图是不是强联通图即可,但是这道题是或,那么可以随手画出一个D 阅读全文
posted @ 2019-07-10 15:18 CoffeeCati 阅读(189) 评论(0) 推荐(0)
摘要:题意: 有n个圆,每个圆的中心和半径和一个频率都给定,只有一个频率最高的789为紫色,只有一个最低的400为红色,规则如下: 1.当两个圆严格相交时,且人是从红色到紫色的方向运动时可以由低频率向高频率移动 2.当两个圆严格相交时,且人是从紫色到红色的方向运动时可以由高频率向低频率运动 3.除了红色的 阅读全文
posted @ 2019-07-06 17:39 CoffeeCati 阅读(179) 评论(0) 推荐(0)