zoukankan      html  css  js  c++  java
  • [Codeforces]CF Global Round 15ABCD

    【CF Global Round15】

    https://codeforces.com/problemset/problem/1552/A ,把字符串排序好得到(t[1,dots,n]),把(str[i] eq t[i])的抽出来就行。


    https://codeforces.com/problemset/problem/1552/B ,虽然在这里可能会存在(a<b,b<c)但是(a>c)的情况,但我们依然可以重载小于号,从左到右取max,如果(x)符合答案的条件,一定会被取到,同时再check一边是否比别的都要大就行。


    https://codeforces.com/problemset/problem/1552/C ,卡了许久,题目有一句话很关键:o point strictly inside the circle belongs to all 3 chords.也就是只要有交叉就会多一个交点,不用管三线共点的情况。于是可以证明,最优的染色方法是把剩下的(2(n-k))个点拎出来重新标号,然后按照第(i)个点连接(i+(n-k))来连线(假设原本是(a-b,c-d)这样没有交叉的连接,如果换成(a-c,b-d)这样有交叉的连法,交点至少不会变少)。


    https://codeforces.com/contest/1552/problem/D ,给一个(a[1,dots,n]),问是否存在(b[1,dots,n]:)对所有(a_i)存在(1leq j,kleq n:a_i=b_j-b_k),这题(nleq 10)

    (n)只有10看着就很乱搞…首先(b)的一个差分一定能搞定一个(a_i),所以(n)个位置至少能解决(n-1)(a_i),问题就是剩下一个怎么搞定。

    如果(a_i=0)或者(a_i=a_j),就可以少用一个(b)的代价,这时候一定是YES,进一步,只要能找到(a[1,dots,n])的一个子序列(pm a_{p_1}pm a_{p_2}dotspm a_{p_k}=0)就行,当然这只是充分条件,但我们猜他必要,于是(O(n3^n))暴力枚举试着交一发,过了,好那他就是必要条件了(bushi)。

    [必要性]假设存在符合条件的(b)数组,考虑张(n)个点的图,每个点的点权是(b_i),接着因为每个(a_i)都能写成(b_{j_i}-b_{k_i})的形式,我们连一条((j_i,k_i))的边权为(a_i)的边,这样就构成了一个(n)个顶点(n)条边的图,(|V|=|E|=n,|V|+|F|-|E|=2),此时一定有环(此时先不考虑方向),而这个环上:

    (egin{aligned}(b_{v1}-b_{v2})+(b_{v2}-b_{v3})+dots+(b_{v_{k-1}}-b_{vk})+(b_{vk}-b_{v1})=0end{aligned})

    我们说每条边对应一个(a_i),那这个式子就意味着(a[1,dots,n])的一个子序列(pm a_{p1}pmdotspm a_{pk}=0),也就是我们前面的充分条件。

  • 相关阅读:
    作业
    第一次作业
    临时和永久关闭firewalld与selinux
    联合删除
    使用CascadingDropDown实现级联式下拉框
    使用createElement动态创建HTML对象.
    关于DotNetZip的用法
    网站性能优化:cache-control设置详解
    百度蜘蛛Baiduspider User-Agent字段更新与IP判断
    (转)一个简单,方便的七牛云存储的客户端(收藏)
  • 原文地址:https://www.cnblogs.com/yoshinow2001/p/15221430.html
Copyright © 2011-2022 走看看