题解 CF499A 【Watching a movie】

题意

看一部电影,从第一分钟开始看,你每次可以按下快进键,快进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;
}
原文地址:https://www.cnblogs.com/donkey2603089141/p/11415013.html