首页 > 试题广场 >

降温(easy)

[编程题]降温(easy)
  • 热度指数:2666 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
天气开始降温了。

如果某一天的温度比前一天降低的值不小于x,小红就会认为这是一场“寒潮”。
现在给定了每天的气温,但有一些日子的气温是未知的。小红想知道,发生寒潮的次数的最大值和最小值是多少?
注:我们认为,每天气温的值域一定在[-50,50]。

输入描述:
第一行输入两个正整数n,x,代表总天数、以及寒潮的判定标准。
第二行输入n个整数a_i,代表每天的气温。特殊的,如果a_i为-999,代表这一天的气温是未知的。

1\leq n,x \leq 100
-50 \leq a_i \leq 50或者a_i=-999


输出描述:
两个整数,代表寒潮数量的最大值和最小值。
示例1

输入

3 10
50 -999 -50

输出

2 1

说明

第二天的气温未知,若这一天的气温在[41,50]或者[-50,-41],则共有1天寒潮;否则是两天寒潮。
示例2

输入

4 100
-999 -999 -999 -999

输出

2 0

说明

当且仅当四天的气温为50,-50,50,-50时才会有2天寒潮。
头像 此在Dasein
发表于 2025-12-07 03:03:05
这是一个典型的动态规划问题。 由于每一天的寒潮判定只依赖于当天的气温和前一天的气温,且我们需要求解的是全局的最值(最大次数和最小次数),同时数据规模较小(,气温范围仅101个整数),这非常适合使用DP来解决。 算法思路 我们需要维护到第 天为止,且第 天气温为 时,所能产生的最大和最小寒潮次数 展开全文
头像 255gxd
发表于 2025-12-07 10:49:05
#include<bits/stdc++.h> using namespace std; using ll=long long; ll mod=998244353; int main() { int n,x; cin>>n>>x; vec 展开全文
头像 Lambda_L
发表于 2025-12-07 00:33:03
纯模拟 #include <bits/stdc++.h> using namespace std; #define int long long void solve() { int n, x; cin >> n >> x; vector&l 展开全文
头像 BaiJay
发表于 2025-12-07 12:08:38
#include <bits/stdc++.h> #define int long long using namespace std; #define endl '\n' void work() { int n , x ; cin >> n >> x ; 展开全文
头像 CARLJOSEPHLEE
发表于 2024-10-30 22:26:30
分别模拟求出最大最小值即可 from sys import stdin, stdout def main(): input = stdin.readline n,x = map(int,input().split()) if n == 1: print("0 展开全文
头像 chenlan114
发表于 2025-12-07 13:10:41
#include <bits/stdc++.h> using namespace std; const int N=105; // 数组最大长度(题目中n≤100,留冗余) // 变量说明: // a数组:用于计算“最大寒潮次数”的温度序列(对未知温度做最大化寒潮的赋值) // b数 展开全文
头像 自由的风0450
发表于 2025-12-07 14:29:21
模拟未知温度,计算寒潮天数 #include <iostream> #include<vector> using namespace std; const int INF=-999; const int MIN_T=-50; const int MAX_T=50; int 展开全文
头像 ddhw111
发表于 2025-12-07 14:56:12
贪心。要凑到最大的数量,让可以更改的位置的数值更改成为上一个离自己最近位置并且有数值的数-x。注意如果减到小于值域下限,我们可以直接更改为值域上限。这样做的目的是方便让后面的可更改位置产生贡献。凑最小的答案,就一直让可更改位置的数值更改为上一个值-x+1即可。 #include<bits/st 展开全文
头像 鱼好软捏
发表于 2025-12-07 15:55:04
#include <iostream> #include<vector> using namespace std; int main() { int n,x; cin>>n>>x; vector<int>a(n+1 展开全文
头像 glerium
发表于 2025-12-07 17:18:05
发现状态只和前一天的温度有关;因此考虑当前天数与这天的温度作为状态,直接dp求解即可 #include <iostream> #include <vector> #define rep(i,x,y) for(int i=x;i<=y;i++) using namespa 展开全文