标签:
题意
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 }
标签:
原文地址:http://www.cnblogs.com/md-zz/p/5970708.html