UVALive6834 - Shopping
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章
UVALive 3971 Assemble(模拟 + 二分)