🚀 《NOIP / CSP常见爆炸点清单》(实战版)

1 阅读2分钟

🚀 《NOIP / CSP常见爆炸点清单》(实战版)

👉 核心一句话:

❗很多题不是不会做,是死在细节上


🧨 一、数据类型爆炸(最常见🔥)

❌ 错误写法

int sum = 0;

💥 场景

n = 2e5
Ai = 1e6

👉 总和:

2e11(超 int

✅ 正确写法

long long sum = 0;

❗ 输出也要改!

printf("%lld", sum);

🧨 二、数组越界(隐蔽杀手)

❌ 错误

const int N = 2e5+5;

但数据:

n = 2000000

👉 直接炸


✅ 正确习惯

const int N = 2000005; // 留余量

🧨 三、栈爆炸(很多人不知道)

❌ 写法

int a[n];   // n 很大

👉 栈只有几 MB


💥 结果

  • RE
  • 随机错误

✅ 正确写法

const int N = ...;
int a[N];   // 全局

🧨 四、输入输出超时

❌ 慢写法

cin >> x;

(大数据)


✅ 优化写法

ios::sync_with_stdio(false);
cin.tie(0);

或:

scanf("%d",&x);

🧨 五、重复计算(时间爆炸)

❌ O(n²)

for(i)
  for(j)

💥 数据:

n = 2e5

👉 直接 TLE


✅ 思路

  • 前缀和
  • 排序
  • 双指针
  • 哈希

🧨 六、排序后忘记“原位置”

❌ 错误

sort(a,a+n);

👉 输出顺序错


✅ 正确

struct node{
    int val, id;
};

🧨 七、相同元素处理错误(你这题的坑🔥)

❌ 错误

每个 i 单独算

👉 相同数结果不同 ❌


✅ 正确

一组一组处理(i → j)

🧨 八、边界没处理

常见:

  • n = 1
  • 全相等
  • 全递增 / 递减

🧨 九、未初始化

int a[100];

👉 里面是垃圾值


int a[100] = {};

🧨 十、爆内存(高级一点)

vector<int> a(1e8);

👉 直接 MLE



🎯 课堂总结(你可以直接讲)

你可以用这段收尾👇


🎤 讲课金句

算法题有两关:

第一关:你会不会做
第二关:你写的代码能不能过

❗很多人死在第二关


🔥 再送你一个“竞赛口诀”(很好用)

大数据 → 想复杂度  
大数值 → 想 long long  
排序后 → 想原位置  
有重复 → 想分组