概述
计蒜之道第一场:初赛
链接: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 }
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 }
(总结:调试过程输出结果然后把代码直接粘进去导致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 }
转载于:https://www.cnblogs.com/dxy1993/p/6884396.html
最后
以上就是爱听歌鼠标为你收集整理的计蒜客的全部内容,希望文章能够帮你解决计蒜客所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复