他很喜欢去看这些花,有一天他看了n次,并将n次他看花的种类是什么按照时间顺序记录下来。ios
记录用a[i]表示,表示第i次他看了a[i]这朵花。web
小红很好奇,她有Q个问题,问[l,r]的时间内,小明一共看了多少朵不一样的花儿,小明由于在忙着欣赏他的花儿,因此想请你帮他回答这些问题。编程
接下来输入n个数a[1]~a[n],a[i]表示第i次,小明看的花的种类;svg
输入一个数Q(1<=Q<=1000000);表示小红的问题数量。spa
输入Q行 每行两个数l,r(1<=l<=r<=n);表示小红想知道在第l次到第r次,小明一共看了多少不一样的花儿。code
每一行输出一个数 表示小明在[l,r]的时间内看了多少种花。xml
#include <iostream> #include <set> #include <vector> using namespace std; int main() { vector<int> vec; vector<int> result; set<int> s; int n, m; cin >> n >> m; while (n > 0) { int x; cin >> x; if (x > 0 && x <= m) { vec.push_back(x); n--; } else { cout << "输入有误" << endl; return -1; } } int question; cin >> question; while (question > 0) { s.clear(); int l, r; cin >> l >> r; for (int i = l - 1; i < r; ++i) { s.insert(vec[i]); } result.push_back(s.size()); question--; } for (auto it : result) { cout << it << endl; } system("pause"); return 0; }
大体思路
利用vector和set容器去重的特色,结合在一块儿统计一段时间看花的种类,奈什么时候间超时,经过率53.3%ci