pat 1057. Stack (30)
来源:互联网 发布:c4d mac破解版下载 编辑:程序博客网 时间:2024/05/21 19:22
利用树状数组来做,树状节点储存该区间内的数字个数
树状数组每个节点x负责的区间为[x - 2^k + 1,x]
其中k为x用二进制表示中末尾0的个数
#include<stdio.h>#include<stack>#include<algorithm>#include<string.h>using namespace std;#define SIZE 100001struct key{ int num; int flag;};class TreeArr{private: int a[SIZE]; int lowbit(int x){ return x&(-x); }public: TreeArr(){ memset(a, 0, sizeof(a)); } void update(int num, int value){ while (num <= SIZE){ a[num] += value; num += lowbit(num); } } int sum(int pos){ int value(0); while (pos>0){ value += a[pos]; pos -= lowbit(pos); } return value; } int find(int num, int begin = 0, int end = SIZE){ if (begin == end) return begin; int mid = (begin + end) / 2; if (sum(mid) >= num){ return find(num, begin, mid); } else return find(num, mid+1, end); }};int main(){ stack<int>s; TreeArr tree; freopen("1.in", "r", stdin); int n; scanf("%d", &n); while (n--){ char cmd[20]; scanf("%s", cmd); if (strcmp(cmd, "Pop") == 0){ if (!s.size()) printf("Invalid\n"); else{ printf("%d\n", s.top()); tree.update(s.top(), -1); s.pop(); } } else if (!strcmp(cmd, "Push")){ int key; scanf("%d", &key); s.push(key); tree.update(key, 1); } else if (!strcmp(cmd, "PeekMedian")){ if (!s.size()) printf("Invalid\n"); else{ printf("%d\n", tree.find((s.size()+1) / 2)); } } } return 0;}
0 0
- 1057. Stack (30)-PAT
- pat 1057. Stack (30)
- PAT 1057. Stack (30)
- 【PAT】1057. Stack (30)
- PAT 1057. Stack (30)
- PAT A 1057. Stack (30)
- PAT (Advanced) 1057. Stack (30)
- PAT(A) - 1057. Stack (30)
- 【PAT甲级】1057. Stack (30)
- PAT(A) - 1057. Stack (30)
- PAT甲级1057. Stack (30)
- PAT-A-1057. Stack (30)
- PAT 甲级 1057. Stack (30)
- 浙大2013复试:PAT 1057. Stack (30)
- PAT甲级练习1057. Stack (30)-未完成
- PAT 1057. Stack (30) 中位数;树状数组
- 【PAT】【Advanced Level】1057. Stack (30)
- PAT 1057. Stack
- 算法训练 矩阵乘法
- OA的学习--第一天的内容--环境搭建
- 解决ListView中使用EditText所遇到的一些冲突
- PAT 1020. Tree Traversals (25)
- 返回局部变量的问题
- pat 1057. Stack (30)
- 黑马程序员---OC--面向对象三大特性
- Java设计模式——适配器模式(Adapter)
- MySQL语句总结
- PAT 1021. Deepest Root (25)
- sql oracle循环插入数据
- MySQL视图模型及关联模型理解
- html5,audio音乐播放器
- Spark SQL and DataFrame for Spark 1.3