1 条题解
-
0
P7994
在阅读本题解之前,请先思考 铺设道路。 之后,本题会更加明了。
分析 :
此题与 铺设道路 非常相似,唯一的不同在于分为升温,降温两种方式。可以证得,分开加减一定比统一升降,再单独操作步骤来的少,所以此题分成两个两个数组存放,与标准量相减,取绝对值处理。(不是我笼统,真的和铺设道路一模一样)。
其余看代码吧,还有一些处理思想,也在代码里。
Code :
1,普通 铺设道路 :
#include<iostream> using namespace std; long long n , a[100001] , ans; int main() { cin>>n; for( int i = 1 ; i <= n ; i ++ ) cin>>a[i]; for( int i = 1 ; i <= n ; i ++ ) if( a[i] > a[i-1])ans += a[i] - a[i-1]; cout<<ans; return 0; }2,此题:
#include<bits/stdc++.h> using namespace std; long long n; long long a[100001] , b[100001]; long long now[100001] , want[100001]; long long ans = 0; int main() { cin>>n; for(int i = 1 ; i<= n ; i++) cin>>want[i]; for(int i = 1 ; i<= n ; i++) { cin>>now[i]; long long x = want[i] - now[i]; if(x >= 0)a[i] = x; else b[i] = -x; } for(int i = 1 ; i<= n ; i++) { if(a[i] > a[i-1])ans += a[i] - a[i-1]; } for(int i = 1 ; i<= n ; i++) { if(b[i] > b[i-1])ans += b[i] - b[i-1]; } cout<<ans; return 0; }ps:可以做一些对比。
- 1
信息
- ID
- 6995
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 10
- 已通过
- 5
- 上传者