zoukankan      html  css  js  c++  java
  • Codeforces Round #396(div 2)

    A

    题意:求两个字符串的最长非公共子串

    分析:trick题

       最长非公共子串的长度<=子串长度<=原串长度<=max(len1,len2)

       容易发现如果两个字符串不相同,那么答案就是最长的那个长度,否则就是0

    B

    =w=

    C

    QvQ

    D

    题意:给出一些单词的近义、反义关系,判断给出的是否合法、判断两个词的关系

    分析:并查集

       经典的并查集,每个点有两个集合,分别为近义词集合和反义词集合(补集),每次操作对并查集操作

    E

    题意:给出n个节点组成的树(n<=1e5),每个点有权值(<=1e6),每对点对(i,j)的权值为i到j的树上路径所有点的权值的异或和,求所有点对的权值的总和

    分析:二进制拆位+dfs树上统计

       因为是异或,所以可以想到一位一位来分别进行dfs,那么时间就是O(log(1e6)*n),是可以的

       现在问题就是每个点权值要么为0,要么为1,求所有点对的权值的总和

       f[i][0]表示以i为根的子树,表示:由子树中某一点开始,向上走一直走到i为止的这种路径的异或和为0的路径条数

       f[i][1]表示对应的异或和为1的路径条数

       那么dfs(i)的时候,可以统计出以i为lca的点对的异或和为1的个数,加到s中,并且不断更新f[i][0]和f[i][1]

       ans=Σs*对应位的权值

  • 相关阅读:
    idea常用快捷键及操作
    Ubuntu 装nexus
    ubuntu安装gitlab
    ubuntu安装jdk,maven,tomcat
    ubuntu安装gitlab-ci-runner、注册
    ubuntu开启远程shell,开启上传下载
    Ubuntu安装软件提示boot空间不足
    POJ3461 KMP简单变形输出模式串在主串出现的次数
    涨姿势stl map['a']['a']=b;
    对链表的操作(数据结构线性表算法设计练习)
  • 原文地址:https://www.cnblogs.com/wmrv587/p/6393237.html
Copyright © 2011-2022 走看看