uva 501 Black Box
2013-07-31 19:08
10 查看
点击打开链接uva 501
思路: vector模拟
分析:
1 题目的规模是n和m最大为30000,那么明显复杂度要为O(nlogn)级别才能过
2 由于枚举u数组需要n,所以剩下的是logn的时间,明显只有二分可以做到。所以利用vector来模拟,插入的时候利用二分找到位置即可
代码:
思路: vector模拟
分析:
1 题目的规模是n和m最大为30000,那么明显复杂度要为O(nlogn)级别才能过
2 由于枚举u数组需要n,所以剩下的是logn的时间,明显只有二分可以做到。所以利用vector来模拟,插入的时候利用二分找到位置即可
代码:
#include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int MAXN = 30010; int n , m; int num[MAXN]; void solve(){ vector<int>v; vector<int>::iterator it; v.clear(); int x , pos = 0; int index = 0; while(m--){ scanf("%d" , &x); while(v.size() != x){ it = lower_bound(v.begin() , v.end() , num[pos]); v.insert(it , num[pos++]); } printf("%d\n" , v[index++]); } } int main(){ int Case; bool first = true; scanf("%d" , &Case); while(Case--){ scanf("%d%d" , &n , &m); if(first) first = false; else puts(""); for(int i = 0 ; i < n ; i++) scanf("%d" , &num[i]); solve(); } return 0; }
相关文章推荐
- UVA 10085 - The most distant state
- UVA 12503 - Robot Instructions
- [回溯&&剪枝]Firetruck UVA208
- UVA 1434 - YAPTCHA(数论)
- UVA 327 - Evaluating Simple C Expressions
- UVA - 1595 Symmetry
- UVa 11806 Cheerleaders 拉拉队
- uva 10167 Birthday Cake
- UVA11426GCD - Extreme (II)
- Abbott的复仇(Abbott's Revenge, ACM/ICPC World Finals 2000, UVa 816)<经典BFS>
- UVa 10680 - LCM
- UVA - 147 Dollars (完全背包 入门题)
- UVA-11478 - Halum(差分约束系统)
- uva 712
- UVALive - 3637 The Bookcase
- uva599 The Forrest for the Trees并查集求树的数目
- UVa 100 - The 3n + 1 problem
- uvalive 3695
- uva712_S树
- UVa253 - Cube painting