• 联赛模拟测试33


    合并集合

    裸的石子合并,双指针扫一遍记录一下每个区间内不同数字的个数,然后区间dp就可以了

    ZYB建围墙

    六边形可以围出的面积最大,然后考虑大于当前房子数的最小六边形(可以直接算,也可以二分),然后考虑将某几面的强向里面移动就可了

    ZYB和售货机

    将当前节点的最优和次优方案记录下来,然后按最优的建图,如果图中没有环,那么,我们可以直接把这些位置的收益计算出来,否则,对于环上的所有点,其中有一个必须以次低价买入。统计一下这样的亏损,取最小即可。

    ZYB玩字符串

    神奇的DP;
    dp[i][j]表示前从i到j有(j-i)%len位和p串的前(j-i)%len位匹配,剩下的位数可以消去,是否可行
    首先,考虑一个合法的解长什么样子,肯定有

    1. s[l] == s[0] && s[n-1] == s[r]
    
    2. cnt[ch-'a'] && cnt[ch-'a'] % num[ch-'a'] == 0
    
    3. cnt[ch-'a'] && cnt[ch-'a'] / num[ch-'a'] == n / len
    

    (cnt表示某一个字母在原串中出现的次数,num表示某一个字母在p串中出现的次数)
    考虑加入一位,有两种方法

    1. 作为前缀和后面的匹配
    f[i][j]|=f[i][j-1]&(s[j]==now[(j-i)%len]);
    
    1. 和前面的一段组合成一个完整段
    f[i][j]|=f[i][j-k*len]&f[j-k*len+1][j];
    

    题目要求求字典序最小,建议用string

  • 相关阅读:
    CodeForces-1263D Secret Passwords 并查集 求连通分量
    Virtual Friends HDU
    AreYouBusy HDU
    Jack Straws POJ
    Divisibility by 25 CodeForces
    逃离迷宫 HDU
    Find a way HDU
    Stall Reservations POJ
    Three displays CodeForces
    Radar Installation POJ
  • 原文地址:https://www.cnblogs.com/soda-ma/p/14007059.html
Copyright © 2020-2023  润新知