首页 > 其他分享 >abc380D Strange Mirroring

abc380D Strange Mirroring

时间:2024-12-02 12:32:17浏览次数:8  
标签:std int ans flip Mirroring i64 Strange L1 abc380D

给定字符串S,每次操作会复制一份并改变大小写追加到原字符串后面。有Q组询问,每次输出K[i],输出结果中第K[i]个字符是什么?
1<=|S|<=2E5, 1<=Q<=2E5, 1<=K[i]<=1E18

分析:依次处理每个询问,先倍增到能覆盖询问的长度,然后倒推出该字符由S的哪个字符得到,以及大小写状态。

#include <bits/stdc++.h>
using i64 = long long;

void solve() {
    std::string S;
    int Q;
    std::cin >> S >> Q;
    i64 ns = S.size();

    auto get = [&](i64 x) {
        i64 L = ns;
        while (L < x) {
            L *= 2;
        }
        int flip = 0;
        while (L > ns) {
            i64 L1 = L / 2;
            if (x > L1) {
                flip ^= 1;
                x -= L1;
            }
            L = L1;
        }
        char ans = S[x - 1];
        if (flip) {
            ans = islower(ans) ? toupper(ans) : tolower(ans);
        }
        return ans;
    };

    for (int i = 0; i < Q; i++) {
        i64 x;
        std::cin >> x;
        std::cout << get(x) << " ";
    }
}

int main() {
    std::cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    while (t--) solve();
    return 0;
}

标签:std,int,ans,flip,Mirroring,i64,Strange,L1,abc380D
From: https://www.cnblogs.com/chenfy27/p/18581629

相关文章

  • 题解:SP1442 CHAIN - Strange Food Chain
    有三种可能的假话:编号\(>n\);自己吃自己;互吃。使用扩展域并查集(种类并查集)。code:#include<bits/stdc++.h>usingnamespacestd;intn,m,c,t,F[150005];intfind(intx){ if(F[x]==x)returnx; returnF[x]=find(F[x]);}intmain(){cin>>t;while......
  • CF1334F Strange Function 题解
    传送门定义一个函数\(f\),输入一个数组\(a\),输出一个数组\(b\)为\(a\)的子序列:\(b_1=a_1\),设\(b_i\)在\(a\)中的位置为\(pos_i\),则\(b_i\)为\(a_{pos_{i-1}+1}\sima_n\)中第一个严格大于\(b_{i-1}\)的数。\(n\le5\times10^5\),\(|p_i|\le10^9,1\lea_i,b_i\le......
  • 题解:CF718A Efim and Strange Grade
    CF718AEfimandStrangeGrade题解算法贪心+模拟思路分析显然,要最优每一次进位就只能五入不能四舍。而且当我们五入时,要取位数最高的。比如说\(1.3535\),我们有两种进位方式,一种是进位成\(1.4\),一种是进位成\(1.354\),显然前者更优。那这道题给的次数有啥用呢?考虑一种“......
  • A. Tokitsukaze and Strange Inequality(dp版)
    链接https://codeforces.com/problemset/problem/1677/A题目思路这题感觉还是挺有难度的(为啥题解都说不难Orz),给我启发最大的是这句话:具体怎么处理呢?把i按照n->1的顺序遍历,然后j从反方向遍历:i+1->n。求S[i][j]时用S[i+1][j],因为S对应的是以j为结尾的,然后在遍历中相当于不知......
  • 题解:SP1442 CHAIN - Strange Food Chain
    双倍经验:P2024[NOI2001]食物链思路:一眼鉴定为并查集。观察题目发现有三种状态,考虑使用种类并查集(又称扩展域并查集)。既然有三种状态那么种类并查集自然也要开三倍。CODE:#include<bits/stdc++.h>usingnamespacestd;intfa[150010];intGet_Find(intx){//寻找父节点......
  • 扩展中国剩余定理证明及例题 Strange Way to Express Integers
    前置知识中国剩余定理(CRT),逆元;EXCRT是什么我们知道对于\[\begin{equation} \begin{cases} x\equivc_1\(mod\m_1)\\ x\equivc_2\(mod\m_2)\\ .\\ .\\ .\\ x\equivc_i\(mod\\m_i)\\ \end{cases}\end{equation}\]一个一元线性同余方......
  • 扩展中国剩余定理证明及例题 Strange Way to Express Integers
    前置知识中国剩余定理(CRT),逆元;EXCRT是什么我们知道,对于对于\[\begin{equation} \begin{cases} x\equivc_1\(mod\m_1)\\ x\equivc_2\(mod\m_2)\\ .\\ .\\ .\\ x\equivc_i\(mod\\m_i)\\ \end{cases}\end{equation}\]一个一元线性......
  • [POJ2891]Strange Way to Express Integers公式推导
    没啥事干,想着推个式子玩玩。题目链接题意不过多赘述,直接上过程:由题意得\[\begin{cases}x\equiva_1\,(mod\,\,n_1)\\x\equiva_2\,(mod\,\,n_2)\end{cases}\]展开得\[x=k_1·n_1+a_1=k_2·n_2+a_2\dots①\]移项得\[k_1·n_1=(a_2-a_1)+k_2·n_2\]\[k_1·n......
  • 初中英语优秀范文100篇-049Should We Help Strangers-我们应该帮助陌生人吗
    PDF格式公众号回复关键字:SHCZFW049记忆树1Recently,ourclasshadadiscussionaboutwhetherweshouldhelpstrangers.翻译最近,我们班进行了一次讨论,关于我们是否应该帮助陌生人。简化记忆陌生人句子结构1"Recently":这是一个副词,表示"最近",用来修饰谓语动作发......
  • [Codeforces] CF1545A AquaMoon and Strange Sort
    CF1545AAquaMoonandStrangeSort题目传送门题意有\(n\)个人从左到右站成一排,从左数第\(i\)个人的衣服上印着\(a_i\)。每个人的朝向可以是朝左、朝右。一开始所有人的方向都是朝右。您可以对这些人做一些“操作”,每次操作允许您找两个相邻的人让他们交换顺序,但是在操作......