• Codeforces Round #836 (Div. 2)


    A. SSeeeeiinngg DDoouubbllee

    题意:给定一个字符串,让这个字符串的每个位置重复出现一次。然后输出它的回文子串。

    思路:就瞎搞搞

    1. void solve() {
    2. string s; cin >> s;
    3. string be, ed;
    4. map<char, int> mp;
    5. for (auto x : s) mp[x] += 2;
    6. for (auto [x, v] : mp) {
    7. int k = v / 2;
    8. for (int i = 0; i < k; i ++ ) be += x, ed += x;
    9. }
    10. reverse(all(ed));
    11. cout << be + ed << endl;
    12. }

     B. XOR = Average

    题意:n个数的异或值=n个数的平均值,要求你构造一个序列出来

    思路:首先对于奇数n来说,我们只需要任意输出1个数即可。因为对于任意的x,偶数个x起来是0,0异或最后一个x就是x。对于偶数来说,我们有1^3=2,我们我们前面再补(n-2)个2, 就满足了。

    1. void solve() {
    2. int n; cin >> n;
    3. if(n % 2) for (int i = 1; i <= n; i ++ ) cout << 1 << ' ';
    4. else {
    5. for (int i = 1; i <= n - 2; i ++ )
    6. cout << 2 << ' ';
    7. cout << 1 << ' ' << 3;
    8. }
    9. cout << endl;
    10. }

         

    C. Almost All Multiples 

    题意:一个序列从1~n,现在固定a1为x,an为1,要求其他位置(2~n-1)的数能整除i,请构造这个序列, 字典序最小。

    思路:其实我们只需要去考虑n这个数就可以了。加入a1=x=n,那么显然后面直接输出就可以了。那么如果a1=x != n, 那么说明我们的n是得派上用场的。一个最直观的理解, 如果n % x != 0, 那么n就不能对x这个位置完成操作, 就失败了。 那么如果n % x = 0,说明n满足条件,下面只需要去找字典序最小就行了。 如何寻找呢, 显然比如说2, 4, 6这种位置, 如果说n一开始是弥补了2, 但是4和6都可以整除2, 那么我们就可以把n换到6的位置了(同时要满足n能整除6)。

    1. void solve()
    2. {
    3. cin >> n >> x;
    4. if(n == x) {
    5. cout << x << " ";
    6. for (int i = 2; i < n; i++ ) {
    7. cout << i << " ";
    8. }
    9. cout << 1 << endl;
    10. return ;
    11. }
    12. if(n % x) {cout << -1 << endl; return ;}
    13. ans[1] = x, ans[n] = 1;
    14. for (int i = 2; i < n; i++ ) ans[i] = i;
    15. ans[x] = n;
    16. int cur = x;
    17. for (int i = x; i < n; i++ ) {
    18. if(i % cur == 0 && n % i == 0) {
    19. swap(ans[cur], ans[i]);
    20. cur = i;
    21. }
    22. }
    23. for (int i = 1; i <= n; i++ ) cout << ans[i] << ' ';
    24. cout << endl;
    25. }

    D. Range = √Sum

    题意:max-min = 根号sum。要求构造一个不含重复数的序列。

    思路:呃其实偶数挺想的。奇数有点难,我不会证明我的n+3为什么对,但是一发过了hh。

     

     

    好像有点抽象~~

    1. void solve() {
    2. int n; cin >> n;
    3. if(n % 2 == 0) {
    4. for (int i = 0; i < n / 2; i ++ ) {
    5. cout << (n / 2) + i << ' ';
    6. }
    7. for (int i = 0; i < n / 2; i ++ )
    8. cout << 3 * n / 2 - i << ' ';
    9. }
    10. else {
    11. for (int i = 0; i < n / 2; i ++ ) {
    12. cout << (n + 1) / 2 + i + 1 << ' ';
    13. }
    14. for (int i = 0; i < n / 2; i ++ )
    15. cout << (3 * n + 3) / 2 - i + 1 << ' ';
    16. cout << n + 3;
    17. }
    18. cout << endl;
    19. }

     

  • 相关阅读:
    面试题4:POST 比 GET 安全?
    遇见问题:使用mybaties向数据库中插入数据,idea显示插入成功,但是数据库中并没有数据变化?
    算法工程师14.1——力扣刷题基本题
    【代码随想录】算法训练计划28
    el-table实现转置表格
    谷粒商城 (四) --------- 项目结构创建 & 初始化数据库
    医疗行业:容灾备份平台建设及运维难点
    一文精通HashMap灵魂七问,你学还是不学
    LLVM 插桩 LLVM IR PHI指令
    基于JAVA排课系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  • 原文地址:https://blog.csdn.net/m0_61837058/article/details/128070366