2016 京东校招研发算法题 9.6

第一题:爬山

 

思路:

需要判断第一个有效数据,到第一天所能达到的最高高度,和最后一个有效数据到最后一天能达到的最高高度。我这里是用的一个map来存放d,h。

 

 

 

AC代码:

 1 #include "iostream"
 2 #include "map"
 3 #define MAX 10000001
 4 
 5 using namespace std;
 6 
 7 map<int, int > mapp;
 8 int n, m;
 9 
10 int solve()
11 {
12     int c = 0, res = 0;
13     map<int, int>::iterator  iter = mapp.begin();
14     map<int, int>::iterator  end = mapp.end();
15     end--;
16     //判断第一天
17     int h = mapp.begin()->first + (mapp.begin()->second);
18     for (iter = mapp.begin(); iter != end; iter++)
19     {
20 
21         int f = abs(iter->first - (++iter)->first);
22         iter--;
23         int s = abs(iter->second - (++iter)->second);
24         iter--;
25 
26         if (f < s)
27         {
28             cout << "IMPOSSIBLE" << endl;
29             return 0;
30         }
31 
32         else
33         {
34             h = (f - s) / 2;
35             if (h > res)
36                 res = h;
37         }
38     }
39 
40     //判断最后一天。
41     int temp = end->second + (n - end->first);
42     if (temp > res)
43         res = temp;
44 
45     cout << res << endl;
46     return 1;
47 }
48 
49 int main()
50 {
51     while (cin >> n >> m)
52     {
53         while (m--)
54         {
55             int d, h;
56             cin >> d >> h;
57             mapp[d] = h;
58             //mapp.insert(pair<int, int>(d+1, h+1));
59         }
60         solve();
61         mapp.clear();
62     }
63 }

 

 

 

进制均值:

 

思路:

分别计算2到A-1进制的所有数之和,每个进制返回一个cnt,最后分母是所有cnt的累加,分子是A-2。

代码:

 1 #include "iostream"
 2 
 3 using namespace std;
 4 
 5 int n;
 6 
 7 int solve(int t)
 8 {
 9     int cnt = 0, nn = n;
10     if (t == 1)
11         return 0;
12     while (nn != 0)
13     {
14         cnt += nn%t;
15         nn /= t;
16     }
17     return cnt;
18 
19 }
20 
21 int main()
22 {
23     int t, res = 0;
24     while (cin >> n)
25     {
26         res = 0;
27         int flag = n;
28         while (flag != 0)
29         {
30             res += solve(flag);
31             flag--;
32         }
33         cout << res - 1;
34 
35         cout << "/" << n - 2 << endl;
36     }
37 }

 

posted @ 2016-09-06 11:36  SeeKHit  阅读(388)  评论(0编辑  收藏  举报