SRM 678 div2 (1000题待补)
通过数: 1
Standing change: 1015 - 1003
250:
一些droid和doors,问每个doors中距离最近的droids中,距离差最大的距离值多少。
暴力
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
class ThePhantomMenace {
public:
int find(vector <int>, vector <int>);
};
int ThePhantomMenace::find(vector <int> doors, vector <int> droids) {
int ans = 0;
for(int i = 0 ; i < (int)doors.size() ; i++){
int u = doors[i];
int temp = 1000 + 1;
for(int j = 0 ; j < (int)droids.size() ; j++){
int v = droids[j];
temp = min(temp, abs(u - v));
}
ans = max(temp, ans);
}
return ans;
}
<%:testing-code%>
//Powered by [KawigiEdit] 2.0!
500:
一个星期N天,第i天洗一件衣服,那么下一次它再能洗的时间为i+N-1或以后。
那么,现在给出第一个星期洗衣服的顺序,最后一个星期洗衣服的顺序。问至少需要几个星期才能满足条件。
根据样例知道,每次变换相当于把一件衣服的可选空间向前增加一位。即原来标号i,下次可以选择的标号[i-1][N]。
赛中特判加错,没过System test
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
class AttackOfTheClones {
public:
int count(vector <int>, vector <int>);
};
const int MAXN = 2500 + 5;
int id1[MAXN], id2[MAXN];
int AttackOfTheClones::count(vector <int> firstWeek, vector <int> lastWeek) {
for(int i = 0 ; i < (int)firstWeek.size() ; i++) id1[firstWeek[i]] = i;
for(int i = 0 ; i < (int)lastWeek.size() ; i++) id2[lastWeek[i]] = i;
int ans = 0;
for(int i = 1 ; i <= firstWeek.size() ; i++){
int u = id1[i];
int v = id2[i];
int temp;
if(u < v) temp = 0;
else temp = u - v;
ans = max(ans, temp);
}
return ans + 1;
}
<%:testing-code%>
//Powered by [KawigiEdit] 2.0!