zoukankan      html  css  js  c++  java
  • Gym-101177B 递归想法题

    题意:一串无限长的0,有m个操作(m<2e5),在每个x后面加一个y,最后一次查询L--R的数字,(L,R<1e6)

    思路:看起来非常复杂,实际上突破口在于L,R很小,虽然操作复杂,直接模拟会单次操作on,但是我们可以考虑一个一个字符构造,实际上就是一个递归的过程。具体方法可以大家尝试一个一个字符构造,然后递归模拟就好了。

    代码:

    #include<bits/stdc++.h>
    #define PB push_back
    #define pii pair<int,int>
    #define MP make_pair
    #define X first
    #define Y second
    using namespace std;
    const int maxn=2e6+10;
    int ans[maxn],x,y,cnt=1,l,r,n;
    vector<pii > v[maxn];
    void dfs(int x,int y,int tim){
        if(y<0||cnt+5>maxn||v[x][y].Y<tim) return;
        ans[cnt++]=v[x][y].X;
        dfs(v[x][y].X,v[v[x][y].X].size()-1,v[x][y].Y);
        dfs(x,y-1,tim);
        return;
    }
    int main() {
        memset(ans,-1,sizeof(ans));
        ans[0]=0;
        scanf("%d%d%d",&n,&l,&r);
        for(int i=0;i<n;i++) scanf("%d%d",&x,&y),v[x].PB(MP(y,i));
        dfs(0,v[0].size()-1,-1);
        for(int i=l;i<r;i++) printf("%d%c",ans[i%cnt]," 
    "[i==r-1]);
    	return 0;
    }
    



  • 相关阅读:
    JAVA 高级特性 JDBC
    C3P0 连接池
    JAVA WEB Servlet
    JAVAWEB JSP
    sed 命令
    shell 简单脚本编程
    从首页问答标题到问答详情页
    首页列表显示全部问答,完成问答详情页布局
    制作首页的显示列表
    发布功能完成
  • 原文地址:https://www.cnblogs.com/zhangxianlong/p/10672478.html
Copyright © 2011-2022 走看看