Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_dailycode
提交
40c57a83
S
skill_tree_dailycode
项目概览
CSDN 技术社区
/
skill_tree_dailycode
通知
11
Star
4
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_dailycode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
40c57a83
编写于
12月 24, 2021
作者:
ToTensor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add 3 exercises
上级
06f1e99e
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
272 addition
and
74 deletion
+272
-74
data/3.dailycode高阶/1.cpp/1.exercises/solution.md
data/3.dailycode高阶/1.cpp/1.exercises/solution.md
+57
-15
data/3.dailycode高阶/1.cpp/2.exercises/solution.md
data/3.dailycode高阶/1.cpp/2.exercises/solution.md
+77
-28
data/3.dailycode高阶/1.cpp/3.exercises/solution.md
data/3.dailycode高阶/1.cpp/3.exercises/solution.md
+138
-31
未找到文件。
data/3.dailycode高阶/1.cpp/1.exercises/solution.md
浏览文件 @
40c57a83
...
...
@@ -11,25 +11,50 @@
</code></pre><p>
样例输出
</p><pre
class=
"has"
style=
"margin-left:0; margin-right:0"
>
<code
class=
"language-content"
>
2 200
</code></pre><p>
提示
</p><p
style=
"margin-left:0; margin-right:0"
>
【样例解释】
</p><p
style=
"margin-left:-0.5pt; margin-right:0"
>
乐乐咨询了 3 个商家
,
打算购买一二三等奖奖品数量分别是 1 个、2 个、3 个
,
编号为 1 的商家一二三等奖奖品报价分别是 70、50、30 元
,
编号为 2 的商家报价分别是 60、40、20 元
,
编号为 3 的商家报价分别是 80、55、20 元
,
乐乐在编号为 2 的商家购买总费用最低
,
为200 元。
</p><p
style=
"margin-left:0; margin-right:0"
>
【数据范围】
</p><p
style=
"margin-left:23.75pt; margin-right:0"
>
40%数据
:
1≤n≤5000
</p><p
style=
"margin-left:23.75pt; margin-right:0"
>
100%数据
:
1≤n≤100000
,
1≤x,y,z≤1000
,
奖品报价都是 1000 范围以内的正整数。
</p>
以下程序实现了这一功能,请你填补空白处的内容:
```
cpp
#include <iostream>
#include <stdio.h>
using
namespace
std
;
int
main
()
{
int
n
,
x
,
y
,
z
,
i
,
min
=
1000000
,
n1
,
n2
,
n3
,
temp
,
t
=
0
;
cin
>>
n
>>
x
>>
y
>>
z
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
temp
=
0
;
cin
>>
n1
>>
n2
>>
n3
;
temp
+=
n1
*
x
+
n2
*
y
+
n3
*
z
;
__________________
}
cout
<<
t
<<
" "
<<
min
;
return
0
;
}
```
## template
```
cpp
#include <iostream>
#include <stdio.h>
using
namespace
std
;
int
main
(){
int
n
,
x
,
y
,
z
,
i
,
min
=
1000000
,
n1
,
n2
,
n3
,
temp
,
t
=
0
;
cin
>>
n
>>
x
>>
y
>>
z
;
for
(
i
=
0
;
i
<
n
;
i
++
){
temp
=
0
;
cin
>>
n1
>>
n2
>>
n3
;
temp
+=
n1
*
x
+
n2
*
y
+
n3
*
z
;
if
(
temp
<
min
){
min
=
temp
;
t
=
i
+
1
;
int
main
()
{
int
n
,
x
,
y
,
z
,
i
,
min
=
1000000
,
n1
,
n2
,
n3
,
temp
,
t
=
0
;
cin
>>
n
>>
x
>>
y
>>
z
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
temp
=
0
;
cin
>>
n1
>>
n2
>>
n3
;
temp
+=
n1
*
x
+
n2
*
y
+
n3
*
z
;
if
(
temp
<
min
)
{
min
=
temp
;
t
=
i
+
1
;
}
}
cout
<<
t
<<
" "
<<
min
;
cout
<<
t
<<
" "
<<
min
;
return
0
;
}
```
...
...
@@ -37,7 +62,11 @@ int main(){
## 答案
```
cpp
if
(
temp
<
min
)
{
min
=
temp
;
t
=
i
+
1
;
}
```
## 选项
...
...
@@ -45,17 +74,29 @@ int main(){
### A
```
cpp
if
(
temp
>
min
)
{
min
=
temp
;
t
=
i
+
1
;
}
```
### B
```
cpp
if
(
temp
<
min
)
{
min
=
temp
;
t
=
i
-
1
;
}
```
### C
```
cpp
if
(
temp
>
min
)
{
min
=
temp
;
t
=
i
-
1
;
}
```
\ No newline at end of file
data/3.dailycode高阶/1.cpp/2.exercises/solution.md
浏览文件 @
40c57a83
...
...
@@ -15,42 +15,84 @@
</pre>
<p>
要求从第s个数开始
,
数m个出列
,
第s个不出列
</p>
以下程序实现了这一功能,请你填补空白处的内容:
```
cpp
#include <iostream>
void
JosePhus
(
int
n
,
int
m
,
int
start
)
{
int
i
,
*
arr
=
new
int
[
n
];
int
count
=
1
;
;
for
(
i
=
0
;
i
<
n
;
i
++
)
arr
[
i
]
=
i
+
1
;
int
sum
=
n
;
while
(
count
<
n
)
{
start
--
;
int
index
=
(
start
+
m
-
1
)
%
sum
;
______________
sum
--
;
count
++
;
}
std
::
cout
<<
arr
[
0
]
<<
"
\n
"
;
}
int
main
(
int
argc
,
const
char
*
argv
[])
{
int
n
,
m
,
start
;
std
::
cout
<<
"请输入n,m,start:
\n
"
;
while
(
std
::
cin
>>
n
>>
m
>>
start
)
{
JosePhus
(
n
,
m
,
start
);
std
::
cout
<<
"请输入n,m,start:
\n
"
;
}
return
0
;
}
```
## template
```
cpp
#include <iostream>
void
JosePhus
(
int
n
,
int
m
,
int
start
)
{
int
i
,
*
arr
=
new
int
[
n
];
int
count
=
1
;;
for
(
i
=
0
;
i
<
n
;
i
++
)
arr
[
i
]
=
i
+
1
;
int
sum
=
n
;
while
(
count
<
n
)
{
start
--
;
int
index
=
(
start
+
m
-
1
)
%
sum
;
for
(
i
=
index
;
i
<
sum
-
1
;
i
++
)
arr
[
i
]
=
arr
[
i
+
1
];
start
=
index
+
1
;
sum
--
;
count
++
;
}
std
::
cout
<<
arr
[
0
]
<<
"
\n
"
;
void
JosePhus
(
int
n
,
int
m
,
int
start
)
{
int
i
,
*
arr
=
new
int
[
n
];
int
count
=
1
;
;
for
(
i
=
0
;
i
<
n
;
i
++
)
arr
[
i
]
=
i
+
1
;
int
sum
=
n
;
while
(
count
<
n
)
{
start
--
;
int
index
=
(
start
+
m
-
1
)
%
sum
;
for
(
i
=
index
;
i
<
sum
-
1
;
i
++
)
arr
[
i
]
=
arr
[
i
+
1
];
start
=
index
+
1
;
sum
--
;
count
++
;
}
std
::
cout
<<
arr
[
0
]
<<
"
\n
"
;
}
int
main
(
int
argc
,
const
char
*
argv
[])
{
int
n
,
m
,
start
;
std
::
cout
<<
"请输入n,m,start:
\n
"
;
while
(
std
::
cin
>>
n
>>
m
>>
start
)
{
JosePhus
(
n
,
m
,
start
);
std
::
cout
<<
"请输入n,m,start:
\n
"
;
}
return
0
;
int
main
(
int
argc
,
const
char
*
argv
[])
{
int
n
,
m
,
start
;
std
::
cout
<<
"请输入n,m,start:
\n
"
;
while
(
std
::
cin
>>
n
>>
m
>>
start
)
{
JosePhus
(
n
,
m
,
start
);
std
::
cout
<<
"请输入n,m,start:
\n
"
;
}
return
0
;
}
```
## 答案
```
cpp
for
(
i
=
index
;
i
<
sum
-
1
;
i
++
)
arr
[
i
]
=
arr
[
i
+
1
];
start
=
index
+
1
;
```
## 选项
...
...
@@ -58,17 +100,23 @@ int main(int argc, const char * argv[]) {
### A
```
cpp
for
(
i
=
index
;
i
<
sum
-
1
;
i
++
)
arr
[
i
]
=
arr
[
i
+
1
];
start
=
index
-
1
;
```
### B
```
cpp
for
(
i
=
index
;
i
<
sum
;
i
++
)
arr
[
i
]
=
arr
[
i
-
1
];
start
=
index
+
1
;
```
### C
```
cpp
for
(
i
=
index
;
i
<
sum
;
i
++
)
arr
[
i
]
=
arr
[
i
-
1
];
start
=
index
-
1
;
```
\ No newline at end of file
data/3.dailycode高阶/1.cpp/3.exercises/solution.md
浏览文件 @
40c57a83
# 海港(port)
海港(port)
【问题描述】
**问题描述**
小谢是海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客。
小谢对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况;对于第i艘到达的船,他记录了这艘船只到达的时间ti(单位:秒),船上的乘客数量Ki,以及每名乘客的国籍x(i,1),x(i,2),···,x(i,k)。
小谢统计了n艘船的信息,希望你帮忙计算出以每一艘船到达时间为止的24小时(24小时=86400秒)内所有乘船到达的乘客来自多少个不同的国家。
形式化的讲,你需要计算n条信息。对于输出的第i条信息,你需要统计满足:ti-86400<tp<=ti的船只p,在所有的x(p,j)中,总共有多少个不同的数。
输入格式:第1行输入一个正整数n,表示小谢统计了n艘船的信息。
**输入格式**
第1行输入一个正整数n,表示小谢统计了n艘船的信息。
接下来的n行,每行描述一艘船的信息:前两个整数ti和ki分别表示这艘船到达海港的时间和船上的乘客数量,接下来的ki个整数x(i,j)表示从小谢第一次上班开始计时,这艘船在第ti秒到达海港。
保证1
<
=
n
<=105,
ki
>
=1,∑ki<=3×105,1<=x(i,j)<=105,1<=ti-1<ti<=109。其中∑ki表示所有ki的和。输出格式
输出n行,第i行输出一个整数表示第i艘船到达后的统计信息。
【输入样例1】
**输入样例1**
```
json
3
1
4
4
1
2
2
2
2
2
3
10
1
3
【输出样例1】
```
**输出样例1**
```
json
3
4
4
```
样例1说明:第一艘船在第一秒到达海港,最近24小时到达的船是第一艘船,共4个乘客,分别来自国家4,1,2,2,共来自3个不同的国家。
第2艘船在第2秒到达海港,最近24小时到达的船是第1艘船和第2艘船,共有4+2=6个乘客,分别来自国家4,1,2,2,2,3,共来自4个不同的国家;
第三艘船在第10秒到达海港,最近24小时到达的船是第1艘船、第2艘船和第3艘船,共有4+2+1=7个乘客,分别是来自国家4,1,2,2,2,3,3,共来自4个不同的国家。
【输入样例2】
**输入样例2**
```
json
4
1
4
1
2
2
3
3
2
2
3
86401
2
3
4
86402
1
5
【输出样例2】
```
**输出样例2**
```
json
3
3
3
4
```
样例2说明:第一艘船在第一秒到达海港,最近24小时到达的船是第1艘,共有4个乘客,分别是来自国家1,2,2,3,共来自3个不同的国家。
第2艘船是第3秒到达海港,最近24小时到达的船是第一艘船和第2艘船,共有4+2=6个乘客,分别来自1,2,2,3,2,3,共来自3个不同的国家
第3艘船是第86401秒到达海港,最近24小时到达的船是第2艘船和第3艘船,共有2+2=4个乘客,分别来自2.3,3,4,共来自3个不同的国家
第4艘船是第86402秒到达海港,最近24小时到达的船是第2艘船、第3艘船和第4艘船,共有2+2+1=5个乘客,分别来自2,3,3,4,5,共来自4个不同的国家
以下程序实现了这一功能,请你填补空白处的内容:
```
cpp
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using
namespace
std
;
int
a
[
100100
];
int
people
[
500100
];
struct
node
{
int
country
;
int
time
;
};
queue
<
node
>
q
;
int
main
()
{
int
n
,
sum
=
0
;
scanf
(
"%d"
,
&
n
);
for
(
int
i
=
1
;
i
<=
n
;
i
++
)
{
int
t
,
p
;
scanf
(
"%d%d"
,
&
t
,
&
p
);
node
temp
;
temp
.
time
=
t
;
for
(
int
i
=
1
;
i
<=
p
;
i
++
)
{
int
cty
;
scanf
(
"%d"
,
&
cty
);
temp
.
country
=
cty
;
q
.
push
(
temp
);
if
(
!
people
[
cty
])
sum
++
;
people
[
cty
]
++
;
}
while
(
1
)
{
node
old
;
old
=
q
.
front
();
if
(
temp
.
time
-
86400
>=
old
.
time
)
{
int
tc
=
old
.
country
;
_________________________
q
.
pop
();
}
else
break
;
}
cout
<<
sum
<<
endl
;
}
return
0
;
}
```
## template
```
cpp
...
...
@@ -50,40 +140,48 @@
using
namespace
std
;
int
a
[
100100
];
int
people
[
500100
];
struct
node
{
struct
node
{
int
country
;
int
time
;
};
queue
<
node
>
q
;
int
main
(){
int
n
,
sum
=
0
;
scanf
(
"%d"
,
&
n
);
for
(
int
i
=
1
;
i
<=
n
;
i
++
){
int
t
,
p
;
scanf
(
"%d%d"
,
&
t
,
&
p
);
queue
<
node
>
q
;
int
main
()
{
int
n
,
sum
=
0
;
scanf
(
"%d"
,
&
n
);
for
(
int
i
=
1
;
i
<=
n
;
i
++
)
{
int
t
,
p
;
scanf
(
"%d%d"
,
&
t
,
&
p
);
node
temp
;
temp
.
time
=
t
;
for
(
int
i
=
1
;
i
<=
p
;
i
++
){
temp
.
time
=
t
;
for
(
int
i
=
1
;
i
<=
p
;
i
++
)
{
int
cty
;
scanf
(
"%d"
,
&
cty
);
temp
.
country
=
cty
;
scanf
(
"%d"
,
&
cty
);
temp
.
country
=
cty
;
q
.
push
(
temp
);
if
(
!
people
[
cty
])
sum
++
;
if
(
!
people
[
cty
])
sum
++
;
people
[
cty
]
++
;
}
while
(
1
){
while
(
1
)
{
node
old
;
old
=
q
.
front
();
if
(
temp
.
time
-
86400
>=
old
.
time
)
old
=
q
.
front
();
if
(
temp
.
time
-
86400
>=
old
.
time
)
{
int
tc
=
old
.
country
;
int
tc
=
old
.
country
;
people
[
tc
]
--
;
if
(
!
people
[
tc
])
sum
--
;
if
(
!
people
[
tc
])
sum
--
;
q
.
pop
();
}
else
break
;
else
break
;
}
cout
<<
sum
<<
endl
;
cout
<<
sum
<<
endl
;
}
return
0
;
}
...
...
@@ -92,7 +190,9 @@ int main(){
## 答案
```
cpp
people
[
tc
]
--
;
if
(
!
people
[
tc
])
sum
--
;
```
## 选项
...
...
@@ -100,17 +200,23 @@ int main(){
### A
```
cpp
people
[
tc
]
++
;
if
(
!
people
[
tc
])
sum
--
;
```
### B
```
cpp
people
[
tc
]
--
;
if
(
!
people
[
tc
])
sum
++
;
```
### C
```
cpp
people
[
tc
]
--
;
if
(
people
[
tc
])
sum
--
;
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录