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

UVALive6834 - Shopping

时间:2016-10-17 18:20:14      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

题意

N家商店在一条线上,逛商店时有些要逛的商店有顺序,问从入口走到出口所走的最短距离。

思路

找出每个所能形成的最长区间*2, 再加上从入口到出口的距离:N+1。

注意:区间应是左闭右开或者左开右闭区间,不能是闭区间,因为这样会与其他区间融合成一个大区间,这是错误的

总结

比赛时稍微有点思路却怎么也想不明白,还是队友一语点醒梦中人=。=聪明聪明

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 const int maxn = 1005;
 7 int n, m;
 8 int s[maxn];
 9 int main()
10 {
11  //   freopen("in.txt","r",stdin);
12     while(cin >> n >> m){
13         int a, b;
14         memset(s, 0, sizeof s);
15         while(m--){
16             cin >> a >> b;
17             for(int i = a; i < b; i++)  // i不能是<=b
18                 s[i]++;
19         }
20         int ans = n+1, cnt = 0;
21         for(int i = 1; i <= n; i++){
22             if(s[i]) cnt++;
23             else {
24                 //cout << "cnt = " << cnt << endl;
25                 ans += cnt * 2;
26                 cnt = 0;
27             }
28         }
29         cout << ans << endl;
30     }
31     return 0;
32 }

 

UVALive6834 - Shopping

标签:

原文地址:http://www.cnblogs.com/md-zz/p/5970708.html

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