zoukankan      html  css  js  c++  java
  • Global Round 4 题解(1178A~F)

    (Global Round 4)题解

    (zhanglichen 2021.1.3)

    (A.Prime Minister)

    给出一个数组,请你选出一些元素,使得这些元素的和超过数组总和的一半,同时里面都小于等于(a_1)的一半。(a_1)必选。

    (Solution)

    简单模拟。

    时间复杂度(O(n))

    (B.WOW Factor)

    给出一个只包含(w,v,o)的字符串,连续的(2)(v)可以视作一个(w)。询问(wow)子串的数量。

    (Solution)

    常见套路,一段连续的长度为(x)(v)可以视作(x-1)(w)。对每个(o)算一下贡献即可。

    时间复杂度(O(n))

    (C.Tiles)

    需要你用如图所示的瓷砖拼成一个(h*w)的地板,询问有多少种拼法。

    (Solution)

    常见套路,先确定第(1)行的方案数量,再确定后面几行的方案数量。

    财富密码是(2^{h+w})

    时间复杂度(O(h+w))/(O(log(h+w)))

    (D.Prime Graph)

    给出一个(n),请你构造一个(m)条边的图,使得(m)是素数,同时每个点都是素数。

    (Solution)

    数学直觉不好的我打表后发现,(n)在距离它很近的位置就能找到(1)个素数。

    因此我们可以先建一个环,然后在环上加边,直到边数是素数时停止。可以保证每个点的度数是(2)(3)

    时间复杂度(O(n))

    (E.Archaeology)

    给出一个只包含(a,b,c)的字符串,保证相邻的(2)个字符不相同。

    询问是否有长度大于等于(n/2)的回文子串。

    (Solution)

    找题目里的关键性质:(n/2)和相邻的(2)个字符不同,只包含(3)种字符。

    性质:取前(2)个字符和最后(2)个字符,必有相同的字符。

    因此就不断从前面(2)个取一个,后面(2)个取一个即可。

    如果最后剩下的长度小于(4),随便取一个作为回文串中心即可。

    时间复杂度(O(n))

    (F1.Short Colorful Strip)

    有个长度为(m)公分的布,要在上面每公分都染上颜色,整块布染恰好(n(n=m)n(n=m))种颜色。颜色标号从(1)(n)。保证颜色互不相同。染色需遵循:

    从颜色(1)到颜色(n)依次,即必须先染标号小的颜色
    2.每次可以染任意一个区间,但必须满足这个区间之前的颜色是相同的。

    询问将这块布染成所给颜色的方案数。

    (Solution)

    看了大神的题解还是一知半解,区间(DP)还是太弱了,想拿银牌必须把区间(DP)练好。

    定义状态(f(l,r))表示染好((l,r))这个区间的方案数,(g(l,r))表示染完最小的元素后再染这个区间的方案数。

    (g(l,r)=f(l,p+1)*f(p+1,r))

    (f(i,j)=sum_{k=l}^{r}g(l,k)*f(l+1,r))

    最后(f(1,n))即为答案。

    时间复杂度(O(n^3))

  • 相关阅读:
    mac地址绑定
    解决php函数json_encode转换后中文被编码为unicode
    json格式转数组注意事项
    leetcode[93] Restore IP Addresses
    leetcode[92] Reverse Linked List II
    leetcode[91] Subsets II
    leetcode[90] Decode Ways
    leetcode[89] Merge Sorted Array
    leetcode[88] Gray Code
    leetcode[87] Partition List
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/14226580.html
Copyright © 2011-2022 走看看