弱小的我只能过样例。。。
查看原帖
弱小的我只能过样例。。。
540872
z_yk楼主2024/6/8 22:07
#include <iostream>

using namespace std;

int n, m, l, r, num;
short a[11451][1145]; 

void build_chart() {//建表
    cin >> n;
    int tmp;
    for (int i = 1; i <= n; ++i) {
        cin >> tmp;
        a[tmp][++a[tmp][0]] = i;
    }
    return;
}

void search_chart() {//查表
    cin >> m;
    int ans = 0;
    while (m--) {
        cin >> l >> r >> num;
        if (a[num][a[num][0]] < l)
            cout << "0" << endl;
        else {
            for (int i = 1; i <= a[num][0]; ++i) {
                if (a[num][i] >= l && a[num][i] <= r)
                    ans++;
            }
            cout << ans << endl;
        }
    } 
}

int main() {
    int cnt;
    cin >> cnt;
    while (cnt--) {
        build_chart();
        search_chart();
        for(int i=1;i<=1145;++i){
        	if(a[i][0]!=0 ){
        		for(int j=a[i][0];j>=0;--j)a[i][j]=0;//删除本次的表以便于建立新表
			}
		}
    }
    
    return 0;
}

我的想法是,实现读入的时候将数字出现的位置存在一个a里面,然后后期查表,但是蘜蒻不会用vector和map(更别说莫队或者线段树了),会RE或MLE,但是我的代码只能过样例,所以弱小的我错在哪里

2024/6/8 22:07
加载中...