SRM 678 div2 (1000题待补)

来源:互联网 发布:上海话剧艺术中心淘宝 编辑:程序博客网 时间:2024/04/30 12:05

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!
0 0