转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
完全就是考英语,完全看不懂题目。。。
第一次完整得做了次SRM
250PT,巨长的英文,给个R,X初始0.25,然后迭代X=R*X*(1-X),
求第200000-201000次X的最值之差,直接迭代就行了。。。
class FixedPointTheorem{
public:
double cycleRange(double R){
double x=0.25;
for(int i=1;i<=200001;i++)
x=R*x*(1-x);
double mmax=x,mmin=x;
for(int i=1;i<=1000;i++){
x=R*x*(1-x);
mmax=max(mmax,x);
mmin=min(mmin,x);
}
return mmax-mmin;
}
};
500PT,求一个数列,轮流加上2*(friends-position)+1和2*position-1就行了
class LeaguePicks{
public:
vector <int> returnPicks(int position, int friends, int picks){
vector<int>ans;
if(position>picks)
return ans;
ans.push_back(position);
int a[2]={2*(friends-position)+1,2*position-1},pos=position;
for(int i=0;;i++){
pos+=a[i&1];
if(pos>picks)
break;
ans.push_back(pos);
}
return ans;
}
};
1000PT,字符串判断,题目不难,难的还是题目看不懂。。。只能说C++处理字符串还是很麻烦。。。
class ProblemWriting{
public:
string myCheckData(string dotForm){
if(dotForm.size()<1||dotForm.size()>25)
return "dotForm must contain between 1 and 25 characters, inclusive.";
if(!isdigit(dotForm[0]))
return "dotForm is not in dot notation, check character 0.";
bool num=true;
char str[100];
for(int i=0;i<dotForm.size();i++){
char ch=dotForm[i];
if(ch=='.')
continue;
if(num){
if(isdigit(ch))
num=false;
else{
sprintf(str,"dotForm is not in dot notation, check character %d.",i);
string ans(str);
return ans;
}
}
else{
if(isdigit(ch)){
sprintf(str,"dotForm is not in dot notation, check character %d.",i);
string ans(str);
return ans;
}
else{
if(ch=='+'||ch=='-'||ch=='*'||ch=='/')
num=true;
else{
sprintf(str,"dotForm is not in dot notation, check character %d.",i);
string ans(str);
return ans;
}
}
}
}
if(num||!isdigit(dotForm[dotForm.size()-1])){
sprintf(str,"dotForm is not in dot notation, check character %d.",dotForm.size());
string ans(str);
return ans;
}
return "";
}
};