zoukankan      html  css  js  c++  java
  • ZROI 19.08.06模拟赛

    传送门

    写在前面:为了保护正睿题目版权,这里不放题面,只写题解。


    今天正睿又倒闭了,从删库到跑路。 天祺鸽鸽txdy!


    • A

    “不要像个小学生一样一分钟就上来问东西。”——蔡老板

    虽然配图确实很有迷惑性。

    所以读题不仔细,爆零两行泪。

    “这题也就NOIP第二题难度吧。”——R爷

    (30pts:)

    显然的暴力,读懂题意之后(O(w imes h))模拟即可。

    (100pts:)

    每根短棍的效果在于交换相邻数。所以最后一定仍是个排列。

    可以默认每个位置都要交换,拆掉某根短棍就等价于换回来。

    从某个位置出发,只看位置不看标号,球的轨迹是确定的,可以每次修改时(O(1))算。

    交换时只换标号,找标号时只按出发时的位置考虑。

    代码很短,然而(7)行的东西我写+拍了(2.5h),菜死了。

    标算是treap,那我岂不是把标算踩了

    R爷的考场策略:(15min)内写完treap,调试(15min),大概半小时就能过掉了。R爷nb!


    • B

    (100pts:)

    显然答案为(2^x),其中(x)为两个人路径分开的段数。

    发现两个人的路径是等长的,可以让两个人同步行动。

    对于两个人的路径重合的部分可以简单判断。

    否则不妨设(y_1<y_2),即第一个人在第二个人上面。

    显然第二个人上面的区块是不会被第二个人走到的,必须由第一个人走到。因此直接通过上面的行的黑块数即可判断第一个人下一步走到哪里。第二个人同理。

    按照题意模拟即可,复杂度(O(Tn))


    • C

    “我想做个良心出题人,因此开了标算(20)倍时限。”——R爷

    然后钱爷爷分块bitset直接*过去了,tqlwsl

    (10pts:)

    直接模拟,暴力dfs算每个人的信息。

    (40pts:)

    对于(Q=1)的询问,可以倒过来做dfs,求一条信息最晚什么时候到某个点上,使得这条信息可以传到目标点。

    对于一条边((x,y)),设一条信息最晚(t)时刻到(y)是合法的,考虑什么时候到(x)才合法。显然是(t)之前的这条边最晚开着的时刻。

    复杂度(O(Q(n+m)))

    (60pts:)

    对于一条链的情况,每个点一定收到了一个区间的信息,线段树维护能覆盖每个点的最左最右端点即可。

    (100pts:)

    Sol1:

    考虑点分治,求经过重心的点的贡献。按深度建线段树,子树直接线段树合并即可。算出每条信息第一次到重心的时间,再从重心推下去即可。

    注意会算重,需要对每个子树减去自己的贡献。复杂度(O(nlog^2 n)),需要卡常。

    Sol2:

    一条边断开之前,整个连通块信息都是完全相同的。

    而且对于一棵树,断开的边在重新连上之前,两边的信息是不可能沟通的。

    对每条边记录断开时的连通块信息总数,再合并时直接加上两边,减去之前记录的权值即可。正确性显然。

    LCT维护,复杂度(O(nlog n))这做法好显然啊,再给我一个小时没准我就过了

    注:Sol1是原题std,Sol2是R爷发现的,爆踩了原题标算。R爷tql!

  • 相关阅读:
    #Leetcode# 700. Search in a Binary Search Tree
    很多很多书上代码
    #Leetcode# 104. Maximum Depth of Binary Tree
    #Leetcode# 12. Integer to Roman
    PAT-2018年冬季考试-乙级
    PAT 1035 插入与归并
    PAT 1058 选择题
    PAT 1052 卖个萌
    CodeForces Round #521 (Div.3) E. Thematic Contests
    2017Nowcoder Girl初赛重现赛
  • 原文地址:https://www.cnblogs.com/suwakow/p/11375083.html
Copyright © 2011-2022 走看看