ST表TLE求助【蒟蒻】

P3865 【模板】ST 表

cin太慢,改成scanf就切了
by Buried_Dream @ 2022-01-23 21:54:47


```cpp #include<bits/stdc++.h> using namespace std; long long n,m,lx,rx; long long a[100005]={}; long long ST[101][100005]={}; long long loog[100005]={}; void STvoid() { for(int i=1;i<=n;i++) { ST[0][i]=a[i]; } long long p=loog[n]; for(int k=1;k<=p;k++) { for(int i=1;i<=n-(1<<k)+1;i++) { ST[k][i]=max(ST[k-1][i],ST[k-1][i+(1<<(k-1))]); } } return; } long long pix(long long l,long long r) { long long p=loog[r-l+1]; return max(ST[p][l],ST[p][r-(1<<p)+1]); } int main() { cin>>n>>m; loog[1]=0; for(int i=2;i<=n;i++) { loog[i]=loog[i>>1]+1; } for(int i=1;i<=n;i++) { scanf("%d", &a[i]); } STvoid(); for(int i=1;i<=m;i++) { scanf("%d %d", &lx, &rx); printf("%d\n", pix(lx, rx)); } return 0; } ```
by Buried_Dream @ 2022-01-23 21:55:20


快读快输 @[Colead](/user/243961)
by rsg23 @ 2022-01-23 21:56:13


@[TLE_Automation](/user/396974) @[rsg23](/user/384498) 我用了这个,理论上和scanf一样啊,但还是TLE两个: ``` ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); ```
by Colead @ 2022-01-23 21:57:29


@[Colead](/user/243961) `endl`好像也挺慢的。
by Carnival @ 2022-01-23 21:59:09


但用scanf确实能切,并且最慢的点才400ms @[Colead](/user/243961)
by Buried_Dream @ 2022-01-23 21:59:34


试试吧。时限0.8
by Colead @ 2022-01-23 22:00:03


@[Colead](/user/243961) endl 改成 '\n'就切了,并且最慢的点300ms
by Buried_Dream @ 2022-01-23 22:00:40


@[Colead](/user/243961) [Link](https://www.luogu.com.cn/record/67696297)
by Buried_Dream @ 2022-01-23 22:01:22


@[TLE_Automation](/user/396974) 好,我试试。(本蒟蒻不会printf啊)
by Colead @ 2022-01-23 22:01:54


| 下一页