概述
Powered by:NEFU AB-IN
A 活着的证据
-
题意
给出 S V S_V SV个 V V V, S I S_I SI个 I I I,求能拼接成最大的 N N N位数
-
思路
模拟即可,多余的 I I I可以加到 V V V上,也可以加到 I I I上
/* * @Author: NEFU AB_IN * @Date: 2021-09-10 17:38:09 * @FilePath: VscodeACMProjectdiameteracwing389_.cpp * @LastEditTime: 2021-09-10 19:31:56 */ #include <bits/stdc++.h> using namespace std; #define LL long long #define MP make_pair #define SZ(X) ((int)(X).size()) #define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define DEBUG(X) cout << #X << ": " << X << endl; typedef pair<int, int> PII; signed main() { int t; scanf("%d", &t); while (t--) { int v, l, n; scanf("%d%d%d", &v, &l, &n); if (v + l <= n) { for (int i = 1; i <= v; i++) printf("5"); for (int i = 1; i <= l; i++) printf("1"); } else { int l_s = l - max(n - v, 0); for (int i = 1; i <= min(v, n); ++i) { if (l_s >= 3) { printf("8"); l_s -= 3; } else if (l_s == 2) { printf("7"); l_s -= 2; } else if (l_s == 1) { printf("6"); l_s -= 1; } else { printf("5"); } } for (int i = 1; i <= n - v; ++i) { if (l_s >= 2) { printf("3"); l_s -= 2; } else if (l_s == 1) { printf("2"); l_s -= 1; } else printf("1"); } } printf("n"); } return 0; }
B 寻寻觅觅寻不到
-
题意
现代人有两个字符串,设其为 M M M 和 C C C
若 C C C 可以由 M M M 截取其中 K K K 个连续字符并放到最末尾得到,则现代人认为 C h i l d Child Child 在 M o t h e r Mother Mother 怀抱里
请对于 Q Q Q 组数据,做出判断
-
思路
写了一遍字符串哈希,结果T了,直接运用字符串的操作知识,模拟即可
/* * @Author: NEFU AB_IN * @Date: 2021-09-11 10:27:58 * @FilePath: VscodeACMNiuKe2021.9.10b.cpp * @LastEditTime: 2021-09-11 15:58:21 */ #include <bits/stdc++.h> using namespace std; #define LL long long #define ULL unsigned LL #define MP make_pair #define SZ(X) ((int)(X).size()) #define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define DEBUG(X) cout << #X << ": " << X << endl; typedef pair<int, int> PII; signed main() { IOS; int t; cin >> t; while (t--) { string m, c; int k; cin >> m >> c >> k; if (m == c) { cout << "YES" << 'n'; continue; } string hou = c.substr(SZ(c) - k, SZ(c)); c = c.substr(0, SZ(c) - k); int flag = 0; string c_tmp = c; for (int i = 0; c[i]; ++i) { c_tmp.insert(i, hou); if (c_tmp == m) { cout << "YES" << 'n'; flag = 1; break; } c_tmp = c; } if (!flag) cout << "NO" << 'n'; } return 0; }
C 踩不出足迹
-
题意
定义为长度为 n n n 的数列,每个数字是一个 k k k 位的二进制数,同时保证 ∀ i ∈ [ 1 , n ] , a i < 2 k forall iin[1,n], a_i<2^k ∀i∈[1,n],ai<2k,
令第一次得到的结果为 a 1 a_1 a1。你需要从第二个数开始,每次可以选择与上一次得到的结果异或或者同或起来
求结果的最大值
-
思路
三个知识点
- 同或和异或都具有可交换性
- a ⊙ b = a ⊗ ¬ b a ⊙ b = a ⊗ ¬b a⊙b=a⊗¬b
- a ⊗ ¬ b = ¬ a ⊗ b a⊗¬b=¬a⊗b a⊗¬b=¬a⊗b, ¬ a ⊗ ¬ b = a ⊗ b ¬a⊗¬b=a⊗b ¬a⊗¬b=a⊗b
先就将同或全部转为异或,这样会出来很多的取反的数,既然可交换,就把取反的数放在一起,就可以把取反消掉,那么最后不是剩下一个,就是全没了
所以最后取全部异或的结果,和他的取反即可
/* * @Author: NEFU AB_IN * @Date: 2021-09-11 16:25:46 * @FilePath: VscodeACMNiuKe2021.9.10c.cpp * @LastEditTime: 2021-09-11 16:30:10 */ #include <bits/stdc++.h> using namespace std; #define LL long long #define MP make_pair #define SZ(X) ((int)(X).size()) #define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define DEBUG(X) cout << #X << ": " << X << endl; typedef pair<int, int> PII; namespace IO { char ibuf[1 << 21], *ip = ibuf, *ip_ = ibuf; char obuf[1 << 21], *op = obuf, *op_ = obuf + (1 << 21); inline char gc() { if (ip != ip_) return *ip++; ip = ibuf; ip_ = ip + fread(ibuf, 1, 1 << 21, stdin); return ip == ip_ ? EOF : *ip++; } inline void pc(char c) { if (op == op_) fwrite(obuf, 1, 1 << 21, stdout), op = obuf; *op++ = c; } inline __int128_t read() { __int128_t x = 0, ch = gc(), w = 1; for (; ch < '0' || ch > '9'; ch = gc()) if (ch == '-') w = -1; for (; ch >= '0' && ch <= '9'; ch = gc()) x = x * 10 + ch - 48; return w * x; } template <class I> inline void write(I x) { if (x < 0) pc('-'), x = -x; if (x > 9) write(x / 10); pc(x % 10 + '0'); } class flusher_ { public: ~flusher_() { if (op != obuf) fwrite(obuf, 1, op - obuf, stdout); } } IO_flusher; } using namespace IO; int n, k; const __int128_t one = 1; signed main() { scanf("%d %d", &n, &k); __int128_t ans = 0; for (int i = 1; i <= n; ++i) { ans ^= read(); } write(max(ans, ans ^ ((one << k) - 1))); return 0; }
完结。
最后
以上就是敏感唇膏为你收集整理的牛客练习赛88A 活着的证据B 寻寻觅觅寻不到C 踩不出足迹的全部内容,希望文章能够帮你解决牛客练习赛88A 活着的证据B 寻寻觅觅寻不到C 踩不出足迹所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复