SRM 678 div2 (1000题待补)

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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值