首页 > 其他分享 >B. 攻防演练 (倍增)

B. 攻防演练 (倍增)

时间:2023-08-20 10:56:39浏览次数:42  
标签:攻防 cout int pos -- 倍增 演练

攻防演练

来源

2021年中国大学生程序设计竞赛女生专场
https://codeforces.com/gym/103389/problem/B

题解

注意倍增的递推顺序还有 \(0,n+1\) 的情况!!!

#include <bits/stdc++.h>

using namespace std;
const int N = 2e5 + 5, K = 20, M = 30;
int m, n, q, l, r;
string s;
int nxt[N], pos[M]; 
int f[N][K]; //f[i][j]: i开始,跳2^j步到的点

int main () {
    ios::sync_with_stdio (0);cin.tie(0);cout.tie (0);
    cin >> m >> n >> s >> q;
    s = ' ' + s;

    for (int i = 0; i < m; i++)     pos[i] = n + 1;
    for (int i = n; i >= 0; i--) {
        for (int j = 0; j < m; j++) {
            f[i][0] = max (f[i][0], pos[j]);
        }
        pos[s[i] - 'a'] = i;
    }

    // cout << endl;
    f[n + 1][0] = n + 1;
    for (int i = n + 1; i >= 0; i--) {
        // cout << f[i][0] << ' ';
        for (int j = 1; (1 << j) <= n; j++) {
            f[i][j] = f[f[i][j-1]][j-1];
            // cout << f[i][j] << ' ';
        }
        // cout << endl;
    }
    
    while (q--) {
        cin >> l >> r;
        //L-1开始跳
        l--;
        int ans = 1;
        for (int i = log2 (n); i >= 0; i--) {
            if (f[l][i] <= r) {
                ans += (1 << i);
                l = f[l][i];
            }
        }
        cout << ans << "\n";
    }
    //cout << log2 (2e5) << ' ' << logn;
}

标签:攻防,cout,int,pos,--,倍增,演练
From: https://www.cnblogs.com/CTing/p/17643711.html

相关文章

  • 【黑产攻防道02】如何对抗黑产的图像识别模型
    全文8799字,预计阅读时间约25分钟,建议收藏后阅读验证码本质上自带一层答案的语义,这是天然的区分人和自动程序的地方。无论使用哪一种方式破解验证码,都必须识别出答案。在多年与黑产破解者的博弈对抗的过程中,我们发现,从限制黑产获取验证码图片答案这个方向来进行防御,不仅可以减少运营......
  • [数据结构]树上倍增
    树上倍增一、一点理解最近遇到几个关于树上倍增问题。本人太菜,有时候想不到用倍增,这里做个总结。树上倍增核心就是:\(f[u][j]\),含义是\(u\)向上跳\(2^j\)步到的位置,然后用\(f[u][j]=f[f[u][j-1]][j-1]\)进行转移。树上倍增常见应用就是:快速幂、线性(RMQ问题)、树(LCA问题)。那么......
  • 【愚公系列】2023年08月 攻防世界-Web(ics-02)
    (文章目录)前言SSRF(服务器端请求伪造)是一种攻击技术,攻击者通过构造恶意请求,欺骗服务器发起外部请求,获取服务器本应该不被直接访问的信息或服务。攻击者可利用SSRF进行一系列攻击,包括对内部资源进行扫描、窃取敏感信息、攻击内部系统等。SQL注入是一种常见的Web攻击技术,攻......
  • Web攻防--xxe实体注入
    web攻防--xxe实体注入漏洞简介XML外部实体注入(也称为XXE)是一种Web安全漏洞,允许攻击者干扰应用程序对XML数据的处理。它通常允许攻击者查看应用程序服务器文件系统上的文件,并与应用程序本身可以访问的任何后端或外部系统进行交互。在某些情况下,攻击者可以利用XXE漏洞联......
  • CTFer成长记录——CTF之Web专题·攻防世界—lottery
    一、题目链接https://adworld.xctf.org.cn/challenges/list?rwNmOdr=1691651594927二、解法步骤  打开网页,这是一个买彩票换flag的网站。题目附件提供了源码:  在网站上探索一番,发现买flag需要9990000R,获得资金的方式就通过buy功能买彩票。  那么我们随便输入一个数字,......
  • Cilium系列-16-CiliumNetworkPolicy 实战演练
    系列文章Cilium系列文章前言今天我们进入Cilium安全相关主题,基于Cilium官方的《星球大战》Demo做详细的CiliumNetworkPolicy实战演练。场景您是帝国(Empire)的平台工程团队的一员,负责开发死星(DeathStar)API并将其部署到帝国银河Kubernetes服务(Imperial......
  • CTFer成长记录——CTF之Web专题·攻防世界-Web_php_include
    一、题目链接https://adworld.xctf.org.cn/challenges/list?rwNmOdr=1691398818171二、解法步骤  本题依旧是文件包含,但是这题不同,while(strstr($page,"php://")){$page=str_replace("php://","",$page);}  这条语句过滤掉了以往的php://filter/read=convert.......
  • CTFer成长记录——CTF之Web专题·攻防世界-php_rce
    一、题目链接https://adworld.xctf.org.cn/challenges/list?rwNmOdr=1691398818171二、解法步骤  RCE意思是(RemoteCodeExecution),远程代码执行漏洞。这里题目涉及到thinkphp5的框架,那么就可能有对应的漏洞。  ThinkPHP5漏洞Payload:  Thinkphp5.0.221、http://192.1......
  • CTFer成长记录——CTF之Web专题·攻防世界-Web_php_unserialize
    一、题目链接https://adworld.xctf.org.cn/challenges/list二、解法步骤  本题考察的是反序列化,反序列化的题都需要审计php代码,步骤也比较固定。<?phpif(isset($_GET['var'])){$var=base64_decode($_GET['var']);if(preg_match('/[oc]:\d+:/i',$var))......
  • 倍增
    目录倍增相关资料例题综合运用倍增相关资料oiwiki-倍增例题综合运用图中环上倍增2023杭电多校第六场1010Calculate此题采取的是利用循环逐层倍增处理......