码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #419 (Div. 2)

时间:2017-06-18 13:19:26      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:main   and   思路   链接   off   回文字符串   tar   alt   ios   

1.题目A:Karen and Morning

题意:

给出hh:mm格式的时间,问至少经过多少分钟后,该时刻为回文字符串?

思路:

简单模拟,从当前时刻开始,如果hh的回文rh等于mm则停止累计。否则,根据rh和mm的大小来累计sum,然后hh+1,不断尝试。

技术分享
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int hh,mm;
 6     char c;
 7     while (cin >> hh >> c >> mm)
 8     {
 9        int sum = 0;
10        bool firsthour = true;
11        while (1)
12        {
13            int rh = hh % 10 * 10 + hh / 10;
14            if (rh == mm) break;
15            else
16            {
17                    if (rh < 60)
18                    {
19                        if (firsthour)
20                        {
21                            firsthour = false;
22                            if (rh >= mm)
23                            {
24                                sum += rh - mm;
25                                break;
26                            }
27                            else
28                            {
29                                sum += 60 - mm;
30                                mm = 0;
31                                hh = (hh + 1) % 24;
32                            }
33                        }
34                        else
35                        {
36                            sum += rh;
37                            break;
38                        }
39                    }
40                    else
41                    {
42                        if (firsthour) sum += 60 - mm,mm=0,firsthour=false;
43                        else sum += 60;
44                        hh = (hh + 1) % 24;
45                    }
46                
47            }
48        }
49        cout << sum << endl;
50     }
51     return 0;
52 }
A. Karen and Morning

2.题目B: Karen and Coffee

题意:

给出n个已知区间,然后询问q个区间,问询问区间中至少被k个已知区间包含的点为几个。

思路:

一开始想着对每个已知区间中的值累加,然后对每次询问[l,r],遍历l——r,妥妥超时~~

然后看了些大神的代码,首先不必要对每个已知区间中的值累加,只要在已知区间的开始和结束的位置做标记,然后对于查询,可以预处理用前缀和来记录1~i满足条件的数目,然后O(1)便能得出答案。还有的巨巨用线段树来维护,至少比O(n)的时间少,应该是O(logn)吧。。。

下面给出巨巨的链接:

线段树实现

前缀和实现

 

Codeforces Round #419 (Div. 2)

标签:main   and   思路   链接   off   回文字符串   tar   alt   ios   

原文地址:http://www.cnblogs.com/ivan-count/p/7043845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!