小红直播
[题目链接](https://www.nowcoder.com/practice/3df5f72717a344019124a646c045579c)
思路
简单模拟题。按天顺序处理,每天先上班再直播:
- 上班
小时,焦虑度增加
;
- 直播
小时,焦虑度减少
;
- 如果焦虑度变为负数,将其置为
。
遍历所有 天后输出最终焦虑度即可。
样例演示
,上班时间
,直播时间
:
- 第 1 天:
,直播后
。
- 第 2 天:
,直播后
。
- 第 3 天:
,直播后
。
输出 。
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
long long n, a, b;
scanf("%lld%lld%lld", &n, &a, &b);
vector<long long> w(n), l(n);
for(int i=0;i<n;i++) scanf("%lld",&w[i]);
for(int i=0;i<n;i++) scanf("%lld",&l[i]);
long long ans = 0;
for(int i=0;i<n;i++){
ans += w[i] * a;
ans -= l[i] * b;
if(ans < 0) ans = 0;
}
printf("%lld\n", ans);
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long a = sc.nextLong(), b = sc.nextLong();
long[] w = new long[n], l = new long[n];
for (int i = 0; i < n; i++) w[i] = sc.nextLong();
for (int i = 0; i < n; i++) l[i] = sc.nextLong();
long ans = 0;
for (int i = 0; i < n; i++) {
ans += w[i] * a;
ans -= l[i] * b;
if (ans < 0) ans = 0;
}
System.out.println(ans);
}
}
import sys
input = sys.stdin.readline
n, a, b = map(int, input().split())
w = list(map(int, input().split()))
l = list(map(int, input().split()))
ans = 0
for i in range(n):
ans += w[i] * a
ans -= l[i] * b
if ans < 0:
ans = 0
print(ans)
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin });
const lines = [];
rl.on('line', line => lines.push(line.trim()));
rl.on('close', () => {
const [n, a, b] = lines[0].split(' ').map(Number);
const w = lines[1].split(' ').map(Number);
const l = lines[2].split(' ').map(Number);
let ans = 0;
for (let i = 0; i < n; i++) {
ans += w[i] * a;
ans -= l[i] * b;
if (ans < 0) ans = 0;
}
console.log(ans);
});
复杂度分析
- 时间复杂度:
,遍历每一天进行常数次运算。
- 空间复杂度:
,存储上班时间和直播时间数组。

京公网安备 11010502036488号