Codeforces Round #220 (Div. 2) D:http://codeforces.com/contest/374/problem/D

题意:给你m个数,这m个数是递增的。然后给你n个操作,每个操作是一个数1,0,-1,如果是1或者0,就把这个数数直接放在序列的末位,刚开始的时候,序列为空。当操作数是-1的时候,只要把ai<=当期序列长度,就把ai所对应的那一位删除。

题解:用树状数组和二分搞。首先如果是0或者1,直接把这个数放进去,把这个数的位子加一。然后更新的时候,首先查询到小于等于序列长度的那些数,表示要删除在该序列的第几个数,然后用二分找到这个数,但是这里不能直接删除,要先保存,然后等所有的数都找完了,再进行统一删除。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int N=1e6+10;
 7 int c[N],a[N],ans[N],top,as[N];
 8 int n,m,sum;
 9 void init(){
10    memset(c,0,sizeof(c));
11    memset(a,0,sizeof(a));
12    memset(ans,-1,sizeof(ans));
13    top=0;
14 }
15 int lowbit(int x){
16   return x&(-x);
17
18 }
19 void add(int x,int val){
20   while(x<=m){
21     c[x]+=val;
22     x+=lowbit(x);
23   }
24 }
25
26 int getsum(int x){
27   int ans=0;
28   while(x){
29      ans+=c[x];
30      x-=lowbit(x);
31   }
32   return ans;
33 }
34 void work(int num,int ct){
35    int l=1,r=m;
36    while(l<r){
37       int mid=(l+r)/2;
38      //printf("%d\n",mid);
39       if(getsum(mid)>=num)r=mid;
40       else
41         l=mid+1;
42    }
43    as[ct]=l;
44 }
45 int t;
46 int main(){
47   while(~scanf("%d%d",&m,&n)){
48       init();
49       for(int i=1;i<=n;i++){
50         scanf("%d",&a[i]);
51       }
52       for(int i=1;i<=m;i++){
53         scanf("%d",&t);
54         if(t==0||t==1){
55             ans[++top]=t;
56             sum++;
57             add(top,1);
58         }
59         else{
60             int temp=lower_bound(a+1,a+n+1,sum)-a;
61             if(temp>n)temp--;
62             else if(a[temp]>sum)temp--;
63             sum-=temp;
64           //  printf("%d\n",temp);
65             for(int i=1;i<=temp;i++)
66                 work(a[i],i);
67            for(int i=1;i<=temp;i++){
68              add(as[i],-1);
69              ans[as[i]]=-1;
70            }
71         }
72
73       }
74       bool flag=false;
75      for(int i=1;i<=m;i++){
76         if(ans[i]==-1)continue;
77         printf("%d",ans[i]);
78         flag=true;
79      }
80      if(!flag)printf("Poor stack!");
81      puts("");
82
83   }
84 }

View Code

转载于:https://www.cnblogs.com/chujian123/p/3892151.html

Inna and Sequence相关推荐

  1. Codeforces Round #220 (Div. 2)

    A. Inna and Pink Pony 题意:给出如下参数,          n, m, i, j, a, b (1 ≤ n, m ≤ 106; 1 ≤ i ≤ n; 1 ≤ j ≤ m; 1  ...

  2. 线段树详解 (原理,实现与应用)

    线段树详解 By 岩之痕 目录: 一:综述 二:原理 三:递归实现 四:非递归原理 五:非递归实现 六:线段树解题模型 七:扫描线 八:可持久化 (主席树) 九:练习题 一:综述 假设有编号从1到n的 ...

  3. 【转载】线段树题目2

    1.hdu1166 敌兵布阵 更新节点,区间求和. 2.hdu1754 I Hate It 更新节点,区间最值. . 3.hdu1698 Just a Hook 成段更新,总区间求和. . 4.hdu ...

  4. Bi-LSTM-CRF for Sequence Labeling

    做了一段时间的Sequence Labeling的工作,发现在NER任务上面,很多论文都采用LSTM-CRFs的结构.CRF在最后一层应用进来可以考虑到概率最大的最优label路径,可以提高指标. 一 ...

  5. Oracle 12C -- 基于sequence的列的默认值

    12C支持先创建一个sequence,然后再将该sequence指定为某个列的值的默认表达式. 和"identity column"具有以下不同点: ·对列的个数没有限制 ·seq ...

  6. DP UVALive 6506 Padovan Sequence

    题目传送门 /*题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[ ...

  7. HDOJ-2062 :Subset sequence(DP)

    题目:求子集序列 Consider the aggregate An= { 1, 2, -, n }. For example, A1={1}, A3={1,2,3}. A subset sequen ...

  8. Gold Code,Gold Sequence

    Gold Code Gold Code是以Robert Gold的名字命名的.它是一组特殊的二进制随机(伪随机)序列,其中成员序列之间的相关性很小.由于这种特性(较小的相关性),它被广泛地用作各种无线 ...

  9. HDU 1711 Number Sequence(KMP算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/ ...

最新文章

  1. __new__ __init__区别
  2. Python类与对象技巧(2):拓展子类属性
  3. java输入流读取几行文本_Java基础笔记Day_16
  4. 2d fft matlab,证明2D-FFT能够拆分成两个1D-FFT
  5. MATLAB double、str、cell间的类型转换
  6. linux内核的I2C子系统详解4——i2c-s3c2410.c文件中的adapter、algorithm
  7. android ListView几个比较特别的属性
  8. 局域网如何通过SSH 2连接上VMware 10虚拟机新装的centOS系统远程登录
  9. vscode-代码文件对比
  10. python编写txt阅读器程序_Python 制作简易小说阅读器
  11. 百度地图和谷歌地图经纬度互转
  12. 法国语言学校c1,法国留学的语言要求是什么?
  13. java访问domino数据库_关于Java与Domino数据库之间的操作
  14. unraid虚拟linux系统,unRAID Linux环境下自作启动U盘
  15. 【HDU3292】数学_佩尔方程
  16. 关于 css 中的转换属性,CSS3中的transform转换属性
  17. ViewData与ViewBag的使用和区别
  18. 主共振、超谐波共振、亚谐波共振与次共振
  19. BNET创始人刘建军:BNET破解当今通信网络三大痛点
  20. acm的比赛经验和组队说明

热门文章

  1. 说一下StoreBoard和纯代码编程各有什么好处吧
  2. 设计模式系列--Strategy
  3. checksum table 【转】
  4. 最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载)
  5. Web安全(下)---主动类安全产品技术分析
  6. Android Glide加载图片成圆形
  7. Android 如何在App中启动系统闹钟
  8. MySQL函数大全 及用法示例
  9. 怎么解决64位Access与32位不能同时安装的问题
  10. 2018年12月7日 字符串格式化2 format与函数1