InputThe input consists of T test cases. The number of test cases ) (T is given in the first line of the input. Each test case begins with a line containing an integer N , 1<=N<=200 , that represents the number of tables to move. Each of the following N lines contains two positive integers s and t, representing that a table is to move from room number s to room number t (each room number appears at most once in the N lines). From the N+3-rd line, the remaining test cases are listed in the same manner as above.
OutputThe output should contain the minimum time in minutes to complete the moving, one per line.
Sample Input
3 4 10 20 30 40 50 60 70 80 2 1 3 2 200 3 10 100 20 80 30 50
Sample Output
10 20 30
#include<iostream> #include<cstdio> #include<cstring> #include<sstream> #include<algorithm> #include<queue> #include<vector> #include<cmath> #include<map> #include<set> #include<fstream> #include<memory> #include<string> using namespace std; typedef long long LL; #define MAXN 209 #define INF 1000000009 /* 移动桌子,走廊不可以共用求最短时间 求最大的线段重叠长度 */ int cnt[MAXN],n; struct node { int t, s; }; node t; int main() { int T; scanf("%d", &T); while (T--) { memset(cnt, 0, sizeof(cnt)); scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d%d", &t.s, &t.t); if (t.s > t.t) swap(t.s, t.t); t.s = (t.s + 1) / 2; t.t = (t.t + 1) / 2; for (int i = t.s; i <= t.t; i++) { cnt[i]++; } } int ans =0; for(int i=0;i<MAXN;i++) { ans = max(ans, cnt[i]); } printf("%d\n", (ans) * 10); } }
原文:http://www.cnblogs.com/joeylee97/p/6718311.html