GESP2026年6月认证C++八级( 第二部分判断题(1-10))精讲



第1题 加法原理

若一项任务可从两种互斥的方案中选择一种完成,其中方案A有a种做法,方案B有b种做法,则总做法数为a+b。

答案:正确(√)


1、为什么?

(1)这是排列组合最基础的两大原理之一。

假设今天放学有两种方式:


(2)方案A:

骑自行车

有3辆可以骑


(3)方案B:

坐公交车

有2条线路


(4)注意:

骑车和坐公交不能同时进行。


(4)因此:

复制代码
总方案
=
3+2
=
5

2、这就是

加法原理(分类计数原理)


3、记忆口诀

互斥(只能选一个) → 相加。



第2题 圆排列

n个不同元素围成一圈,只把旋转视为相同,翻转不同,方案数为(n−1)!。

答案:正确(√)


1、为什么?

(1)排成一圈时:

例如

复制代码
ABCDE

旋转以后

复制代码
BCDEA

视为没有区别。


(2)所以固定一个人。

剩下

复制代码
n-1

个人排列。

因此:

复制代码
(n-1)!

2、注意陷阱

(1)如果题目说:

旋转、翻转都一样。


(2)那答案就是:

复制代码
(n-1)!/2

这是考试喜欢出的坑。



第3题 可重复组合

从n个不同元素中可重复地选k个且不考虑顺序,方案数为C(n+k,k)。

答案:错误(❌️)


1、这是经典:

插板法(Stars and Bars)


2、例如:

(1)三种水果:

苹果

香蕉

橘子

可以买4个。


(2)可以买:

复制代码
苹果 苹果 苹果 苹果

(3)也可以买:

复制代码
苹果 香蕉 香蕉 橘子

......

公式就是:

也是

两种写法一样。



第4题 杨辉三角

1、杨辉三角DP转移公式:

答案:错误(❌️)


2、这就是

杨辉三角递推

(1)例如:

复制代码
      1
    1   1
  1   2   1
1   3   3   1

为什么3出现?


(2)因为:

复制代码
1+2=3

每一个数字:

都是:

左上 + 右上。

所以组合数DP全部来自这里。



第5题 快速幂

快速幂可以在O(logn)时间计算aⁿ。

答案:正确(√)


1、很多同学会写:

复制代码
long long ans=1;
for(int i=1;i<=n;i++)
    ans*=a;

这是:

复制代码
O(n)

2、快速幂:

不断平方。


3、例如:

复制代码
3^13

不用乘13次。


(1)指数:

复制代码
13

↓

6

↓

3

↓

1

↓

0

不断减半。


(2)因此:

时间复杂度:

复制代码
O(logn)

4、记忆口诀

指数减半。

底数平方。

奇数乘答案。



第6题 Dijkstra

只要没有负权环,Dijkstra就一定正确。

答案:错误(×)


1、这是八级经典陷阱。

很多同学容易和Bellman-Ford混。


2、Dijkstra要求

必须:

所有边权非负。

哪怕只有:

复制代码
一条负边

都有可能算错。


3、例如:

复制代码
A→B =2

A→C =5

C→B =-10

(1)真正最短:

复制代码
A→C→B

=-5

(2)但Dijkstra可能先确定B,

以后就不会修改。

因此:

错误。


4、谁能处理负边?

Bellman-Ford

SPFA

Floyd

都可以。



第7题 最小生成树唯一

连通图所有边权互不相同,则MST唯一。

答案:正确(√)


1、为什么?

(1)Kruskal排序以后:

边权:

复制代码
1

2

3

4

没有任何两条边一样。


(2)所以:

每一步:

选谁

没有争议。

因此:

最终树唯一。


2、如果:

有很多

复制代码
权值一样

可能出现:

很多种MST。



第8题 圆内判断

判断是否在圆内,可以比较x²+y²和r²,不需要开平方。

答案:正确(√)


1、这就是前面选择题第8题。

(1)因为:


(2)平方以后:


2、比赛里经常这样写。

因为:

  • 更快

  • 没误差



第9题 二分答案

check(x)不满足单调性,也一定可以二分答案。

答案:错误(×)


1、这是整个二分答案最重要条件。

为什么?

(1)例如:

复制代码
答案:

1 2 3 4 5 6

(2)check:

复制代码
F

F

T

T

T

T

(3)这就是:

单调。

二分才能找。


2、如果不满足单调性:

就不能二分。



第10题 归并排序

归并排序是一种稳定排序,复杂度O(nlogn)。

答案:正确(√)


1、归并排序:

(1)每层:

复制代码
O(n)

(2)高度:

复制代码
logn

(3)因此:

复制代码
O(nlogn)

2、为什么稳定?

(1)例如:

复制代码
5A

5B

两个5。


(2)归并时:

如果相等,

总是:

先放左边。

于是:

A仍然在B前面。


(3)所以:

相对顺序不会改变。

这就是:

稳定排序。


本套判断题总结

题号 答案 核心考点 是否高频
1 加法原理(分类计数) ⭐⭐⭐⭐
2 圆排列公式 ⭐⭐⭐⭐
3 × 可重复组合(插板法) ⭐⭐⭐⭐⭐
4 × 杨辉三角递推 ⭐⭐⭐⭐⭐
5 快速幂 O(logn) ⭐⭐⭐⭐⭐
6 × Dijkstra不能处理负边 ⭐⭐⭐⭐⭐
7 边权互异 ⇒ MST唯一 ⭐⭐⭐⭐
8 圆内判断比较平方 ⭐⭐⭐
9 × 二分答案必须满足单调性 ⭐⭐⭐⭐⭐
10 归并排序稳定且 O(nlogn) ⭐⭐⭐⭐⭐

请重点记忆下面五句话:

  1. 互斥事件用加法原理,独立步骤用乘法原理。

  2. Dijkstra 只能处理非负权图,遇到负边就不能保证正确。

  3. 二分答案的前提是 check() 函数具有单调性。

  4. 线性筛能够保证每个合数只被它的最小质因子筛去一次,因此时间复杂度为 (O(n))。

  5. 归并排序既是稳定排序,时间复杂度也是 (O(n\log n))。


相关推荐
青少儿编程课堂7 小时前
威佐夫博弈(双堆取子游戏)解析
c++·python·算法·bfs·信息学竞赛
Keven_1116 小时前
算法札记:ACM适用的很骚的C++语法(持续更新)
开发语言·c++
mengzhi啊16 小时前
QPluginLoader 动态 DLL 插件版,支持插件之间通信,广播。请求和应答
c++·qt
老赵的博客19 小时前
c++ QT之动态库加载问题
c++·qt
(Charon)19 小时前
【C++】定时器进阶:使用最小堆管理定时任务
c++·算法
hansang_IR19 小时前
【题解】 [省选联考 2021 A/B 卷] 卡牌游戏
c++·算法
lzx_00220 小时前
C++11(一)
开发语言·c++·算法
小七在进步21 小时前
C++入门(2)
java·jvm·c++
en.en..1 天前
C语言核心解析:#define与typedef本质区别
开发语言·c++·算法
码匠许师傅1 天前
【设计模式精讲】26.策略模式(Strategy)
c++·设计模式·策略模式·uml