湘潭大学2022软件工程程序设计实践平时练习二C/C++
第1关:基金大师
- 任务要求
题目描述
小明热爱基金,现在给你某支基金的每天的价格,请你帮他算算买卖1次或0次所得最大利润是多少? (0次即没有发生交易)
输入输出:
第一个整数m(0<m<100)表示天数 第二组输入个m个整数,每个整数为每天的价格,每个的整数的范围为0到100000
输入: 6 7 1 5 3 6 4 输出: 5
本题来源,《算法导论》。本题考察动态规划-对过去信息充分利用的思想。变量minn代表历史最低值。cache表示当前基金值。
#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
#include<map>
#include<cstring>
#include<sstream>
//#define int long long
using namespace std;
typedef long long ll;
const int N = 1000;
double dp[N + 10][N + 10];
int tu[N + 10][N + 10];
int num[N + 10];
int nex[200000];
int tong[120];
int32_t main() {int n;cin >> n;int minn = 987654321;int ans = 0;for (int i = 1; i <= n; i++) {int cache;cin >> cache;minn = min(minn, cache);ans = max(ans, cache - minn);}cout << ans << endl;
}
第2关:奶茶店2
300
- 任务要求
题目描述
XTU奶茶店又开张了,现给定不同种类奶茶的储存量、总售价和需求量,现在请你计算该奶茶店所能获得的最大收益。
输入格式
每个输出包含一个测试样例,先给出一个N(0<N<=1000)表示奶茶的种类数,再给出一个D(0<D<=10000)表示市场最大需求量。随后两行分别是奶茶的库存量M(0<M<=10000)和每种奶茶的总售价P(0<P<=10000)。
输出格式
输出该奶茶店所能获得的最大收益,保留两位小数
输入样例
3 20 18 15 10 75 72 45
输出样例
94.50
本题考察贪心-利润。优先贩卖单价高的奶茶以便获得更多利润。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int arr[1010];
int brr[1010];
vector<pair<double, int>> v;
int main() {int n, d;cin >> n >> d;for (int i = 1; i <= n; i++) {cin >> arr[i];}for (int i = 1; i <= n; i++) {cin >> brr[i];}for (int i = 1; i <= n; i++) {v.push_back({brr[i]/(double)arr[i], arr[i]});}sort(v.begin(), v.end());reverse(v.begin(),v.end());double ans = 0;for (auto it : v) {ans+=it.first*min(it.second,d);d-=min(it.second,d);if(d==0)break;}printf("%.2lf",ans);
}
第3关:汇率大师
300
- 任务要求
描述
小明热衷于炒汇率,假设现在给你A币、B币、C币....等各个币种的兑换关系以及汇率,给你A币本金,请你帮小明算出兑换成最后一个币种的价值的最大值(以A币的价值表示)和最佳兑换路线。
注意:当存在不同路径的最大价值相同时,取路径短的,不存在价值和路径长度相同的样例。
输入说明:
先输入本金N(0<N<10000), 再输入兑换关系数量M(0<M<100)和币种数量H(0<H<26),接下来输入M行,每行的前两项是数字表示的币种,后面一项是汇率。
为简化题目,这里的汇率,可以理解为倍率,统一用正小数表示,例如本金100A币的时候,0 1 1.5 就可以理解为A币可以兑换价值150A币的B币.(保留小数点2位)
样例:
1.
输入: 100 1 2 0 1 1.5 输出: 150.00 A->B 说明: 这里是本金100,一个关系和两个币种
2.
输入: 100 9 6 0 1 2 0 2 1 0 3 6 1 2 1 1 4 1 2 4 2 3 2 5 3 4 8 4 5 1
输出: 6000.00 A->D->C->E->F
本题考察图论-图的遍历。数据量较小,dfs爆搜。注意保存路径长度和路径。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int arr[1010];
int brr[1010];
vector<pair<int, double>> edges[30];
int n, m, h;
double maxRate;
int ansPath[110];
int cachePath[110];
bool vis[30];
int ansDeep = 9999;
void dfs(int u, double proRate, int deep) {cachePath[deep] = u;if (u == h - 1) {if (maxRate < proRate || (maxRate == proRate && ansDeep > deep)) {maxRate = proRate;ansDeep = deep;for (int i = 1; i <= deep; i++) {ansPath[i] = cachePath[i];}}return;}for (auto it : edges[u]) {int v = it.first;double rate = it.second;if (vis[v] == 0) {vis[v] = 1;dfs(v, proRate * rate, deep + 1);vis[v] = 0;}}
}int main() {cin >> n >> m >> h;for (int i = 1; i <= m; i++) {int a, b;double c;cin >> a >> b >> c;edges[a].push_back({b, c});edges[b].push_back({a, 1 / c});}vis[0] = 1;dfs(0, 1, 1);cout.precision(2);cout << fixed << n*maxRate << endl;cout << "A";for (int i = 2; i <= ansDeep; i++) {cout << "->" << (char)(ansPath[i] + 'A');}}
第4关:铠甲锻造
300
- 任务要求
题目描述
一套铠甲的打造需要n种材料,编号为i的材料的坚硬度为ai(0<i<n),约定材料必须按照编号顺序依次放入冶炼炉,容量有限的冶炼炉同时最多只能容纳w个原料。但是我们可以在放入某个材料之前从冶炼炉种取出一些原料,取出的数量不能超过s个。
设: 编号为i的材料的耐久= 放入时冶炼炉内原料总数 * 材料坚硬度ai,铠甲的耐久为所有合成材料的耐久之和。
输入格式
line 1:3个整数n
w
s
line 2:n个整数 a1 … an
1 ≤ n ≤ 10^5 |ai| ≤ 10^7
输出格式
每行一个整数,为最大耐久度
输入输出样例
输入
5 3 3
1 3 2 4 5
输出
40
本题考察动态规划-01背包。考虑枚举将材料从锅中拿出的个数。
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
long long a[5005];
long long dp[5005][5005];int main() {int s, w, n;cin >> n >> w >> s;for (int i = 1; i <= n; ++i)cin >> a[i];memset(dp, 0xcf, sizeof(dp));dp[0][0] = 0;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= w; ++j) {for (int k = 0; k <= s; ++k) {if (j + k - 1 <= w)dp[i][j] = max(dp[i][j], dp[i - 1][j + k - 1] + a[i] * j);}}}long long ans = -0x3f3f3f3f3f3f3f3f;for (int i = 1; i <= w; ++i) {ans = max(ans, dp[n][i]);}cout << ans;}
第6关:乌鸦爱收集
300
- 任务要求
题目背景
乌鸦Ozzy喜欢收集特殊的石头,今天的Ozzy也准备出门去收集喜欢的石头。
题目描述
Ozzy在小溪边饮水时,发现了溪边有一排特殊排列的石头,这些石头颜色分别为a1、a2、…、an,一共有 n 个,奥兹准备收集那些特殊的石头。
满足这些条件的这些条件的会被Ozzy认为特殊的石头:在给定的区间,并且在该区间内与它颜色相同石头的个数,与在该区间外这种颜色的石头的数量差 ≤给定常数K
请回答Ozzy的m个提问:区间[l,r]
中有多少不同颜色的特殊石头
输入格式
line 1:正整数n
m
k
line 2:n 个正整数,为石头的颜色 ti
之后 m 行,正整数l
r
0< l ≤ r < n
1 ≤ n ≤ 10^5 1 ≤ m ≤ 10^3 1 ≤ k ≤ 10^2
输出格式
m行,每个各一个整数表示询问的结果
输入输出样例
输入
6 9 10
13 11 1 12 11 11
4 4
4 4
0 0
3 5
2 5
1 4
2 4
5 5
3 3
输出
1
1
0
3
3
4
3
1
1
本题考察树状数组与扫描线这对经典cp的使用。需要用到扫描线思想,然后配合树状数组的区间修改和区间查询,以便实现离线处理询问,最后输出答案。
湘潭大学2022软件工程程序设计实践平时练习二C/C++相关推荐
- 湘潭大学2022软件工程程序设计实践平时练习一C/C++
第1关:101_求最长的公共字符串 任务描述 系统会给出两个字符串,你需要获取到这两个数据(方法同从键盘获取一样),并找到他们最长的公共字符串,并且将他们的长度打印. 样例 输入ABCD,CBCE 返 ...
- 西工大16春c语言程序,谋学网西工大16春《C语言程序设计》平时作业答案
西工大16春<语言程序设计>平时作业 一.答案来源(谋学网www.mouxue.com)(共 3 道试题,共 9 分.) 1. 程序注释是由( )所界定的文字信息组成的. . /* . ...
- 软件工程实践————结对作业二
这个作业属于哪个课程 软件工程实践2022年春-F班 这个作业要求在哪里 软件工程实践----结对作业二 结对学号 221900418 221900403 这个作业的目标 实现上次作业的原型中的部分功 ...
- 【程序设计与实践】实验二:个人资金账户管理
实验二:个人资金账户管理 题目: 阅读下列"资金账户的管理"程序,对程序进行调试.改错,并增加函数,使之符合如下具体功能. 1) 资金账户的信息统一放在*随机文件中,该随机文件包括 ...
- 《C++程序设计实践》实验十二
<C++程序设计实践>实验十二 一.课内实验题(共5小题,50分) 题型得分 50 [描述] 声明并实现一个Student类,表示学生信息.Student类包括: int类型的私有数据成员 ...
- 2022秋软工实践个人作业二
2022秋软工实践个人作业二 Task I Task II 这个作业属于哪个课程 软工实践 这个作业要求在哪里 2022秋软工实践个人作业二 这个作业的目标 git html 学号 032002342 ...
- c语言程序设计实践课选题,c语言程序设计实践实验题目
c语言程序设计实践实验题目 绥化学院程序设计实践实验报告范例 参考1实验题目:循环结构程序设计实验目的:1.熟悉 VC++6.0 的运行环境,掌握 C 程序的执行方法:2.掌握三种基本数据类型.部分运 ...
- c语言做一个小程序报告,《C语言程序设计实践》课程报告30个小程序组合成一个大程序.doc...
北方民族大学 课 程 报 告 课 程 名 称: 程序设计实践 专 业 班 级 : 软件工程(2)班 学 生 姓 名 : 李思良 学 号 : 任 课 教 师 : 王晓锋 学 期 : 2015-2016学 ...
- 桂林理工大学 程序设计实践课程 实习报告
学 号: 320205205# 桂林理工大学 GUILIN UNIVERSITY OF TECHNOLOGY 程序设计实践课程 实习报告 学 院: 信息科学与工程学院 # ...
- 设计模式之工厂方法模式、抽象工厂模式的概念和实现及使用“反射技术+读取配置文件”的方法对工厂模式进行改进(软件工程综合实践课程第三周个人作业)
文章目录 一.实验目的 二.知识总结 1.工厂方法模式简介 2.抽象工厂模式简介 3.工厂模式小结 4.利用"反射技术+读取配置文件"的方法改进程序 三.实验内容 1. 工厂模式实 ...
最新文章
- C语言随机字母生成,C++ 随机数字以及随机数字加字母生成的案例
- 010-你觉得单元测试可行吗
- MySQL针对Swap分区的运维注意点
- IOS之学习笔记六(可变形参)
- rest spring_Spring REST:异常处理卷。 3
- C库函数-fgets()
- LINUX环境并发服务器的三种实现模型
- 网站开发笔记【四】css hack技术
- Native Instruments Maschine 2 Factory Library Mac(预置音色库)
- 好程序员Java分享JVM类加载机制
- java opencv gamma_OpenCV函数cvAddWeighted调整alpha和gamma值 | 学步园
- minio权限之IAM policy配置及用户赋权
- 浏览器被流氓软件修改了主页怎么办?
- 360屏保广告彻底关闭教程
- 根下有长长的白色根须
- C语言--- 什么是位域?
- 【Docker】Docker常用命令
- 从微软官网下载VS离线安装包的方法VS2017,VS2019
- html矢量图 SVG VML 介绍
- 开发信如何写打开率才更高
热门文章
- 解决BIEE中地图FOI数据过多
- 原型工具Axure6.5的使用
- 原型工具Axure常见问题
- Python 断言的使用
- Cannot access a disposed context instance. A common cause of this error is disposing a context insta
- 8种经典的统计学悖论18种经典的哲学悖论
- Vue2在使用Element-UI的分页组件遇到的问题(如PageSize,PageNum等)
- Verilog取绝对值代码设计
- LevelDB源码分析之十三:table
- python数据分析水果_用python解决简单的水果分类问题