zoukankan      html  css  js  c++  java
  • 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)

    2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)

    Odd Palindrome

    题目描述:给出一个字符串,判断是否存在一个子串,满足长度为奇数,且为回文串。

    solution
    暴力枚举。

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

    Enlarging Enthusiasm

    题目描述:有(n)个人,每个人有一个成绩(p_i),每个(p_i)都不相同。现给定一个数(x),给每一个人分配一个数(q_i geq 1),满足(sum q_i=x)。每个人的总成绩为(p_i+q_i),现按(q_i)从小到大排序,若(q_i)相同,则按(p_i)从小到大排序。按顺序宣布成绩,使得每宣布一个人的成绩,成绩最高的人会变化。问最终的排名有多少种。

    solution
    显然,(q_i)要是多大,只跟排在它前面一个人的总成绩有关,所以可以用状压dp
    因为(q_i)要递增,所以可以考虑差分。
    (y_i geq 0, p_i=sum_{j=1}^{i} y_j, sigma_i)为一个(n)排列表示排名为(i)的是谁。
    (ecause p_{sigma_{i-1}}+q_{sigma_{i-1}}<p_{sigma_{i}}+q_{sigma_{i}})
    ( herefore p_{sigma_{i-1}}<p_{sigma_{i}}+y_i)
    ( herefore y_i>p_{sigma_{i}}-p_{sigma_{i-1}})

    (ecause sum p_i leq x)(多出来的给最后一个人即可,不影响排名)
    ( herefore sum_{i=1}^{n} (n-i+1)y_i leq x)

    假设到了排名(i)(x)还剩(rest),则(y_i leq frac{rest}{n-i+1})

    (f[sett][rest][pv])表示(sett)中的人已经排在前面,(x)还剩(rest),前一个人为(pv)
    枚举(i)表示下一个人,按照前面的分析求出(y_i),显然(y_i)最小最好,但也不能超出最大值的限制。状态转移也比较简单。

    时间复杂度:(O(2^n x n^2))

    Fear Factoring

    题目描述:定义(f(n))表示(n)的因数的和。给出两个数(a, b),求(sum_{i=a}^{b} f(i))

    solution
    设因数(d),在(a)~(b)中,(d)的倍数除以(d)得到的数是连续的,即可以用求和公式得到。
    (x)(a)~(b)中第一个(d)的倍数,则(x=max((frac{a-1}{d}+1)*d, d*d))(避免重复)
    (s)(a)~(b)中大于等于(x)(d)的倍数的个数(s=frac{b-x}{d}+1)
    更新答案((s*d)+(frac{x}{d}+frac{x}{d}+s-1)*frac{s}{2}),注意:如果(x=d*d),则答案要减去(d)(重复)。

    时间复杂度:(O(sqrt{b}))

    Rainbow Roads

    题目描述:给出一棵树,每条边有一种颜色。定义一条彩虹路为路径上的相邻边的颜色不一样。定义一个好点为从该点出发的所有路径都是彩虹路。输出所有好点。

    solution
    树形dp,仔细分析即可。

    时间复杂度:(O(n))

    Straight Shot

    题目描述:在一个二维平面上,在原点放一个机器人,速度为(v_0),现要机器人最快地走到((x, 0))。但中间有不相交的(n)条滑道,第(i)条滑道的范围为([L_i, R_i]),滑道会给机器人一个竖直的速度(v_i),但机器人面向的方向不变,问机器人最短多长时间到达终点。或时间长于两倍直线时间。

    solution
    显然,滑道可以全部连在一起,即将所有滑道并排移到最后,然后从终点倒着走回去,找到离开滑道的坐标,最快就是从((0, 0))走到那个坐标。然后判断一下时间即可。

    时间复杂度:(O(n))

    Distinct Distances

    题目描述:给出(n)个点,然后在平面上找到一个点(p),使得每个点到(p)的距离的不同值最少。输出最少值。

    solution
    (p)点选择有三种情况:

    1. 两个点的中点
    2. 三点构成的圆的圆心
    3. 两点的垂直平分线与另外两个垂直平分线的交点。

    时间复杂度:(O(n^5logn))

    Security Badge

    Avoiding Airports

    题目描述:有(n)个城市,(m)条航线,每条航线连接两个城市(起点为a_i, 终点为(b_i)),有一个起飞时间(s_i)和一个到达时间(e_i),现在从(1)出发到(n),使得在每个城市的等待时间的平方和最少。输出最小值。

    solution
    (e_i)从小到大排序,假设使用第(i)条航线时等待时间的平方和为(f[i]),假设前一条航线为(j),则(f[i]=min_{b_j=a_i} (f[j]+(s_i-e_j)^2))
    (f[i]=min_{b_j=a_i} (f[j]+(s_i-e_j)^2))
    (f[i]=min_{b_j=a_i} (f[j]+s_i^2-2s_ie_j+e_j^2))
    (f[i]=min_{b_j=a_i} (f[j]+s_i^2-2s_ie_j+e_j^2))

    (i)一定时,取(-2e_js_i+f[j]+e_j^2)的最小值,设(A=-2e_j, B=f[j]+e_j^2),可以将其看成一条直线(Ax+B),也就是在很多条直线上选(x=s_i)的最小值。所以在每个城市维护一个凸壳,询问时二分查找即可。

    时间复杂度:(O(mlogm))

    Long Long Strings

    题目描述:有一个很长的字符串,有两种操作:1、删除某个位置的字符。2、在某个位置插入某个字符。给出两组操作,问这两组操作得到的字符串是否相同。

    solution
    将初始字符串看成一个([1, 10^{11}])的区间,然后将这两种操作看成是区间操作,最后判断最后得出的区间是否相同。

    时间复杂度:(O(n^2))

    Grid Coloring

    题目描述:有一个(m imes n)的网格图,每个格子将涂成红色或者蓝色,但要满足下面条件:

    1. 每个格子都要涂颜色
    2. 有些格子的颜色已经决定,不能改变。
    3. 当某个格子((x, y))的颜色为蓝色时,以((1, 1))((x, y))形成的矩形一定都是蓝色。
      求有多少种涂色的方案。

    solution
    只需要关注蓝色的格子即可,其它的格子都是红色,而且每一行只需要考虑最右边那个蓝色格子。
    如果第(i)行第(j)列是蓝色的格子,则后面的行的蓝色格子的列小于(j),否则前面第(i)行第(j)列的蓝色格子没有作用。按照这来dp

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

    Spinning Up Palindromes

    题目描述:给出一个字符串,字符串的每一位为(0)~(9),每次操作给某一位加一,如果这一位变成(10),则将这一位变成(0),然后前一位加一,如果又变成(10),则继续一样的操作,当第一位变成(10)时,将其变成(0)即可。问至少需要多少操作使得字符串变成一个回文串。

    solution
    不会。

    Delayed Work

    题目描述:有一个刷屋子的工作,请一个工人需要(X)元,如果刷屋子需要(D)天,则要付(D cdot P)元,如果有(M)个人,则需要(left lceil frac{K}{M} ight ceil)。问最少需要多少钱。

    solution
    枚举即可,显然(M leq K)

    时间复杂度:(O(K))

    Unsatisfying

    题目描述:有(n)条表达式,每条表达式有两个变量,中间的运算符为(vee),每个变量前有可能有(NOT)符号。现在可以添加一些表达式,这些表达式没有(NOT),使得全部表达式不全为真,问最少添加多少表达式。

    solution
    (2-SAT)的做法构图,问题变成在图中添加一些边(从负指向正的边),使得存在一个(i)(i)(NOT) (i)在一个环内。设(f(x))表示(x)能到的点的集合,(r(x))表示能到(x)的点的集合。
    假如原图已经存在,上述的环,则答案为(0)
    如果(f(i))(f(NOT) (i))的交集存在(NOT)点,以及(r(i))(r(NOT) (i))的交集存在正点,则只需一条表达式即可。
    如果(f(i))存在(NOT)点,(r(NOT) (i))存在正点,则只需两条表达式即可。
    否则无解。

    时间复杂度:(O(n^2))

  • 相关阅读:
    C++类中的封装-9
    递归神经网络
    卷积神经网络
    Tensorflow人工智能神经网络学习
    右键弹出菜单 并动态新增菜单子项
    sql 列转行
    sql 删除表中某字段的重复数据
    疑难问题解决
    jquery ashx交互 返回list 循环json输入信息
    jquery 控件赋值
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/8520609.html
Copyright © 2011-2022 走看看