帮我优化这段代码:#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXN 100005 long long T[MAXN], A[MAXN], dp[MAXN]; long long min(long long a, long long b) { return a < b ? a : b; } int main() { int n; scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%lld", &T[i]); } for (int i = 1; i <= n; i++) { scanf("%lld", &A[i]); } dp[1] = T[1]; long long minT = T[1]; for (int i = 1; i <= n; i++) { int minAi = i - A[i]; if (minAi <= 0) dp[i] = T[i]; else dp[i] = min(dp[minAi], minT) + T[i];//视野内能看到最快点火的烽火台 minT = min(minT, dp[i]);//与前面最小的进行比较 } for (int i = 1; i <= n; i++) { printf("%lld\n", dp[i]); } return 0; }
时间: 2024-01-20 08:02:33 浏览: 78
如何使用_CRT_SECURE_NO_WARNINGS
5星 · 资源好评率100%
优化建议如下:
1. 在头文件中添加`#include <stdbool.h>`,使用`bool`类型代替`int`类型,可以提高代码的可读性和可维护性。
2. 将`long long`类型定义为`LL`,可以减少代码量和输入错误。
3. 将`min`函数改为宏定义,可以减少函数调用开销。
4. 将输入和输出操作封装成函数,可以提高代码的可读性和可维护性。
5. 在读入`A[i]`时,进行一次最小值的记录,可以简化后面的代码。
改进后的代码如下:
阅读全文