90最后一个点MLE了。。求优化

P1150 Peter 的烟

CKAO @ 2021-12-29 16:04:47

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    int n,k,res=0;
    cin>>n>>k;
    vector<int>a(n,1);
    for (int i=0;i<a.size();i++)
    {
        a[i]=0;
        res++;
        if ((i+1)%k==0)
            a.push_back(1);

    }
    cout<<res;
    return 0;
}

by coderJT @ 2021-12-29 16:54:46

数据范围到了10^8还打不住,就别一个一个算了。

所有烟的属性都是一样的,无论它是从哪里得来的,所以没有必要存储下来。

只需要记录当前数量,在换不了更多的烟之前,每次让当前数量减去k的整数倍、加上这个倍数并记录答案即可。


|