| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
此题大坑!要考虑目的地房间小于出发地房间的情况。。。我也是醉了。
#include <iostream>
using namespace std;
class intv{
public:
int start;
int end;
intv(): start(0), end(0){}
intv(int s, int e): start(s) , end(e){}
};
int partion(intv *array, int p, int r) {
intv x = array[r];
int i = p - 1;
int j;
for (j = p; j < r; j++) {
if (array[j].start < x.start) {
i++;
intv temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
intv temp = array[j];
array[j] = array[i + 1];
array[i + 1] = temp;
return i+1;
}
void quickSort(intv *array, int p, int r) {
if (p < r) {
int q = partion(array, p, r);
quickSort(array, p, q - 1);
quickSort(array, q + 1, r);
}
}
int main() {
int cases;
cin >> cases;
for(int ii = 0; ii < cases; ii++){
int N;
intv vss[200];
cin >> N;
for(int i = 0; i < N; i++){
cin >> vss[i].start >> vss[i].end;
if(vss[i].start > vss[i].end){
int temp = vss[i].start;
vss[i].start = vss[i].end;
vss[i].end = temp;
}
}
quickSort(vss, 0, N-1);
for(int i = 0; i < N; i++){
vss[i].start -=1;
vss[i].start /=2;
vss[i].end -=1;
vss[i].end /=2;
}
bool state[200] = {false};
int remain = N;
int cnt = 0;
while(remain > 0){
int place = -1;
int idx = -1;
while(idx < N-1){
idx++;
if(state[idx] || vss[idx].start <= place){
//idx++;
continue;
}
state[idx] = true;
remain--;
place = vss[idx].end;
}
cnt++;
}
cout << cnt * 10 << endl;
}
//cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator