• ABC242 记录


    目录

    上分难!难于上青天!/ll

    A

    分支结构的运用

    B

    排序

    C

    暴力 DP

    D

    发现每一层长度都是上一层两倍,因此考虑由当前层递归到上一层。

    让下表从 0 开始编号即可利用位运算方便实现

    回溯的时候可以利用二进制最后一位判断填什么。

    如果递归到 0 层,直接返回原串的答案

    如果值为 0 了,观察每层串串首是 ...ABCABCABC... 循环,随便判断一下即可。

    char Calc(char c, int x) {
        int p = c - 'A';
        p = p + x;
        p %= 3;
        return 'A' + p;
    }
    
    char dfs(int pos, int val) {
        if(pos == 0) return s[val];
        if(val == 0) return Calc(s[0], pos);
        char c = dfs(pos - 1, val >> 1);
        if(c == 'A') {
            if(val & 1) return 'C';
            else return 'B';
        } else if(c == 'B') {
            if(val & 1) return 'A';
            else return 'C';
        } else if(c == 'C') {
            if(val & 1) return 'B';
            else return 'A';
        }
    }
    
    signed main()
    {
        cin >> s;
        Q = read();
        for(int i = 1, t, k; i <= Q; ++i) {
            t = read(), k = read() - 1;
            printf("%c\n", dfs(t, k));
        }
        return 0;
    }
    

    E

    • 做法一:数位 DP
    • 做法二:

    预处理 26 的幂,线性扫一遍。特判一下前半串反转和后半串的大小关系决定是否 +1。

    F

    待哺

    nyy /bx

    \(f_{i,j}\) 表示黑棋填了 \(i\)\(j\) 列但不一定都填的方案数。

    \(g_{i,j}\) 表示黑棋填了 \(i\)\(j\) 列但都填了的方案数。

    则有

    \[f_{i,j} = \binom{i \times j}{B} \]

    根据二项式反演有

    \[g_{i,j} = \sum_{x=0}^{i} \sum_{y=0}^{j} (-1)^{i+j-x-y} \binom{i}{x} \binom{j}{y} f_{x,y} \]

    则答案为(枚举黑棋放几行几列,剩下的白棋随便放)

    \[ans = \sum_{i=0}^{n} \sum_{j=0}^{m} \binom{n}{i} \binom{m}{j} g_{i,j} \times \binom{(n-i)(m-j)}{W} \]

    G

    莫队板子。

  • 相关阅读:
    小白逆袭的真实故事,句句干货不看损失一个亿!
    CODEFORCES 1367F2 FLYING SORT (HARD VERSION)
    整理:iOS开发知识点
    EBS-子库存转移和物料搬运单区别
    Oracle ERP系統借贷关系表
    ORACLE ERP各模块会计分录
    SQL Queries and Multi-Org Architecture in Release 12
    ORALCE EBS ALERT 初体验
    工作流邮件审批设置
    How to Send an Email Using UTL_SMTP with Authenticated Mail Server
  • 原文地址:https://www.cnblogs.com/Silymtics/p/ABC242.html
Copyright © 2020-2023  润新知