Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_algorithm
提交
4a74c7a3
S
skill_tree_algorithm
项目概览
CSDN 技术社区
/
skill_tree_algorithm
通知
9
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
4a74c7a3
编写于
10月 23, 2021
作者:
每日一练社区
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add exercises
上级
9cf44ac3
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
260 addition
and
93 deletion
+260
-93
data/2.算法中阶/1.pat甲级/10_World Cup Betting/desc.md
data/2.算法中阶/1.pat甲级/10_World Cup Betting/desc.md
+15
-4
data/2.算法中阶/1.pat甲级/10_World Cup Betting/solution.cpp
data/2.算法中阶/1.pat甲级/10_World Cup Betting/solution.cpp
+29
-0
data/2.算法中阶/1.pat甲级/1_A+B for Polynomials 多项式相加/desc.md
data/2.算法中阶/1.pat甲级/1_A+B for Polynomials 多项式相加/desc.md
+14
-10
data/2.算法中阶/1.pat甲级/3_Counting Leaves/desc.md
data/2.算法中阶/1.pat甲级/3_Counting Leaves/desc.md
+12
-14
data/2.算法中阶/1.pat甲级/3_Counting Leaves/solution.cpp
data/2.算法中阶/1.pat甲级/3_Counting Leaves/solution.cpp
+17
-45
data/2.算法中阶/1.pat甲级/4_Spell It Right/desc.md
data/2.算法中阶/1.pat甲级/4_Spell It Right/desc.md
+3
-2
data/2.算法中阶/1.pat甲级/5_Sign In and Sign Out/desc.md
data/2.算法中阶/1.pat甲级/5_Sign In and Sign Out/desc.md
+5
-4
data/2.算法中阶/1.pat甲级/7_Elevator/desc.md
data/2.算法中阶/1.pat甲级/7_Elevator/desc.md
+11
-5
data/2.算法中阶/1.pat甲级/7_Elevator/solution.cpp
data/2.算法中阶/1.pat甲级/7_Elevator/solution.cpp
+31
-0
data/2.算法中阶/1.pat甲级/8_Product of Polynomials 多项式乘法/desc.md
data/2.算法中阶/1.pat甲级/8_Product of Polynomials 多项式乘法/desc.md
+18
-5
data/2.算法中阶/1.pat甲级/8_Product of Polynomials 多项式乘法/solution.cpp
....算法中阶/1.pat甲级/8_Product of Polynomials 多项式乘法/solution.cpp
+46
-0
data/2.算法中阶/1.pat甲级/9_Radix/desc.md
data/2.算法中阶/1.pat甲级/9_Radix/desc.md
+20
-4
data/2.算法中阶/1.pat甲级/9_Radix/solution.cpp
data/2.算法中阶/1.pat甲级/9_Radix/solution.cpp
+39
-0
未找到文件。
data/2.算法中阶/1.pat甲级/10_World Cup Betting/desc.md
浏览文件 @
4a74c7a3
## 标题
找最值
## 题目描述
输入A、B、C三组数,每组三个数,选取每组中最大的数并输出所对应的字符(A
\B\C
),并输出每组中最大的数
```a1, a2, a3```
#### 输入格式:
输入三行三列,每列代表一组数,每组三个数
#### 输出格式:
输出每组中最大的数以及组号,组号与最大的数之间用空格隔开,结果保留小数点后两位
#### 输入
```
1.1 2.5 1.7
1.2 3.1 1.6
4.1 1.2 1.1
```
#### 输出
\ No newline at end of file
```
B 2.50 B 3.10 A 4.10
```
\ No newline at end of file
data/2.算法中阶/1.pat甲级/10_World Cup Betting/solution.cpp
浏览文件 @
4a74c7a3
#include <iostream>
#include <string>
using
namespace
std
;
int
main
()
{
float
n
,
max
[
3
]
=
{
-
1
};
int
pos
[
3
];
string
s
[
3
]
=
{
"W"
,
"T"
,
"L"
};
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
for
(
int
j
=
0
;
j
<
3
;
j
++
)
{
cin
>>
n
;
if
(
n
>
max
[
i
])
{
max
[
i
]
=
n
;
pos
[
i
]
=
j
;
}
}
}
float
res
;
res
=
(
max
[
0
]
*
max
[
1
]
*
max
[
2
]
*
0.65
-
1
)
*
2
;
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
cout
<<
s
[
pos
[
i
]]
<<
" "
;
}
printf
(
"%.2f"
,
res
);
return
0
;
}
data/2.算法中阶/1.pat甲级/1_A+B for Polynomials 多项式相加/desc.md
浏览文件 @
4a74c7a3
## 标题
多项式相加
## 题目描述
给定两个多项式的信息,让我们求两个多项式相加的结果。每一个多项式输入一行,第一个数字是多项式的项数 后面每两个数据一组为一个项,分别是指数和系数。 输入的数据按照
**指数递减**
的顺序。
多项式A: $2.1
*x^3 + 1.0*
x^2$
多项式B: $0.0
*x^3 + 0.1*
x^2$
将两式相加得到 $2.1
*x^3 + 1.1*
x^2$
#### 输入
```
2 3 2.1 2 1.0
2 3 0.0 2 0.1
```
#### 输入解释
```
第一行第一个数字 2 ,表示两项:3*2.1 + 2*1.0
第一行第一个数字 2 ,表示两项:3*0.0 + 2*0.1
```
$$
第一行第一个数字 2 ,表示两项:2.1
*x^3 + 1.0*
x^2
$$
$$
第二行第一个数字 2 ,表示两项:0.0
*x^3 + 0.1*
x^2
$$
#### 输出
```
2 3 2.1 2 1.1
#### 输出解释
```
第一行第一个数字 2 ,表示两项:3*(2.1 + 0.0) + 2*(1.0 + 0.1)
合并后:3*2.1 + 2*1.1
```
\ No newline at end of file
#### 输出解释
上面两项相加的结果:
$$第一个数字 2 ,表示两项:2.1
*x^3 + 1.1*
x^2$$
\ No newline at end of file
data/2.算法中阶/1.pat甲级/3_Counting Leaves/desc.md
浏览文件 @
4a74c7a3
## 标题
求每一层叶子节点的个数
DFS简单运用
## 题目描述
输入一个值表示树中节点总数,另一个数表示非叶节点总数,接下来就是输入树的层次结构。要求判断出每一层有多少个叶节点并且输出
给定整数$a_1,a_2.....a_n$,判断是否可以从中选出若干数,使他们的和恰好为k。
#### 输入
```
2 1
01 1 02
4
1 2 4 7
13
```
#### 输入解释
每个输入文件包含一个测试用例。每一种情况都以包含0 < N < 100(树中的节点数)和M (< N)(非叶节点数)的行开始。接下来是M行,每一行的格式如下:
```
ID K ID[1] ID[2] ... ID[K]
```
其中ID是一个两位数,表示给定的非叶节点,K是它的子节点的编号,后面是它的子节点的两位数ID序列。为了简单起见,让我们将根ID修改为01。
第一行输入n,表示总共n个数
第二行输入每个数
第三行输入k
#### 输出
```
0 1
Yes
```
#### 输出解释
对于每个测试用例,您都应该从根开始计算没有孩子的家庭成员。数字必须在一行中打印,用空格隔开,并且在每行的末尾不能有额外的空格。
示例示例表示一棵只有2个节点的树,其中01是根节点,02是唯一的子节点。因此在根01层上,有0个叶节点;下一层,有1个叶节点。然后我们应该在一行中输出“0 1”。
\ No newline at end of file
若存在,则输出Yes
反之,输出No
\ No newline at end of file
data/2.算法中阶/1.pat甲级/3_Counting Leaves/solution.cpp
浏览文件 @
4a74c7a3
#include <bits/stdc++.h>
using
namespace
std
;
typedef
long
long
ll
;
int
e
[
300
],
h
[
300
],
nex
[
300
];
int
idx
;
int
cnt
[
300
],
mx_dep
;
void
add
(
int
u
,
int
v
)
{
e
[
idx
]
=
v
,
nex
[
idx
]
=
h
[
u
],
h
[
u
]
=
idx
++
;
}
void
dfs
(
int
u
,
int
dep
)
{
if
(
h
[
u
]
==
-
1
)
//叶子结点
{
cnt
[
dep
]
++
;
mx_dep
=
max
(
mx_dep
,
dep
);
return
;
}
for
(
int
i
=
h
[
u
];
~
i
;
i
=
nex
[
i
])
dfs
(
e
[
i
],
dep
+
1
);
}
int
main
()
#define MAX_N 1005
int
data
[
MAX_N
];
int
n
,
k
;
// 从前i项得到的和sum
bool
DFS
(
int
i
,
int
sum
)
{
int
n
,
m
;
cin
>>
n
>>
m
;
memset
(
h
,
-
1
,
sizeof
h
);
for
(
int
i
=
0
;
i
<
m
;
i
++
)
{
int
id
,
k
;
cin
>>
id
>>
k
;
while
(
k
--
)
{
int
b
;
cin
>>
b
;
add
(
id
,
b
);
}
}
dfs
(
1
,
0
);
cout
<<
cnt
[
0
];
for
(
int
i
=
1
;
i
<=
mx_dep
;
i
++
)
cout
<<
' '
<<
cnt
[
i
];
// n项都计算过了,判断是否等于k
if
(
i
==
n
)
return
sum
==
k
;
// 不加上第i项
if
(
DFS
(
i
+
1
,
sum
))
return
true
;
// 加上第i项
if
(
DFS
(
i
+
1
,
sum
+
data
[
i
]))
return
true
;
return
0
;
}
return
false
;
}
\ No newline at end of file
data/2.算法中阶/1.pat甲级/4_Spell It Right/desc.md
浏览文件 @
4a74c7a3
...
...
@@ -4,9 +4,9 @@
给一个 100 位以内的数,计算所有数字之和,并将结果的每一位用英文表示。
#### 输入
```
12345
666
```
#### 输出
```
one
five
one
eight
```
\ No newline at end of file
data/2.算法中阶/1.pat甲级/5_Sign In and Sign Out/desc.md
浏览文件 @
4a74c7a3
...
...
@@ -5,11 +5,11 @@
#### 输入
```
3
CS301111 15:30:28 17:0
0:10
SC3021234 08:00:00 11:25
:25
CS301133 21:45:00 21
:58:40
zhangsan 09:00:28 17:3
0:10
lisi 08:00:00 18:30
:25
wangmazi 12:00:00 22
:58:40
```
#### 输出
```
SC3021234 CS301133
lisi wangmazi
```
\ No newline at end of file
data/2.算法中阶/1.pat甲级/7_Elevator/desc.md
浏览文件 @
4a74c7a3
## 标题
坐电梯
## 题目描述
电梯从0层开始,按照指定的顺序,依次停到各个楼层
每个楼层停5s,上升一层需要6s,下降一层需要4s
求总时间
#### 输入
```
1 4 3 1
```
#### 输出
\ No newline at end of file
```
29
```
\ No newline at end of file
data/2.算法中阶/1.pat甲级/7_Elevator/solution.cpp
浏览文件 @
4a74c7a3
#include <iostream>
using
namespace
std
;
// 1008 Elevator (20)(20 point(s))
int
main
(
void
)
{
int
n
;
cin
>>
n
;
int
sum
=
0
,
old
=
0
,
t
;
for
(
int
i
=
0
;
i
<
n
;
++
i
)
{
cin
>>
t
;
if
(
t
-
old
>
0
)
{
// up
sum
+=
(
t
-
old
)
*
6
;
}
else
{
sum
+=
(
old
-
t
)
*
4
;
}
sum
+=
5
;
old
=
t
;
}
cout
<<
sum
<<
endl
;
return
0
;
}
// jinzheng 2018.7.24 11:03
\ No newline at end of file
data/2.算法中阶/1.pat甲级/8_Product of Polynomials 多项式乘法/desc.md
浏览文件 @
4a74c7a3
## 标题
多项式乘法
## 题目描述
求多项式A与多项式B相乘的结果
多项式A: $2.4
*x^1 + 3.2*
x^0$
多项式B: $1.5
*x^2 + 0.5*
x^1$
求A
*
B
#### 输入
```
2 1 2.4 0 3.2
2 2 1.5 1 0.5
```
#### 输入解释
$$第一行的第一个数2,表示两项:2.4
*x^1 + 3.2*
x^0$$
$$第二行的第一个数2,表示两项:1.5
*x^2 + 0.5*
x^1$$
#### 输出
\ No newline at end of file
```
3 3 3.6 2 6.0 1 1.6
```
#### 输出解释
上面两项相乘的结果:
$$第一行的第一个数3,表示三项:3.6
*x^3 + 6.0*
x^2 + 1.6
*
x^1$$
data/2.算法中阶/1.pat甲级/8_Product of Polynomials 多项式乘法/solution.cpp
浏览文件 @
4a74c7a3
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cmath>
using
namespace
std
;
double
con
[
2
][
1001
]
=
{
0.0
};
double
ans
[
2002
]
=
{
0.0
};
vector
<
int
>
exist
;
int
main
()
{
int
K
,
tmp1
,
mk
;
double
tmp2
;
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
scanf
(
"%d"
,
&
K
);
if
(
i
==
1
)
mk
=
exist
.
size
()
-
1
;
for
(
int
j
=
0
;
j
<
K
;
j
++
)
{
scanf
(
"%d"
,
&
tmp1
);
scanf
(
"%lf"
,
&
tmp2
);
con
[
i
][
tmp1
]
=
tmp2
;
exist
.
push_back
(
tmp1
);
}
}
int
cnt
=
0
;
int
sze
=
exist
.
size
();
for
(
int
i
=
0
;
i
<=
mk
;
i
++
)
{
for
(
int
j
=
mk
+
1
;
j
<
sze
;
j
++
)
ans
[
exist
[
i
]
+
exist
[
j
]]
+=
con
[
0
][
exist
[
i
]]
*
con
[
1
][
exist
[
j
]];
}
for
(
int
k
=
2000
;
k
>=
0
;
k
--
)
{
if
(
ans
[
k
]
!=
0
)
cnt
++
;
}
printf
(
"%d"
,
cnt
);
for
(
int
k
=
2000
;
k
>=
0
;
k
--
)
{
if
(
ans
[
k
]
!=
0
)
printf
(
" %d %.1f"
,
k
,
ans
[
k
]);
}
return
0
;
}
data/2.算法中阶/1.pat甲级/9_Radix/desc.md
浏览文件 @
4a74c7a3
## 标题
二分查找
## 题目描述
利用二分查找法判断元素是否存在于有序数组中
给定有序数组
``` int a[] = {1, 2, 3, 3, 5, 6}```
;
#### 输入
#### 输出
#### 输入样例1:
```
3
```
#### 输出样例1:
```
1
```
#### 输入样例2:
```
7
```
#### 输出样例2:
```
-1
```
\ No newline at end of file
data/2.算法中阶/1.pat甲级/9_Radix/solution.cpp
浏览文件 @
4a74c7a3
#include <iostream>
#include <algorithm>
#include <vector>
using
namespace
std
;
int
find_binary
(
int
target
,
vector
<
int
>
&
arr
)
{
if
(
arr
.
empty
())
return
-
1
;
int
low
=
0
;
int
high
=
arr
.
size
()
-
1
;
while
(
low
<=
high
)
{
int
middle
=
(
low
+
high
)
/
2
;
if
(
target
==
arr
[
middle
])
return
1
;
else
if
(
target
>
arr
[
middle
])
low
=
middle
+
1
;
else
high
=
middle
-
1
;
}
return
-
1
;
}
int
main
()
{
int
b
;
int
a
[]
=
{
1
,
2
,
3
,
3
,
5
,
6
};
int
len
=
sizeof
(
a
)
/
sizeof
(
int
);
vector
<
int
>
arr
(
a
,
a
+
len
);
std
::
sort
(
arr
.
begin
(),
arr
.
end
());
vector
<
int
>::
iterator
it
;
scanf
(
"%d"
,
&
b
);
cout
<<
find_binary
(
b
,
arr
)
<<
endl
;
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录