CSP-j 2023

一,选择题

1.

unsignedunsigned无符号类型

constconst常量

staticstatic全局变量控制前缀,保持每次定义的原值

mutablemutable 使用于

2.

(八进制)(八进制)

1234567012345670

0765432107654321

——————————

2222221122222211

3.

unionunion 联合体/共用体:

所有内容共用内容之中最长一个的空间

插入:

引用:

函数:

传值调用 // 9595%

传址

引用调用

指针变量:

intint *pp;

表示指向一个地址

p=p=&aa; //&==取地址符;

当:

cout<<pcout<<p

//输出的是pp的内容;

当:

cout<<(*p); //输出的是p指向的地址中的内容;

指向指针的指针:

intint **qq;

例:
int a=3;

int *p=$a; //引用a的地址

cout<<a<<endl;

cout<<(&a)<<endl;

cout<<p<<endl;

cout<<(*p)<<endl; //=a
输出:

33

0x6ffelc0x6ffelc

0x6ffelc0x6ffelc

33

引用:

例:
int a;
void num(int &x){  //&x为引用
  cout<<x;
  return ;
}
int main(){
  a=25008;
  num(a);
  return 0;
}
输出:

2500825008

4.

链表:

方法:

画图

结构:
双向链表:

前指针 //指向前节点的后指针 | 数据 | 后指针 //指向后节点的前指针末尾nullnull

单向链表:

数据 | 后指针 //指向后节点的数据的地址末尾nullnull

5.

三叉树:

个数:

//根节点为11层;

33层数1-1

6.

枚举:

选一节:

11 22 33 44 55 66 77———— 77

选二节:

1414 1515 1616 1717

2525 2626 2727

3636 3737

4747———————— 1010

选三节:

147147——————— 11

规律:

1/1/我是谁 d[i]d[i]:方案数

2/2/我从哪里来?

d[i]+=d[i3]d[i]+=d[i-3]

d[i]+=d[i1]d[i]+=d[i-1]   d[i]=d[i3]+d[i1]d[i]=d[i-3]+d[i-1]   3/3/边界值

d[1]=2d[1]=2

d[2]=3d[2]=3

d[3]=4d[3]= 4

7.

8.

前缀:

66 22 33 ++ - 33 88 22 // ++ * 22 ^ 33 ++

转化过程:

[[ 66 - (( 22 ++ 33 )) ]] * [[ 33 ++ 88 // 22 ]] ^ 22 ++ 33

中缀:

(6 - ( 2 + 3 ) * 3 + 8 / 2 ) ^ 2 + 3

9.

八转二

10.

哈夫曼:

1/1/贪心算法

2/2/非前缀编码

11~14.

二,阅读程序

1.程序一

海伦公式

2.程序二

动态规划

Vector:
一维:
Vector<int> a;

a.push_back(数) //增加内存并将数存入
二维:
Vector<vector<int>> a;

a.push_back(数组) //增加内存并将数组存入

填表法

3.程序三

画图

三,完善程序

1.程序一

二分查找:

1.1.通过lrcheckl,r,check查找,l>rl>r结束查找

2.2.再根据题目填空

2.程序二

动态规划

完善程序 答题技巧:

1.1.判定题型

2.2.判断选项,排除法

3.3.选项带入代码,判断,蒙

4.4.变成程序阅读题,判断可行性

5.5.自行迭代,运行,判断对错

原文:

# CSP-j 2023

## 一,选择题

### 1.

$unsigned$ 为==无符号==类型

$const$ 为==常量==

$static$ 为==全局变量控制前缀==,保持==每次定义的原值==

$mutable$ 使用于==类==中
 
### 2.

$(八进制)$

$12345670$

$07654321$

$—————$

$22222211$
 
### 3.

$union$ 联合体/共用体:

所有内容==共用==内容之中==最长一个==的空间
 
### 插入:
 
#### 引用:

##### 函数:

传值调用 // $95$%

传址

引用调用

##### 指针变量:

$int$ *$p$;

表示==指向一个地址==:

$p=$&$a$;  //&$=$取地址符;

###### 当:

$cout<<p$; 

//输出的是$p$的内容;
###### 当:
cout<<(*p);
//输出的是p指向的地址中的内容;
 
##### 指向指针的指针:

$int$ **$q$;
 
##### 例:
```cpp
int a=3;

int *p=$a; //引用a的地址

cout<<a<<endl;

cout<<(&a)<<endl;

cout<<p<<endl;

cout<<(*p)<<endl; //=a
    ```

    ##### 输出:

    $3$

    $0x6ffelc$

    $0x6ffelc$

    $3$

    #### 引用:

    ##### 例:
```cpp
int a;
void num(int &x){  //&x为引用
  cout<<x;
  return ;
}
int main(){
  a=25008;
  num(a);
  return 0;
}
    ```
##### 输出:

$25008$

### 4.

#### 链表:

##### 方法:
画图

##### 结构:

###### 双向链表:

**前指针** //指向**前节点的后指针** $|$ 数据 $|$ **后指针** //指向**后节点的前指针**,**末尾**为 $null$

###### 单向链表:

数据 | **后指针** //指向**后节点的数据的地址**,**末尾**为 $null$
 
### 5.

#### 三叉树:

##### 个数:

//根节点为$1$层;

$3$<sup>层数$-1$</sup>;
 
### 6.

#### 枚举:

##### 选一节:

$1$ $2$ $3$ $4$ $5$ $6$ $7$———— $7$

##### 选二节:

$14$ $15$ $16$ $17$

$25$ $26$ $27$

$36$ $37$

$47$———————— $10$
##### 选三节:

$147$——————— $1$

#### 规律:

$1/$我是谁 $d[i]$:方案数

$2/$我从哪里来?

$d[i]+=d[i-3]$

$d[i]+=d[i-1]$
 
$d[i]=d[i-3]+d[i-1]$
 
$3/$边界值

$d[1]=2$

$d[2]=3$

$d[3]= 4$
 
### 7.

略
 
### 8.

#### 前缀:

$6$ $2$ $3$ $+$ $-$ $3$ $8$ $2$ $/$ $+$ $*$ $2$ ^ $3$ $+$

##### 转化过程:

$[$ $6$ $-$ $($ $2$ $+$ $3$ $)$ $]$ $*$ $[$ $3$ $+$ $8$ $/$ $2$ $]$ ^ $2$ $+$ $3$

#### 中缀:
(6 - ( 2 + 3 ) *  3 + 8 / 2 ) ^ 2 + 3
 
### 9.

#### 八转二
 
### 10.

#### 哈夫曼:

$1/$==贪心==算法

$2/$==非前缀==编码
 
### 11~14.

略
 
## 二,阅读程序

### 1.程序一

#### ==海伦公式==

### 2.程序二

#### ==动态规划==

##### Vector:

###### 一维:
```cpp
Vector<int> a;

a.push_back(数) //增加内存并将数存入
    ```
    ###### 二维:
```cpp
Vector<vector<int>> a;

  a.push_back(数组) //增加内存并将数组存入
    ==填表法==

    ### 3.程序三

    #### 画图

    ## 三,完善程序

    ### 1.程序一

#### 二分查找:

$1.$通过$l,r,check$查找,$l>r$结束查找

$2.$再根据题目填空

### 2.程序二

#### 动态规划
 
### 完善程序 答题技巧:

$1.$判定==题型==

$2.$判断选项,==排除法==

$3.$选项==带入代码==,判断,蒙

$4.$变成程序阅读题,==判断可行性==

$5.$自行==迭代,运行,判断对错==