我是靠谱客的博主 爱听歌鼠标,最近开发中收集的这篇文章主要介绍计蒜客,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

计蒜之道第一场:初赛

链接:https://www.jisuanke.com/contest/726

A. 阿里的新游戏

思路:任意搜任意写(这个代码写的很挫)
 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 #include <cstdio>
 5 #include <cstdlib>
 6 #include <cmath>
 7 #include <set>
 8 #include <algorithm>
 9
10 using namespace std;
11
12 int main()
13 {
14
int n, m;
15
int sum = 0;
16
int a, b;
17
set<pair<int, int>> s;
18
pair<int, int> p1 = {-3, 3};
19
pair<int, int> p2 = {0, 3};
20
pair<int, int> p3 = {3, 3};
21
pair<int, int> p4 = {-3, 0};
22
pair<int, int> p5 = {-2, 0};
23
pair<int, int> p6 = {-1, 0};
24
pair<int, int> p7 = {1, 0};
25
pair<int, int> p8 = {2, 0};
26
pair<int, int> p9 = {3, 0};
27
pair<int, int> p10 = {0, -1};
28
pair<int, int> p11 = {0, -2};
29
pair<int, int> p12 = {0, -3};
30
pair<int, int> p13 = {-3, -3};
31
pair<int, int> p14 = {3, -3};
32
pair<int, int> p15 = {0, 2};
33
pair<int, int> p16 = {0, 1};
34
pair<int, int> p17 = {-2, 2};
35
pair<int, int> p18 = {2, 2};
36
pair<int, int> p19 = {-1, 1};
37
pair<int, int> p20 = {1, 1};
38
pair<int, int> p21 = {-1, -1};
39
pair<int, int> p22 = {1, -1};
40
pair<int, int> p23 = {-2, -2};
41
pair<int, int> p24 = {2, -2};
42
43
44
cin >> n >> m;
45
for (int i = 0; i < n; i++)
46 
{
47
cin >> a >> b;
48 
s.insert(make_pair(a, b));
49 
}
50
for (int i = 0; i < m; i++)
51 
{
52
cin >> a >> b;
53 
}
54
if (s.count(p1) && s.count(p2) && s.count(p3))
55
sum++;
56
if (s.count(p1) && s.count(p4) && s.count(p13))
57
sum++;
58
if (s.count(p2) && s.count(p15) && s.count(p16))
59
sum++;
60
if (s.count(p4) && s.count(p5) && s.count(p6))
61
sum++;
62
if (s.count(p7) && s.count(p8) && s.count(p9))
63
sum++;
64
if (s.count(p12) && s.count(p11) && s.count(p10))
65
sum++;
66
if (s.count(p12) && s.count(p13) && s.count(p14))
67
sum++;
68
if (s.count(p3) && s.count(p9) && s.count(p14))
69
sum++;
70
if (s.count(p17) && s.count(p18) && s.count(p15))
71
sum++;
72
if (s.count(p23) && s.count(p24) && s.count(p11))
73
sum++;
74
if (s.count(p17) && s.count(p5) && s.count(p23))
75
sum++;
76
if (s.count(p8) && s.count(p18) && s.count(p24))
77
sum++;
78
if (s.count(p19) && s.count(p21) && s.count(p6))
79
sum++;
80
if (s.count(p19) && s.count(p16) && s.count(p20))
81
sum++;
82
if (s.count(p20) && s.count(p7) && s.count(p22))
83
sum++;
84
if (s.count(p21) && s.count(p10) && s.count(p22))
85
sum++;
86
cout << sum << endl;
87
88
return 0;
89 }
View Code:

B. 阿里天池的新任务(简单)

思路:先生成s然后再用kmp进行次数统计
 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 #include <cstdio>
 5 #include <cstdlib>
 6 #include <cmath>
 7 #include <set>
 8 #include <algorithm>
 9
10 using namespace std;
11
12 void get_next(string s, int* next)
13 
{
14
int n = s.size();
15
int j = 0;
16
int k = -1;
17
next[0] = -1;
18
while(j < n)
19 
{
20
if (k == -1 || s[j] == s[k])
21 
{
22
j++;
23
k++;
24
if (s[j] != s[k])
25
next[j] = k;
26
else
27
next[j] = next[k];
28 
}
29
else
30
k = next[k];
31 
}
32 
}
33
34 int main()
35 {
36
int n, a, b, l, r;
37
int sum = 0;
38
39
cin >> n >> a >> b >> l >> r;
40
vector<int> nums(n);
41
string s;
42
43
44
nums[0] = b;
45
for (int i = 1; i < n; i++)
46
nums[i] = (nums[i - 1] + a) % n;
47
for (int i = 0; i < n; i++)
48 
{
49
if (nums[i] >= l && nums[i] <= r)
50 
{
51
if (nums[i] & 1)
52
s += 'T';
53
else
54
s += 'A';
55 
}
56
else if (nums[i] < l || nums[i] > r)
57 
{
58
if (nums[i] & 1)
59
s += 'C';
60
else
61
s += 'G';
62 
}
63 
}
64
65
string t;
66
cin >> t;
67
int len = t.size();
68
if (len == 0 || len > s.size())
69
cout << 0 << endl;
70
else
71 
{
72
73
int next[len + 1] = {0};
74 
get_next(t, next);
75
76
int i = 0;
77
int j = 0;
78
while (i < s.size())
79 
{
80
if (j == -1 || s[i] == t[j])
81 
{
82
i++;
83
j++;
84 
}
85
else
86
j = next[j];
87
88
if (j >= len)
89 
{
90
j = next[j];
91
sum++;
92 
}
93 
}
94
cout << sum << endl;
95
96 
}
97
98
return 0;
99 }
View Code:

 (总结:调试过程输出结果然后把代码直接粘进去导致WA了好几次,下次得注意,细节方面还是得加强,加油!)

 

计蒜之道第三场:初赛

  A. 腾讯课堂的物理实验

思路:碰撞理解为穿越,只是小球编号变化,位置可单独模拟(可参见《挑战程序设计》Ants那道题思路)

 1 #include <iostream>
 2 #include <vector>
 3 #include <cstdio>
 4 #include <cmath>
 5 #include <algorithm>
 6
 7 using namespace std;
 8
 9 int main()
10 {
11
int l, t, T;
12
int res = 0;
13
int a = 0, b = 0, c = 0, d = 0;
14
int x, y;
15
16
cin >> l >> t >> T;
17
18
a = T / l;
19
b = T % l;
20
c = (T - t) / l;
21
d = (T - t) % l;
22
23
if (a % 2 == 0)
24
x = b;
25
else
26
x = l - b;
27
28
if (c % 2 == 0)
29
y = l - d;
30
else
31
y = d;
32
33
cout << abs(x - y) << endl;
34
35
return 0;
36 }
View Code:

 

 

转载于:https://www.cnblogs.com/dxy1993/p/6884396.html

最后

以上就是爱听歌鼠标为你收集整理的计蒜客的全部内容,希望文章能够帮你解决计蒜客所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部