题意:

你有一个序列,一开始为空,之后进行m次操作,操作有两种:

  • 1 x:在当前序列后面添加一个数x
  • 2 x, y:将序列的前x个数复制y遍接序列后面(x<10000)

之后n次询问,每次询问位置p上面的数字是多少,保证p不超过序列长度

思路:

对于每次询问,直接暴力递归当前位置上的数字是哪次操作①添加的就行了,因为复制操作每次只会复制前10000个数字,所以递归次数不会超过15次(递归时可能需要用到二分)

当然也可以直接记下来前10000个数字是多少, 这样应该就是线性的了

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<string>
#include<math.h>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
#define LL long long
#define mod 1000000007
typedef struct Res
{int op;int x, y;LL l, r;
}Res;
Res s[200005];
int Gao(int p, LL x)
{int l, r, m;if(s[p].op==1)return s[p].x;else{r = x-s[p].l+1;x = (r-1)%s[p].x+1;l = 1, r = p-1;while(l<r){m = (l+r+1)/2;if(x<s[m].l)r = m-1;elsel = m;}return Gao(r, x);}
}
int main(void)
{LL now, p;int m, n, i, R;scanf("%d", &m);for(i=1;i<=m;i++){scanf("%d", &s[i].op);if(s[i].op==1)scanf("%d", &s[i].x);elsescanf("%d%d", &s[i].x, &s[i].y);}R = now = 0;scanf("%d", &n);for(i=1;i<=n;i++){scanf("%lld", &p);while(R!=m && p>now){R++;s[R].l = now+1;if(s[R].op==1)s[R].r = s[R].l;elses[R].r = s[R].x*s[R].y+now;now = s[R].r;}printf("%d ", Gao(R, p));}puts("");return 0;
}

Codeforces Round #223 (Div. 2): C. Sereja and Prefixes(二分+递归)相关推荐

  1. Codeforces Round #223 (Div. 2): E. Sereja and Brackets(线段树)

    题意: 给你一个括号序列和m次询问,每次询问区间[L, R]内匹配的括号个数 思路: 这道题线段树只用来维护区间最小值,所以理论上RMQ也可以,主要是要稍微推一下 设左括号为1,右括号为-1,s[]为 ...

  2. Codeforces Round #215 (Div. 2) D. Sereja ans Anagrams

    http://codeforces.com/contest/368/problem/D 题意:有a.b两个数组,a数组有n个数,b数组有m个数,现在给出一个p,要你找出所有的位置q,使得位置q  q+ ...

  3. Codeforces Round #281 (Div. 2) C. Vasya and Basketball 二分

    C. Vasya and Basketball 题目连接: http://codeforces.com/contest/493/problem/C Description Vasya follows ...

  4. Codeforces Round #127 (Div. 1) E. Thoroughly Bureaucratic Organization 二分 数学

    E. Thoroughly Bureaucratic Organization 题目连接: http://www.codeforces.com/contest/201/problem/E Descri ...

  5. Codeforces Round #321 (Div. 2) B. Kefa and Company 二分

    B. Kefa and Company Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/580/pr ...

  6. Codeforces Round #409 (Div. 2) C Voltage Keepsake(二分)

    题意:有n(n<=100000)个机器...第i个机器最开始有bi(1<=bi <= 100000)个单位的电量,机器可以储存的电量没有上限,启动后每秒消耗ai(1<=ai&l ...

  7. Codeforces Round #686 (Div. 3) F. Array Partition(二分+线段树)

    题意:一段区间,让你分割成三段,第一段取max,第二段取min,第三段取max.问你怎么分割这个区间. 题解: 三个区间我们可以用两个点将一段区间分成三段区间. 二分:我们首先找这个题有关的单调性,我 ...

  8. Codeforces Round #540 (Div. 3) D. Coffee and Coursework 二分

    题解 题目大意,有若干杯咖啡,每杯咖啡有一个收益a[i],不限制每天喝多少杯,但是每天的第k杯收益会减少k-1,问总收益大于n的所需最少天数. 使用二分答案求解,每次喝肯定是挑剩余最大的去喝,chec ...

  9. Codeforces Round #481 (Div. 3) F. Mentors(思维+二分)

    有 n 个程序员,每个程序员都有他的技能分数,分数严格高的可以做分数低的程序员的老师,但是有 k 对人发生过矛盾,他们不能构成师生关系,问每个人最多可以做几个人的老师 开始想的是开一个数组从 i∈[1 ...

最新文章

  1. RunLoop 浅析
  2. PyTorch基础(12)-- torch.nn.BatchNorm2d()方法
  3. Python笔记-使用U2自动登录某APP及watcher使用
  4. linux2.6 gcc,在Linux内核 2.6.38.7 上,gcc堆栈粉碎代码不工作 请帮助_gcc_开发99编程知识库...
  5. (计算机组成原理)第五章中央处理器-第四节2:微程序控制器基本原理
  6. Kali Linux安装Remmina无法加载RDP插件
  7. TCP/IP学习笔记
  8. The tempotron: a neuron that learns spike timing–based decisions 事件驱动
  9. 这个超逼真的虚拟小姐姐,可能是腾讯游戏未来的样子
  10. 小米手机困境,米粉伤心,黄牛伤钱
  11. 雷达的工作原理示意图_平板吊袋离心机工作原理及结构示意图
  12. 带约束的最优化问题,拉格朗日乘数法
  13. android google翻译,在android中施用google翻译
  14. 关于fiddle开启https证书协议源码
  15. 游山西村 陆游- 南宋
  16. Canvas编程练习:20几行js代码实现雷达扫描动画效果
  17. c语言大作业成绩分析问题,河南科技大学c语言课程设计-综合排序设计报告-成绩分析问题.doc...
  18. 工作站的容器化和虚拟化实践
  19. 通过 irp 请求包删除文件
  20. 白杨流量汇线下聚会品茶聊流量,搞流量的核心是什么?

热门文章

  1. python爬虫教程-Python爬虫入门教程——爬取自己的博客园博客
  2. python培训班靠谱吗-学python去哪个培训机构好?靠谱的python培训机构推荐
  3. python有趣小程序-你用python写过那些好玩的微信小程序?
  4. python工资一般多少-Python工程师工资多少
  5. python3入门代码-Python3 教程 | 菜鸟教程
  6. 自学python能找到工作吗-学完python能找到工作么
  7. python编程入门与案例详解-Python程序设计案例课堂
  8. python语言-Python语言介绍
  9. p语言是python吗-Python 这语言真是混乱和原始
  10. 【什么值得买】最牛逼的语音识别公司开始做硬件了