一道从入门到入土的数列题
  • 板块灌水区
  • 楼主Davidben
  • 当前回复32
  • 已保存回复32
  • 发布时间2021/10/10 19:33
  • 上次更新2023/11/4 04:08:12
查看原帖
一道从入门到入土的数列题
484468
Davidben楼主2021/10/10 19:33
题目描述
蒜头君写了一个数列,这个数列可以分为连续的 n 段,其中第 i 段是 ai 个 numi 。然后他找了花椰妹玩游戏,花椰妹一共会提出 q 个问题,第 i 个问题是问这个数列的第 ki 个数是多少,你能帮蒜头君回答花椰妹的问题吗?

输入格式
第一行,两个正整数 n,q(1≤n,q≤105)。

接下来 n 行,每行两个正整数 ai,numi(1≤ai,numi≤109) 。

再接下来 q 行,每行一个正整数 ki(1≤ki≤∑ai)
输出格式
输出 q 行,每行一个整数,表示每次询问的结果。

数据范围
对于 30% 的数据,∑ai≤106 。

对于 70% 的数据,1≤n,q≤103 。

对于 100% 的数据,1≤n,q≤105 。

输出时每行末尾的多余空格,不影响答案正确性

样例输入
2 3
1 2
2 3
1
2
3
样例输出
2
3
3

仔细一看,哇,这么水的题

#include<bits/stdc++.h>
using namespace std;
const int qwq = 1e7 +10;
int a[qwq];
int num = 1;
int main(){
    int n,m;
    cin>>n>>m;
    int k,l;
    int t;
    for(int i = 1;i <= n;i++){
        cin>>k>>l;
        t = k;
        while(t != 0){
            a[num] = l;
            t--,num++;
        }
    }
    int o;
    while(m--){
        cin>>o;
        cout<<a[o]<<endl;
    }
    return 0;
}

然而运行错误,

确实运行错误错误的不亏,因为这个的话我肯定会数组越界,于是我去借鉴了下隔壁分数比我高10分的代码

#include<bits/stdc++.h>
using namespace std;
//来注释祭天法力无边!!!!!!!!!
//I AK IOI!!!!!!!!!
//I AK IOI!!!!!!!!!
//I AK IOI !!!!!!!!!
//I AK IOI!!!!!!!!!
//I AK IOI!!!!!!!!!
//I AK IOI !!!!!!!!!
//I AK IOI!!!!!!!!!
//I AK IOI!!!!!!!!!
//I AK IOI !!!!!!!!!
//RP++!!!!!!!!!
//RP++!!!!!!!!!
//RP++!!!!!!!!!
//RP++!!!!!!!!!
//RP++!!!!!!!!!
//RP++!!!!!!!!!
//RP++!!!!!!!!!
//RP++!!!!!!!!!
int flag = -999;
//RP++!!!!!!!!!
struct str {
    int a, b;
} a[10000150];
int main() {
    long long n, q, num;
    scanf("%lld%lld", &n, &q);
    for(int i = 1; i <= n; i++) {
        scanf("%lld%lld", &a[i].a, &a[i].b);
    }
    for(int i = 1; i <= q; i++) {
        scanf("%lld", &num);
        long long k = 1;
        while(num > 0) {
            if(num > a[k].a) {
                num = num - a[k].a;
                k++;
            } else {
                break;
            }
        }
        if(flag != -1) {
            printf("%lld\n", a[k].b);
        }
    }
    return 0;
}

然后发现改完之后时间超限80分

怎么优化我这两个代码啊,这题的大概思路是什么

2021/10/10 19:33
加载中...