zoukankan      html  css  js  c++  java
  • 省选模拟13

    A. 同桌的你

      考试的时候大概一上来就会了,然而感觉非常麻烦,不想打。等到最后剩1个半小时的时候开始打,到最后也没调出来,非常自闭。

      不难发现将关系连边得到的是一棵基环树,所以可以考虑断掉环上任意一条边,然后分选择这条边和不选这条边分别做一次树形dp即可。

      对于输出方案,考虑记录转移的前驱,之后再dfs一遍输出答案。

    B. 大水题

      考虑枚举每一种颜色方案,将所有颜色的数量与第一种颜色的数量做差,那么区间[i,j]合法的条件是[1,i]和[1,j]差分之后相同,可以使用hash来完成这个过程。

      然而暴力的复杂度是$O(n*2^8*O(hash))$,听上去就很不对。

      所以考虑优化。

      对于一个确定的右端点,可能有贡献的方案只有8种,所以考虑只维护这8种方案。

      枚举右端点,在右端点右移的时候,找到当前右端点颜色的前驱,只需要修改这一段即可。

      复杂度均摊$O(8n*O(hash))$

    C. 佛罗里达

      考场上大概想到了40分的暴力做法,可是没有想到2-sat,以为并查集也能实现这些操作。

      考虑枚举其中一个集合的权值大小,对于另外一个集合权值显然可以二分,考虑如何检验是否存在合法解。

      将边按照与两个集合权值大小的关系分类,分别对应随便选,不同时选,选一个,是显然的2-sat模型,tarjan判断即可。

      考虑如何优化这个东西。

      求出来一棵最大生成树,那么生成树上的边一定可以作为集合的权值。

      否则,将树黑白染色,若某一条非树边连接了两个颜色不同的点,那么必然不是最大的。

      所以,集合的权值只能是树边或者全部为颜色相同的点时的贡献。

      枚举即可,$O(n^3logn)$

  • 相关阅读:
    洛谷 P5057 [CQOI2006]简单题 题解
    洛谷 P3368 【模板】树状数组 2 题解
    洛谷 P3374 【模板】树状数组 1 题解
    洛谷 P2023 [AHOI2009]维护序列 题解
    洛谷 P2253 好一个一中腰鼓! 题解
    求最长不下降/上升/下降/不上升子序列
    [SQL Server]Index/deadlock
    Ubuntu 14.04下从源码安装qt4.x
    Ubuntu系统下Import cv2提示no modules ...错误
    Ubuntu 14.04下安装CUDA8.0
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12244097.html
Copyright © 2011-2022 走看看