解题思路:

前面加上

ios::sync_with_stdio(false);

cin.tie(nullptr); 


注意事项:
我不到啊,豆包说的:

我用最直白、最容易懂的方式告诉你:

为什么不加那两行会超时,加上就 AC?

一句话总结

cin /cout 默认很慢,那两行是给 cin /cout “开加速”,不加就会因为输入输出太慢超时。

1. 默认的 cin 为什么慢?

C++ 为了兼容 C 语言的 scanf/printf,

默认开启了同步机制:

每次 cin 读数据,都要和 C 的 stdio 同步一下。

就像:

你每写一个字,都要停下来和别人核对一遍 → 超级慢

数据量大的时候(比如蓝桥杯 1e5、1e6 数据)

cin 没加速 → 直接超时 TLE

2. 这两行到底干了什么?

cpp

运行

ios::sync_with_stdio(false);

关闭 cin 和 C 语言 scanf 的同步

→ 不用再互相核对,速度直接起飞

cpp

运行

cin.tie(nullptr);

解开 cin 和 cout 的绑定

→ cin 读的时候不用每次都刷新 cout

→ 又快一大截

3. 最直观的速度对比

表格

代码

速度

大数据量

不加那两行    慢 5~10 倍    必超时    

加上那两行    和 scanf 一样快    稳稳 AC    

蓝桥杯 90% 的 cin 超时,都是因为没加这两行!

4. 你只要记住一句话

写 C++ 算法题,main 函数第一行必须加这两句!

cpp

运行

int main() {
   ios::sync_with_stdio(false);
   cin.tie(0);  // 等价于 nullptr
   // ... 你的代码}

5. 最简单记忆法

不加 = 走路

加了 = 开跑车

数据量大的时候,走路当然到不了终点!


参考代码:

#include<iostream>

using namespace std;


int main()

{

ios::sync_with_stdio(false);

cin.tie(nullptr); 

    

    int T;

    cin>>T;

    while(T--){

    long long A,B,C,K;

    cin >> A >> B >> C >> K;

while(K--) {

long long newA = (B + C) / 2; 

            long long newB = (A + C) / 2;

            long long newC = (A + B) / 2;

            A = newA;

            B = newB;

            C = newC;

            if (A == B && B == C) break;

}

cout << A << " " << B << " " << C << endl;

    }

    return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论