1057. Stack (30)
来源:互联网 发布:mac os x10.7.5下载 编辑:程序博客网 时间:2024/05/16 18:04
http://blog.csdn.net/x_iya/article/details/8943264
使用树状数组,上面是树状数组的介绍
有一个很大的坑是用cout的时候超时,改成printf就ok了,做题感觉输入输出还是用printf和scanf最快,最稳
#include<iostream>#include<string>#include<vector>#include<algorithm>#pragma warning(disable:4996)using namespace std;int c[100001] = {0};int lowbit(int n){ return n&(-n);}int GetSum(int index){ int sum=0; while (index != 0) { sum += c[index]; index -= lowbit(index); } return sum;}void Add(int value, int index){ while (index < 100000) { c[index] += value; index += lowbit(index); }}int Getmid(int size){ int index = (1 + size) / 2; int low = 1, high = 100000,mid; while (low < high) { mid = (low + high) / 2; if (GetSum(mid) < index) low = mid + 1; else high = mid; } return low;}int main(){ vector<int> sort_vec; std::ios::sync_with_stdio(false);// cout << unitbuf;// freopen("0.txt", "w", stdout); vector<int> vec; int N; cin >> N; for (int t = 0;t < N;t++) { string str; cin >> str; switch (str[1]) { case 'o': { if (vec.empty()) printf("Invalid\n" ); else { int temp = vec.back(); printf("%d\n", temp); Add(-1, temp); vec.pop_back(); } } break; case 'e': { if (vec.empty()) printf("Invalid\n"); else printf("%d\n", Getmid(vec.size())); } break; case 'u': { int x; cin >> x; vec.push_back(x); Add(1, x); } break; } }}
0 0
- 1057. Stack (30)-PAT
- 1057. Stack (30)
- 1057. Stack (30)
- 1057. Stack (30)
- 1057. Stack (30)
- pat 1057. Stack (30)
- 1057. Stack (30)--看
- 1057. Stack (30)
- PAT 1057. Stack (30)
- 1057. Stack (30)
- 【PAT】1057. Stack (30)
- 1057. Stack (30)
- 1057. Stack (30)
- 1057. Stack (30)
- 1057. Stack (30)
- 1057. Stack (30)
- 1057. Stack (30)
- 1057. Stack (30)
- Ubuntu下Qt开发环境的搭建
- System类、Runtime类、Math类、Date类、Calendar类
- P1164 小A点菜
- Xcode 8 证书管理 Signing for "xxxx" requires a development team
- Spring4.3.x 浅析xml配置的解析过程(3)——使用DocumentLoader创建Document对象
- 1057. Stack (30)
- 斜率优化
- Android Studio 关于用户ID信息的保存
- 线程安全
- 设计模式之适配器模式
- Python闭包编程
- |Hdu 2087|KMP|剪花布条
- String StringBuilder StringBuffer
- 我入门的几本书