记录30
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[15]={},t,sum=0;
for(int i=1;i<=12;i++) cin>>a[i];
for(int i=1;i<=12;i++){
a[i]=300-a[i]+a[i-1];
if(a[i]<0){
cout<<"-"<<i;
return 0;
}
if(a[i]>=100){
t=a[i]/100*100;
sum+=t;
a[i]-=t;
}
}
cout<<sum*1.2+a[12];
return 0;
}
题目传送门
https://www.luogu.com.cn/problem/P1089
突破点
每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于 100 元或恰好 100 元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
👉关于数字的取舍问题
年末,妈妈将津津平常存的钱加上 20% 还给津津之后,津津手中会有多少钱
👉求和问题
思路
- 求出来每个月的开销,是否符合存款标准
- 将整百钱存进去
- 最后存的钱数加上 20%,再加上手头的钱
代码简析
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[15]={},t,sum=0;
for(int i=1;i<=12;i++) cin>>a[i];
for(int i=1;i<=12;i++){
...
...
}
...
return 0;
}
先将每个月预算输入进数组里面,数组的作用就是记录钱的变化的情况
t代表当月要存的钱数,sum代表存钱的总和
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[15]={},t,sum=0;
for(int i=1;i<=12;i++) cin>>a[i];
for(int i=1;i<=12;i++){
a[i]=300-a[i]+a[i-1];
if(a[i]<0){
cout<<"-"<<i;
return 0;
}
...
}
...
return 0;
}
a[i]=300-a[i]+a[i-1];其中a[i]里面存的是当月钱的情况:
300块去掉预算后加上前一个月剩的钱数
注意:因为数组初始化过了,同时i从1开始,所以i-1一开始为0,a[0]里面就是0
if(a[i]<0){...}当 这个月钱不够用的时候,输出并退出
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[15]={},t,sum=0;
for(int i=1;i<=12;i++) cin>>a[i];
for(int i=1;i<=12;i++){
a[i]=300-a[i]+a[i-1];
if(a[i]<0){
cout<<"-"<<i;
return 0;
}
if(a[i]>=100){
t=a[i]/100*100;
sum+=t;
a[i]-=t;
}
}
cout<<sum*1.2+a[12];
return 0;
}
if(a[i]>=100){...} 如果当月的钱大于100,要进行存钱了
t=a[i]/100*100; /100是取出百位,接着再*100得到存的钱数
sum+=t; 累加每个月份存的钱
a[i]-=t; 去除当月存的钱
sum*1.2+a[12]; 连本带利的存款钱,加上最后手头剩余的钱
补充
在算法竞赛中,数组是一种非常基础且重要的数据结构,它具有多种作用和用途。以下是数组在算法竞赛中的不同方面的作用,分条并条理清晰地说明:
1. 数据存储
作用:数组用于存储大量的数据,便于统一管理和访问。
应用场景:
存储输入数据,如数字、字符串等。
保存中间结果,供后续计算使用。
2. 查找与搜索
作用:利用数组的索引特性,快速查找特定元素或进行搜索操作。
应用场景:
线性搜索:遍历数组查找目标元素。
二分搜索:在有序数组中快速查找目标元素。
3. 排序
作用:对数组中的元素进行排序,以便后续处理。
应用场景:
使用排序算法(如快速排序、归并排序)对数组进行升序或降序排列。
通过排序优化查找和统计操作。
4. 前缀和与后缀和
作用:通过预计算前缀和或后缀和,快速计算子数组的和。
应用场景:
计算子数组的和,如范围求和问题。
优化多次查询的效率。
5. 动态规划
作用:数组用于存储动态规划中的状态值,避免重复计算。
应用场景:
存储子问题的解,如斐波那契数列、背包问题等。
通过状态转移方程更新数组中的值。
6. 模拟其他数据结构
作用:数组可以模拟其他复杂的数据结构。
应用场景:
模拟栈、队列、堆等数据结构。
实现图的邻接表或邻接矩阵。
7. 状态记录与标记
作用:记录元素的访问状态或标记特定条件。
应用场景:
记录元素是否被访问过,避免重复处理。
标记某些元素的特殊状态,如是否为质数。
8. 数学运算
作用:进行各种数学运算,如矩阵运算、多项式计算等。
应用场景:
矩阵乘法、转置等操作。
多项式的加法、乘法等运算。
9. 图论算法
作用:数组用于表示图的结构和存储相关数据。
应用场景:
邻接矩阵表示图的边和权重。
记录节点的距离、颜色等信息,用于图的遍历算法(如 BFS、DFS)。
10. 字符串处理
作用:数组用于存储和操作字符串数据。
应用场景:
字符串匹配算法,如 KMP、Boyer-Moore 等。
字符串的统计和变换操作。
总结
数组在算法竞赛中具有广泛的应用,是解决问题的基础工具。它不仅用于数据存储,还在查找、排序、动态规划、模拟数据结构等方面发挥着重要作用。熟练掌握数组的使用和相关算法,对于提高算法竞赛的解题能力至关重要。
849

被折叠的 条评论
为什么被折叠?



