您的位置:首页 > 其它

srm 580 div1

2013-05-27 21:33 267 查看
要答辩,木有时间啊,练习了一下,依旧不给力,只能做出第一个,啥时候第二个能轻易做出来,也就说明我进步了吧~~~

1、离散所有点就可以了

#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <cmath>
#include <map>
#include <algorithm>
#include <list>
#include <ctime>
#include <set>
#include <string.h>
#include <queue>
using namespace std;

class EelAndRabbit{
public:
int cal(vector <int>& l, vector <int>& t,int catchtime,vector<int>& judge){
int sz=l.size();
int ct=0;
for(int i=0;i<sz;i++){
if(catchtime>=t[i]&&catchtime<=(t[i]+l[i])&&judge[i]==0){
ct++;
judge[i]=1;
}
}
return ct;
}
int getmax(vector <int> l, vector <int> t){
int sz=l.size();
map<int,int> alltime;
for(int i=0;i<sz;i++){
alltime[t[i]]=1;
alltime[t[i]+l[i]]=1;
}
vector<int> rtime;
for(map<int,int>::iterator it=alltime.begin();alltime.end()!=it;it++){
int t=it->first;
rtime.push_back(t);
}
int rsz=rtime.size();
int res=0;
for(int i=0;i<rsz;i++){
for(int j=i+1;j<rsz;j++){
vector<int> judge(sz,0);
int f=cal(l,t,rtime[i],judge);
int s=cal(l,t,rtime[j],judge);
res=max(res,(f+s));
}
}
return res;
}
};


from kakamilan
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: