首页 > 代码库 > UVALive6834 - Shopping
UVALive6834 - Shopping
题意
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。