zoukankan      html  css  js  c++  java
  • ZROI CSP-S失恋测(1)

    传送门

    写在前面:为了保护正睿题目版权,这里不放题面,只写题解。


    “怎么大家一个暑假不见都变菜了啊。”——蔡老板


    • A

    考虑一个(nk^2)的dp,按(w_i)排序,则每个组长只能匹配排在他前面的组员,每个组员也只能等待排在他后面的组长。

    (f_{i,j,l})表示前(i)个人,配好了(j)对,有(k)个组员等待匹配的最优解,直接dp即可。

    注意到(2k>n)时一定无解,因此(O(nk^2)=O(nkcdotmin(n,k))leq O(nksqrt{nk}))

    另外一种做法是状态中不记录配好了多少对,而是直接wqs二分出每配成一对减免的补偿值,使得最优情况下恰好配成(k)对,时间复杂度(O(nklog a))

    无论哪种方法都需要注意排序时((p_i=)2<3<1)(否则就会wa飞)


    • B

    比较显然的一点是行和列是独立的。可以分别哈希出每行、列代表的字符,从而算出按照行、列划分时的答案,相乘即可。

    由回文串的性质可以证明(猜出),([l,r])可能成为答案的充要条件是([1,r])([l,n])均能成为答案。两种是对称的,分别计算即可。

    ( ext{manacher})(二分哈希)算出以每个空隙为对称中心的最长回文串,假设已经算出(jin[1,i-1])的每一个([j,n])是否可行,([i,n])可行的充要条件是存在一个可行的([k,n])使得以((i-1,i))为对称中心的最长回文串可以覆盖到(k),显然这个(k)取合法的最大值最优。


    • C

    两种部分分都很好做,维护一个懒标记即可。

    考虑整体(+1)反映到二进制上的表现。设(x)的二进制位从低到高分别为(a_0,a_1,…,a_{29}),则(+1)后的表现为:找到最低的(i),使得(a_0,a_1,…,a_{i-1}=1,a_i=0),将(a_0,…,a_i)全部翻转。

    如果将每个数倒着插入trie中(即从低位到高位插入),那么每次都是交换一条从根到叶子的链的每个节点的左右儿子,根据异或懒标记决定这条链的走向即可。

  • 相关阅读:
    【POI 2007】Office 办公楼(BIU)
    【Codeforces #130 Div2】Solutions
    【TopCoder SRM 551 Div2】Solutions
    【POI 2007】Axes of Symmetry 对称轴(osi)
    【HDU 2222】Keywords Search
    【POI 2007】Tetris Attack 正方体大作战(tet)
    【SGU 101】Domino
    【JSOI 2009】游戏 Game
    【SGU 102】Coprimes
    【Codeforces #133 Div2】Solutions
  • 原文地址:https://www.cnblogs.com/suwakow/p/11442716.html
Copyright © 2011-2022 走看看