首页 > 代码库 > 京东4.7实习笔试题

京东4.7实习笔试题

官方题解:http://discuss.acmcoder.com/topic/58e78ec01a2f85620527f2d0

1. 站队,小偷和警察,刚开始想找每个小偷最近的警察,但是发现,如果找最近的警察,但是他的能力可能是小的,不满足要求,那就需要其他办法。然后从警察的角度看,他能抓住的小偷,由于每个警察

最多遍历前后一共19个位置,所以复杂度是19n,线性的,满足要求。

注意边界的检查。

技术分享
 1 #include<bits/stdc++.h> 2 #define pb push_back 3 #define FOR(i, n) for (int i = 0; i < (int)n; ++i) 4 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl 5 typedef long long ll; 6 using namespace std; 7 typedef pair<int, int> pii; 8 const int maxn = 1e5 + 10; 9 bool a[maxn];10 void solve() {11     int n;12     string s;13     cin >> n >> s;14     int id = -1;15     n = s.size();16     for (int i = 0; i < n; i++) {17         if(isdigit(s[i])) {18             int v = s[i] - 0;19             for (int j = max(0, i - v); j < min(n, i + v + 1); j++)20                 if(s[j] == X) a[j] = 1;21         }22     }23     int res = 0;24     for (int i = 0; i < n; i++) res += a[i];25     cout << res << endl;26 }27 int main() {28     //freopen("test.in", "r", stdin);29     //freopen("test.out", "w", stdout);30     //ios::sync_with_stdio(0);31     //cin.tie(0); cout.tie(0);32     solve();33     return 0;34 }
View Code

2. 分队。

上来一定先要读懂题意,看例子是怎么解的。这是最关键的地方。题目要求仅是相邻的不同,然后和为n。

不难想到k1k1k1的情况,然后我就这样做了,只过了30%,然后考虑哪里错了,我写出k1k1k1k1k1,发现变成(k + 1), k, (k + 1), k, (k + 1), 可以省出很多1,然后就考虑这种方式,这种情况下,是比较好计算的,然后就过了。

技术分享
 1 #include<bits/stdc++.h> 2 #define pb push_back 3 typedef long long ll; 4 using namespace std; 5 typedef pair<int, int> pii; 6 const int maxn = 1e3 + 10; 7  8 void solve() { 9     ll x, y;10     while(cin >> x)11     {cin >> y;12     if(y == 1) {13         ll res = x / 3;14         ll d = x % 3;15         res *= 2;16         if(d > 0) {17             res++;18         }19         cout << res << endl;20         continue;21     }22     ll res = x / (y * 2 + 1);23     res *= 2;24     ll d = x % (y * 2 + 1);25     if(d >= y) res++;26     cout << res << endl;27     }28 }29 30 int main() {31     freopen("test.in", "r", stdin);32     //freopen("test.out", "w", stdout);33     ios::sync_with_stdio(0);34     cin.tie(0); cout.tie(0);35     solve();36     return 0;37 }
View Code

其他的题目没有看,有时间看一下。

感觉基础还不是很熟练,一些套路掌握的不是很好。

想想真是可怕,以前做的都是错的,怪不得挂了。

京东4.7实习笔试题