首页 > 代码库 > codeforces 499A.Inna and Pink Pony 解题报告
codeforces 499A.Inna and Pink Pony 解题报告
题目链接:http://codeforces.com/problemset/problem/499/A
题目意思:有两种按钮:1、如果当前观看的时间是 t,player 可以自动处理下一分钟,姑且理解为跳到t+1; 2、直接跳过 x 分钟,如果player在第 t 分钟,则可以跳到 t+x。问恰好可以看完 n 部电影的最少观看时间。观看一部电影表示 li, li+1, li+2, ..., ri-1, ri 的时间都要覆盖到。
一开始做的时候想得太简单了,确实需要每部电影的所有时间,但是如果不能恰好到达 li 这个时间点的话,意味着要在 li 之前的某个点就要开始覆盖,直到 ri。
我的做法是用一个cur_mom来记录看下一部电影前的到达时间。初始的时候是 1(题目说的)。问题是如何确定可以恰好到达 li,可以通过比较 li - cur_mom 是否能被 x 整除来判断。有余数的话代表不能恰好到达。处理完一部电影之后要更新cur_mom,它等于这部电影的结束时间 +1。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 using namespace std; 6 7 int main() 8 { 9 #ifndef ONLINE_JUDGE10 freopen("in.txt", "r", stdin);11 #endif // ONLINE_JUDGE12 13 int n, x;14 while (scanf("%d%d", &n, &x) != EOF)15 {16 int l, r;17 int ans = 0;18 int cur_mom = 1;19 20 for (int i = 0; i < n; i++)21 {22 scanf("%d%d", &l, &r);23 if ((l-cur_mom) % x)24 {25 int tmp = l - cur_mom;26 int num = tmp / x;27 cur_mom += num * x;28 }29 else30 cur_mom = l;31 ans += r - cur_mom + 1;32 cur_mom = r+1;33 }34 printf("%d\n", ans);35 }36 return 0;37 }
codeforces 499A.Inna and Pink Pony 解题报告
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。