zoukankan      html  css  js  c++  java
  • 练手题1

    练习随笔#

    洛谷P1120##

    AC记录:https://www.luogu.com.cn/record/31540878

    注意点:对于数组范围需求较大并且真正存值的元素相对来说较少,那么我们可以使用map<存储类型,存储类型>,他的使用和常规数组一样,并且是访问它的时候才分配内存,既可以防止访问过界,又可以防止内存浪费

    洛谷P5836##

    AC记录:https://www.luogu.com.cn/record/31552012

    它的题意是求路径u-v上是否有颜色H或者G

    1)LCA:我们记录从根节点到每个节点的路径上颜色为H/G的个数(树上前缀和即可)(这题有点毛病的就是他默认建树是从1开始)

    查询时直接树上差分即可

    2)并查集:如果说我们把相邻且颜色一致的归入一个并查集,那么我们在查询路径上u-v时,如果他们不属于一个并查集,那么他们之间一定有阻断,那么两种颜色都有;如果属于一个并查集,那么他们之间的路径颜色唯一且就是u,v点的颜色

    洛谷P2671##

    AC记录:https://www.luogu.com.cn/record/31652244

    他的题意是:给定一个序列,每个序列元素i含有一个值Ai和一个颜色值Bi,序号下标从1开始

    符合条件的数对:

    1)序号奇偶相同

    2)颜色相同

    记他们的贡献为(i+j)(Ai+Aj),求满足条件的所有数对的贡献和取模10007

    启发:对于一些集合而言,如果每对元素都存在特定关系,且通过某种处理可以使得他们的先后不产生影响,那么我们可以通过研究单一元素,以此普及到集合中所以元素来研究全集合的一些性质。

    比如这道题目,要满足颜色是相同的,那么我们要做的就是把所有颜色相同的归入一个集合,那么这个集合中所以元素两两配对,我们现在要求他们的贡献值,一共有n*(n-1)/2组,数据太庞大了。

    我们怎么把这个转化为线性的东西嘞?

    那么现在对于集合的元素两两都存在一定关系,并且先后的次序并不会影响,所有我们固定研究一个对象i,把(i+j)(Ai+Aj)拆开,发现每个i都要乘上Aj,i还要单独乘上Ai,很显然后者总数量与i配对数量有关,而配对数量是一个定值,而前者补上Ai就成了集合的数值和,所以这样计算每个对象的时候,抓住了一些集合共性,这样就方便很多了。

  • 相关阅读:
    asp.net 实现pdf、swf等文档的浏览
    VS NuGet加载本地程序包
    《大型网站技术架构》读书笔记
    全排列组合算法
    GDI+绘制半圆按钮
    oracle dblink 查询 tns:无法解析指定的连接标识符
    最少有多少鸡蛋(求最小公倍数)
    杨辉三角
    Android开发面试题(一)
    2015年11月系统架构设计师案例分析题
  • 原文地址:https://www.cnblogs.com/et3-tsy/p/12486674.html
Copyright © 2011-2022 走看看