ABC171

A

  判断这个字符是大写还是小写,大写输出A小写输出a

char s; std::cin >> s; std::cout << (std::isupper(s) ? "A" : "a");

B

  有N个物品,选出K个物品,使选出的物品价值之和最小。排个序将前k个加起来就行了

int n, m; std::cin >> n >> m; std::vector<int> a(n); for (auto& v : a) std::cin >> v; std::sort(a.begin(), a.end()); std::cout << std::accumulate(a.begin(), a.begin() + m, 0) << "\n";

C

  将N转化为字母表达,每次输出N对应的字符就可以了,注意要倒着输出

i64 N; std::cin >> N; std::string s = ""; while(N) { N --; s += char(N % 26 + 'a'); N /= 26; } std::reverse(s.begin(), s.end()); std::cout << s;

D

  考虑先将所有数的和加起来,并且将每个数的个数存下来,这样在后面q次操作的时候,只需要在原来的和的基础上加上cnt[b]cb的差值就可以了。

int n; std::cin >> n; i64 ans = 0; for (int i = 1; i <= n; i++ ) { std::cin >> a[i]; ans += a[i]; cnt[a[i]]++; } int q; std::cin >> q; for (int i = 0; i < q; i ++ ) { int b, c; std::cin >> b >> c; ans += (c - b) * 1ll * cnt[b]; cnt[c] += cnt[b]; cnt[b] = 0; std::cout << ans << "\n"; }

E

  不难发现将所给的n个数全部异或起来,得到的就是所要求的原序列n个数的异或和记为ans,那么我们只需要每次输出ansa[i]就可以了

int n; std::cin >> n; std::vector<int> a(n); i64 ans = 0; for (int i = 0; i < n; i++ ) { std::cin >> a[i]; ans ^= a[i]; } for (int i = 0; i < n; i++ ) { std::cout << (ans ^ a[i]) << " \n"[i == n - 1]; }

F

  要在原有的字符串的基础上插入m个字符,记原来的字符串的长度为n,那么此时的长度就是n+m,在放入字符的时候,此时有i(0in)个空位,那么就是有26i个方案;由于不确定是在哪一个空位放数字,所以有m1种选择,(n+mi1m1);此时就剩下ni个空位了,也就还有25ni中方案。最终的答案就是ans=i=0n26i×(n+mi1m1)×25ni

CNM::init(); int n; std::string s; std::cin >> n >> s; Z ans = 0; int m = s.size(); for (int i = 0; i <= n; i++ ) { ans += power(Z(26), i) * CNM::binom(n + m - i - 1, m - 1) * power(Z(25), n - i); } std::cout << ans << "\n";

__EOF__

本文作者HoneyGrey
本文链接https://www.cnblogs.com/Haven-/p/16600189.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   浅渊  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示