| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
啊我用了个递推,也很容易。但没想到推公式,太高估这题了,呵呵#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Times
{
long rTime;
long lTime;
Times() { rTime = lTime =0; }
};
void main()
{
int n; cin >> n;
vector<int> input(n);
for (int i=0; i<input.size(); i++)
cin >> input[i];
int persons = *(max_element(input.begin(), input.end()));
vector<Times> times(persons+1);
times[2].lTime = 1;
for (n=3; n<times.size(); n++)
{
int a = n/2, b = n-a;
times[n].rTime = times[a].lTime+times[b].lTime;
times[n].lTime = a*b+times[n].rTime;
}
for (i=0; i<input.size(); i++)
cout << times[input[i]].rTime << endl;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator