既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
for(int i=0; i<n; i++)
{
cin>>a[i].id>>a[i].sc1>>a[i].sc2;
a[i].score=a[i].sc1+a[i].sc2;
a[i].final_score=a[i].sc1\*0.7+a[i].sc2\*0.3;
}
for(int i=0; i<n; i++)
{
if(a[i].score>140&&a[i].final_score>=80)
{
cout <<"Excellent"<<endl;
}
else
{
cout<<"Not excellent"<<endl;
}
}
return 0;
}
## 第二题 5 倍经验日
### 题目背景
现在乐斗有活动了!每打一个人可以获得 5 倍经验!absi2011 却无奈的看着那一些比他等级高的好友,想着能否把他们干掉。干掉能拿不少经验的。
### 题目描述
现在 absi2011 拿出了
x
x
x 个迷你装药物(嗑药打人可耻…),准备开始与那些人打了。
由于迷你装药物每个只能用一次,所以 absi2011 要谨慎的使用这些药。悲剧的是,用药量没达到最少打败该人所需的属性药药量,则打这个人必输。例如他用
2
2
2 个药去打别人,别人却表明
3
3
3 个药才能打过,那么相当于你输了并且这两个属性药浪费了。
现在有
n
n
n 个好友,给定失败时可获得的经验、胜利时可获得的经验,打败他至少需要的药量。
要求求出最大经验
s
s
s,输出
5
s
5s
5s。
### 输入格式
第一行两个数,
n
n
n 和
x
x
x。
后面
n
n
n 行每行三个数,分别表示失败时获得的经验
l
o
s
e
i
\mathit{lose}\_i
losei,胜利时获得的经验
w
i
n
i
\mathit{win}\_i
wini 和打过要至少使用的药数量
u
s
e
i
\mathit{use}\_i
usei。
### 输出格式
一个整数,最多获得的经验的五倍。
### 样例 #1
#### 样例输入 #1
6 8
21 52 1
21 70 5
21 48 2
14 38 3
14 36 1
14 36 2
#### 样例输出 #1
1060
### 提示
**【Hint】**
五倍经验活动的时候,absi2011 总是吃体力药水而不是这种属性药。
**【数据范围】**
* 对于
10
%
10\%
10% 的数据,保证
x
=
0
x=0
x=0。
* 对于
30
%
30\%
30% 的数据,保证
0
≤
n
≤
10
0\le n\le 10
0≤n≤10,
0
≤
x
≤
20
0\le x\le 20
0≤x≤20。
* 对于
60
%
60\%
60% 的数据,保证
0
≤
n
,
x
≤
100
0\le n,x\le 100
0≤n,x≤100,
10
<
l
o
s
e
i
,
w
i
n
i
≤
100
10<lose\_i,win\_i\le 100
10<losei,wini≤100,
0
≤
u
s
e
i
≤
5
0\le use\_i\le 5
0≤usei≤5。
* 对于
100
%
100\%
100% 的数据,保证
0
≤
n
,
x
≤
1
0
3
0\le n,x\le 10^3
0≤n,x≤103,
0
<
l
o
s
e
i
≤
w
i
n
i
≤
1
0
6
0<lose\_i\le win\_i\le 10^6
0<losei≤wini≤106,
0
≤
u
s
e
i
≤
1
0
3
0\le use\_i\le 10^3
0≤usei≤103。
### 解题思路
>
> * 1)变形的01背包问题。
> * 2)分两种情况,第一种是能打过,可以选择打或不打,第二种是打不过。
>
>
>
### 参考代码
#include<bits/stdc++.h>
using namespace std;
long long dp[105000];
int main()
{
int n,x;
cin>>n>>x;
for(int i=1;i<=n;i++)
{
int lose,win,use;
cin>>lose>>win>>use;
for(int j=x;j>=use;j–)
{
dp[j]=max(dp[j]+lose,dp[j-use]+win);
}
for(int j=use-1;j>=0;j–)
{
dp[j]+=lose;
}
}
cout<<dp[x]*5;
return 0;
}
## 第三题 最大约数和
### 题目描述
选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。
### 输入格式
输入一个正整数S。
### 输出格式
输出最大的约数之和。
### 样例 #1
#### 样例输入 #1
11
#### 样例输出 #1
9
### 提示
样例说明
取数字4和6,可以得到最大值(1+2)+(1+2+3)=9。
数据规模
S<=1000
### 解题思路
>
> * 1)看起来像数学题,其实还是背包问题。
> * 2)先进行预处理,求每个数最大公约数的和。
> * 3)01背包解决问题。
>
>
>
### 参考代码
#include<bits/stdc++.h>
using namespace std;
int i,j,n,a[1001],dp[1001];
int main()
{ cin>>n;
for(i=1;i<=n/2;i++)
for(j=2;i*j<=n;j++)
a[i*j]+=i;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
dp[j]=max(dp[j],dp[j-i]+a[i]);
cout<<dp[n];
return 0;
}
## 第四题 【深基16.例3】二叉树深度
![img](https://img-blog.csdnimg.cn/img_convert/4737fc22545c63051dd227f2a097324e.png)
![img](https://img-blog.csdnimg.cn/img_convert/e38e1be9dfe75ed16b4464e17dc6bc16.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**
9
### 提示
样例说明
取数字4和6,可以得到最大值(1+2)+(1+2+3)=9。
数据规模
S<=1000
### 解题思路
>
> * 1)看起来像数学题,其实还是背包问题。
> * 2)先进行预处理,求每个数最大公约数的和。
> * 3)01背包解决问题。
>
>
>
### 参考代码
#include<bits/stdc++.h>
using namespace std;
int i,j,n,a[1001],dp[1001];
int main()
{ cin>>n;
for(i=1;i<=n/2;i++)
for(j=2;i*j<=n;j++)
a[i*j]+=i;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
dp[j]=max(dp[j],dp[j-i]+a[i]);
cout<<dp[n];
return 0;
}
## 第四题 【深基16.例3】二叉树深度
[外链图片转存中...(img-oXRLUjVh-1715723851407)]
[外链图片转存中...(img-03HxNHTX-1715723851407)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**