首页 > 其他分享 >2024.12.13 周五

2024.12.13 周五

时间:2024-12-14 12:11:41浏览次数:5  
标签:2024.12 13 string int res cout 周五 leq define

2024.12.13 周五


Q1. 1000

Polycarp has a problem — his laptop keyboard is broken.

Now, when he presses the 'b' key, it acts like an unusual backspace: it deletes the last (rightmost) lowercase letter in the typed string. If there are no lowercase letters in the typed string, then the press is completely ignored.

Similarly, when he presses the 'B' key, it deletes the last (rightmost) uppercase letter in the typed string. If there are no uppercase letters in the typed string, then the press is completely ignored.

In both cases, the letters 'b' and 'B' are not added to the typed string when these keys are pressed.

Given a sequence of pressed keys, output the typed string after processing all key presses.

Q2. 1000

You are given an array $a_1, a_2, \ldots, a_n$. You need to find an array $b_1, b_2, \ldots, b_n$ consisting of numbers $1$, $2$, $3$ such that exactly two out of the following three conditions are satisfied:

  1. There exist indices $1 \leq i, j \leq n$ such that $a_i = a_j$, $b_i = 1$, $b_j = 2$.
  2. There exist indices $1 \leq i, j \leq n$ such that $a_i = a_j$, $b_i = 1$, $b_j = 3$.
  3. There exist indices $1 \leq i, j \leq n$ such that $a_i = a_j$, $b_i = 2$, $b_j = 3$.

If such an array does not exist, you should report it.

Q3. 1000

You are given an array of integers $a_1, a_2, \ldots, a_n$ and a number $k$ ($2 \leq k \leq 5$). In one operation, you can do the following:

  • Choose an index $1 \leq i \leq n$,
  • Set $a_i = a_i + 1$.

Find the minimum number of operations needed to make the product of all the numbers in the array $a_1 \cdot a_2 \cdot \ldots \cdot a_n$ divisible by $k$.

------------------------独自思考分割线------------------------

  • 这分段的题,构造,数论,位运算比较有挑战性,其他的题对码力有点要求。果然codeforces的题目质量都很高,没有浪费时间这一说。

A1.

  1. 模拟,set/map/stack/倒叙统计个数模拟均可。

A2.

  1. 结论构造,需要发现至少有两个块有至少2个相同的数构造任意2种情况即可。过程需要点技巧性。
  2. 注意i,j没有大小关系,如果有,一个块有3个相同的数即可构造。

A3.

  1. 若被2,3,5整除,就必须有一个数包含其作为质因子,将一个数改为其倍数即可。
  2. 被4整除时,考虑2种情况:1.将一个数改为4的倍数,2.将2个数改为2的倍数。取最小代价即可。

------------------------代码分割线------------------------

A1.

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(6);
    int T = 1;
    cin >> T;
    while (T--)
        _();
    return 0;
}

void _()
{
    string s;
    cin >> s;
    set<int> low, high;
    vector<int> del(s.size());
    for (int i = 0; i < s.size(); i++)
        if (s[i] == 'b')
        {
            if (low.size())
            {
                int x = *(low.rbegin());
                del[x] = 1,
                low.erase(x);
            }
        }
        else if (s[i] == 'B')
        {
            if (high.size())
            {
                int x = *(high.rbegin());
                del[x] = 1;
                high.erase(x);
            }
        }
        else
        {
            if (islower(s[i]))
                low.insert(i);
            else
                high.insert(i);
        }
    for (int i = 0; i < s.size(); i++)
        if (s[i] != 'b' && s[i] - 'B' && !del[i])
            cout << s[i];
    cout << endl;
}

A2.

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(6);
    int T = 1;
    cin >> T;
    while (T--)
        _();
    return 0;
}

void _()
{
    int n;
    cin >> n;
    struct Node
    {
        /* data */
        int a, b = 1, i;
    };
    vector<Node> A(n);
    int id = 0;
    for (auto &[a, b, i] : A)
    {
        cin >> a;
        i = id++;
    }
    sort(A.begin(), A.end(), [](Node &a, Node &b)
         { return a.a < b.a; });
    int f2 = 0, f3 = 0;
    for (int i = 0; i < n; i++)
    {
        if (i && A[i - 1].a == A[i].a)
        {
            if (!f2)
                A[i].b = 2, f2 = A[i].a;
            else if (f2 - A[i].a)
                A[i].b = 3, f3 = 1;
        }
    }
    sort(A.begin(), A.end(), [](Node &a, Node &b)
         { return a.i < b.i; });
    if (f2 && f3)
        for (auto [a, b, i] : A)
            cout << b << ' ';
    else
        cout << -1;
    cout << endl;
}

A3.

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(6);
    int T = 1;
    cin >> T;
    while (T--)
        _();
    return 0;
}

void _()
{
    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    int even = 0;
    for (auto &v : a)
    {
        cin >> v;
        if (v % 2 == 0)
            even++;
    }
    auto get = [&](int k)
    {
        int res = 1e9;
        for (auto v : a)
            res = min(res, (k - v % k) % k);
        return res;
    };
    int res = get(k);
    if (k == 4)
        res = min(res, 2 - min(2ll, even)); // the range of even
    cout << res << endl;
}

标签:2024.12,13,string,int,res,cout,周五,leq,define
From: https://www.cnblogs.com/jkkk/p/18606529

相关文章

  • 2024-2025-1 20241329 《计算机基础与程序设计》第十二周学习总结
    作业信息作业归属课程:2024-2025-1-计算机基础与程序设计作业要求:2024-2025-1计算机基础与程序设计第十二周作业作业目标:《C语言程序设计》第11章作业正文:2024-2025-120241329《计算机基础与程序设计》第十二周学习总结教材学习内容总结《C语言程序设计》第11章1.指针和......
  • ARC132E题解
    简要题意有\(n\)个方块,每个方块有一个初始状态可能为左右或者空。每次操作随机选择一个空进行操作。每次操作可以向左或者向右走一直到下一个空或者走出边界,走到的每个格子会变成左或者右,这取决于移动方向。求无法操作时方格为左的期望数。数据范围:\(n\le10^5\)。题解首先......
  • 科丁乐K12137 二叉树中的秘密
    题目描述新年伊始,我飞买了一棵二叉树,传闻这棵二叉树的某一个节点上隐藏着上古的秘密,于是我飞开始昼夜不息的寻找。本着不遗漏任何一个节点的原则,飞神打算遍历整棵二叉树。设S为飞神当前所处的节点。若S有两个子节点L,R,则飞神总是先去遍历节点较少的那棵子树,然后再去遍历另......
  • 2024-2025-1 20241322 《计算机基础与程序设计》第十二周学习总结
    2024-2025-120241322《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12这个作业的目标《C语言程序设计》......
  • Android 13.0 app应用安装白名单
    前言应用场景和用户需求‌:ROM定制化开发‌:在定制ROM时,客户可能需要限制某些应用安装,以确保系统的安全和稳定。通过实现应用安装白名单功能,可以满足这种需求。‌企业设备管理‌:在企业设备中,可能需要限制员工只能安装指定的应用,以防止恶意软件和不当使用。通过白名单功能,......
  • CSS学习记录13
    CSS组合器组合器是解释选择器之间关系的某种机制。CSS选择器可以包含多个简单选择器。在简单选择器之间,我们可以包含一个组合器。CSS中有四种不同的组合器:后代组合器(空格)子选择器(>)相邻兄弟选择器(+)通用兄弟选择器(~)后代选择器后代选择器匹配属于指定元素后代的所有元素。......
  • 2.12、收集表单数据 2.13、过滤器
    需求:收集以下表单的数据<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><title>表单数据的收集</title><scriptsrc="../js/vue.js"></script></head><b......
  • 读数据保护:工作负载的可恢复性13一致性模型
    1. 一致性模型1.1. 数据库与其他东西相比,还有一个很重要的区别就在于,它们需要通过某种机制来确保数据一致,对于运行在多个节点上的数据库来说,这尤其重要1.1.1. 一致性模型(consistencymodel)1.2. 立即一致性1.2.1. 立即一致性(immediateconsistency)也叫强一致性(s......
  • 代码随想录训练营第十六天| 513. 找树左下角的值 112. 路径总和 106.从中序与后序遍历
    513.找树左下角的值 题目链接:513.找树左下角的值-力扣(LeetCode)讲解链接:代码随想录 求最后一行最后一个左子节点的值就是求二叉树深度最大的叶子节点递归:确定递归函数的参数和返回值参数必须有要遍历的树的根节点,还有就是一个int型的变量用来记录最长深度。这里......
  • 2024-12-13新闻
    2024-12-13新闻作业板块语文三行译做准备默写三行译读书笔记数学《公能勤思》\(P_{204}\simP_{206}\)英语《高分突破》卷子一张设计广告轶事版刘军蔚骨折了刘军蔚昨天晚上背书包绊倒,右手手臂骨折了。获得外号:铁肘侠。没交错题本的被数学课代表和周老师联合......