题意
看一部电影,从第一分钟开始看,你每次可以按下快进键,快进x分钟,电影有n个精彩片段,问看到所有精彩片段至少需要看多少分钟电影。(数据保证能看到所有精彩片段)
我们可以发现答案其实
就是间隔时间%x+精彩片段时间
拿第一个样例
1 2 3 4 5 6 7 8 9 10 11 12
5 6 10 11 12这三分钟一定要选,我们在第1分钟可以跳过到达第4分钟(1,2,3跳过了),在第6分钟结束时跳到第10分钟答案就是6分钟。
那么可以写出公式
ans+=(l[i]-r[i-1]-1)%x;
ans+=r[i]-l[i]+1;
由于从第一分钟开始看需要特判,我们可以将r[0]=0便可(至于为什么是0而不是1,可以自己画图看看,不做证明),由于全局变量本身就是0,就不需要赋值
代码
#include<bits/stdc++.h>
using namespace std;
int n,x,l[60],r[60],ans;
int main(){
scanf("%d %d",&n,&x);
for(int i=1;i<=n;++i){
scanf("%d %d",&l[i],&r[i]);
}
for(int i=1;i<=n;++i){
ans+=(l[i]-r[i-1]-1)%x;
ans+=r[i]-l[i]+1;
}
printf("%d",ans);
return 0;
}