首页 > 其他分享 >2024.12.7 周六

2024.12.7 周六

时间:2024-12-08 10:22:37浏览次数:6  
标签:2024.12 int res cin long ++ 周六 define

2024.12.7 周六


Q1. 1000

给定01字符串,n,m,k。任意操作将区间长度为k的子串字符全变为1。问保证字符串任意区间没有长度大于等于m的子串字符全为0的最少操作次数。

Q2. 1300

有一个正 n 边形,给定x 个关键点,在关键点两两之间任意连互相不交叉的对角线,使得整个图形被划分出的区域中三角形的数量尽可能多。

Q3. 1200

有 n(1000) 个人围成一圈。最开始第 x 个人拿着一个球。m(1000) 个事件:拿着球的人顺时针/逆时针或者不定时针传一定距离的球。问最终哪些人可能有球。

Q4. 1400

给定长度为 n 的数组 a 和长度为 m 的数组 b。找出数组 a 中长度为 m 的连续子区间,并且区间中有至少 k 个数与数组 b 相同,求满足条件区间数量。(数字不唯一)

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

  • 被Q2卡了一下,Q3Q4都是30分钟一道,虽然挺顺还是太慢。

A1. 1点

1.经典的双指针贪心。思路好想难在严谨证明。

A2. 2点 数学题

1.观察大法,仅考虑对角线相连最多可形成x-2个三角形。

2.同时,相邻关键点若距离为2也可形成一个三角形。

A3. 2点

1.小tips:逆时针传d==顺时针传n-d。定义函数ne找到下一个位置简化代码。

2.本质是一批人将球传给下一批人,数据量最多也就1000,可以直接搞。也可dp转移。

A4. 3点

1.每个区间注定要log以内计算出来,考虑如何减少计算数量。可以观察到,对于当前区间与上一个区间相比,区间内的数只去掉了上一个区间的区间头,加上了当前区间的区间末尾。

2.区间长度固定,想到双指针滑动窗口维护合法数量cnt。

3.如果数字唯一就秒了:map只需要维护b数组的数。没有唯一要求则:数据结构map维护b数组数的个数和窗口数的个数,在滑动的时候判断cnt有效增减。

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

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 _()
{
    int n, m, k;
    cin >> n >> m >> k;
    string s;
    cin >> s;
    int res = 0;

    for (int i = 0; i < n; i++)
        if (s[i] == '0')
        {
            int j = i;
            for (; j < n && s[j] == '0'; j++)
                if (j - i + 1 == m)
                {
                    j += k;
                    res++;
                    break;
                }
            i = j - 1;
        }
    cout << res << 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, x, y;
    cin >> n >> x >> y;
    vector<int> a;
    for (int i = 0; i < x; i++)
    {
        int t;
        cin >> t;
        a.push_back(t);
    }
    auto next = [&](int u)
    {
        u += 2;
        if (u > n)
            u -= n;
        return u;
    };
    int res = x - 2;
    sort(a.begin(), a.end());
    for (int i = 0; i + 1 < x; i++)
        if (a[i + 1] == next(a[i]))
            res++;
    if (a.front() == next(a.back()))
        res++;

    cout << res << 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, m, x;
    cin >> n >> m >> x;
    auto ne = [&](int f, int u, int d)
    {
        int v = u + d;
        if (f)
            v = u + n - d;
        return v > n ? v - n : v;
    };
    vector<int> res(n + 1);
    res[x] = 1;
    while (m--)
    {
        int d;
        string op;
        cin >> d >> op;
        vector<int> f;
        if (op == "1")
            f.push_back(1);
        else if (op == "0")
            f.push_back(0);
        else
            f.push_back(1), f.push_back(0);
        vector<int> t(n + 1);
        for (int i = 1; i <= n; i++)
            if (res[i])
            {
                for (auto f : f)
                    t[ne(f, i, d)] = 1; //, bug2(i, ne(f, i, d));
            }
        res = t;
        // for (auto v : t)
        //     cout << v << ' ';
        // cout << endl;
    }
    vector<int> t;
    for (int i = 1; i <= n; i++)
        if (res[i])
            t.push_back(i);
    cout << t.size() << endl;
    for (auto v : t)
        cout << v << ' ';
    cout << endl;
}

A4.

#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, m, k;
    cin >> n >> m >> k;
    vector<int> a(n + 1);
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    map<int, int> s;
    for (int i = 0; i < m; i++)
    {
        int x;
        cin >> x;
        s[x]++;
    }
    int cnt = 0, res = 0;
    map<int, int> t;
    for (int i = 1; i <= m; i++)
    {
        t[a[i]]++;
        // bug3(a[i], t[a[i]], s[a[i]]);
        if (t[a[i]] <= s[a[i]])
            cnt++;
    }
    if (cnt >= k)
        res++;
    for (int i = 2; i + m - 1 <= n; i++)
    {
        int al = a[i - 1], ar = a[i + m - 1];
        if (al == ar)
        {
            if (cnt >= k)
                res++;
            continue;
        }
        if (t[ar] < s[ar])
            cnt++;
        if (t[al] <= s[al])
            cnt--;
        t[ar]++;
        t[al]--;
        // bug2(i, cnt);
        if (cnt >= k)
            res++;
    }
    cout << res << endl;
}

标签:2024.12,int,res,cin,long,++,周六,define
From: https://www.cnblogs.com/jkkk/p/18593106

相关文章

  • CMake学习2024.12.7问AI的问题记录
    iwtbf:target_include_directories(&{PROJECT_BINARY_DIR})是什么GitHubCopilot:target_include_directories是CMake中的一个命令,用于为目标添加包含目录。&{PROJECT_BINARY_DIR}是一个变量,表示项目的二进制目录。语法如下:target_include_directories(<target>[SYSTEM......
  • 详细介绍 NVIDIA GeForce RTX 系列,各显卡配置参数(长期更新 - 2024.12)
    NVIDIAGeForceRTX系列是NVIDIA面向消费级市场的高性能GPU产品线,注重提供高性能的图形处理能力和游戏特性。主要面向游戏玩家和普通用户,同时也被广泛用于深度学习推理和训练等计算密集型任务。主要GPU产品有:50Series、40Series、30Series、20Series、10Seri......
  • Diray - 2024.12.06
    Lamanya-DRE4M1N9好听。那我缺的くるぶっこちゃん-其は万花の夢を見る谁来给我补阿。虽然我是个啥比社恐所以没打过街机音游,中二这些根本没了解过。但是还是喜欢callionet一些,我觉得这个歌,情感很饱满阿!感觉他的歌我一直都挺喜欢的。从最先arcaea的PrimevalTextu......
  • 2024.12.5 周四
    2024.12.5周四Q1.1000给定x2~xn(<=500),构造a1~an,满足i:2~n,x[i]==a[i]%a[i-1]。Q2.1200n户人家在一条线上,现在在某两户i,i+1之间/两端修建一条公路,给定一01串:0代表希望在公路左边,1则相反。要求两侧都要有至少一半人家满意。多解则:i尽量距离中间人家最近,如仍多解则选取......
  • 2024.12.5——攻防世界xff_referer
    知识点:XFFreferer一、知识点详情1.XFF(1)介绍X-Forwarded-For(简称XFF)是一个HTTP请求头部字段,它用于表示HTTP请求的客户端IP地址,尤其是当请求通过一个中介代理或负载均衡器时。该字段的值通常是一个逗号分隔的IP地址列表,其中第一个IP地址是最初连接到中介代理或......
  • Diary - 2024.12.05
    哥我真的佩服你了,,,你说物理老师上完课说的给一两天整理的意思又没有可能是指拿时间整理一下然后等老师来讲,而不是做完作业直接开跑看课,然后让大家追赶你的步伐,,,有点流汗了,感觉现在一天学了好多脑子要爆掉了,然后我还得快点做作业来跟上你看课的速度,,,哥我错了,我是菜比行吗,,,在您的引......
  • 2024.12.4 周三
    2024.12.4周三Q1.1000给定01串,操作:选择l,r,将s[r]放到s[l]前:s[l]s[l+1]...s[r-1]s[r]->s[r]s[l]s[l+1]...s[r-1],代价为r-l+1/区间长度。问最小代价将01串由小到大排序。Q2.1300给定2行'<''>'组成的字符串,起点[1,1],可选4个方向走一步,然后必须根据所在字符走一步。问是......
  • 2024.12.4~2024.12.8
    2024.12.4刚回到北京,呃NOIP也过去了,在家也摆烂了一段时间了,也该做出些调整了怎么说呢,NOIP之前做的计划,虽然并没有严格遵守下去,但也是起到了一个推波助澜的效果的并且计划中的一些条目到目前还适用,所以我就不做什么大的删改,主打的就是一个继承约法n章(省选版):1.作息:6:00起床,7:......
  • 2024.12.3 周二
    2024.12.3周二Q1.1100给定两个长度为n和n+1的数组a,b。每次操作:选择a的任意一个数+1/-1/复制到末尾。问将a变成b的最小操作次数。Q2.1200设定一个数组是美丽的:当其可以通过任意次操作将数组里的数变成同一个数字,操作:如果a[i-1]==a[i+1],则可使a[i]=a[i-1]。问删除数组......
  • 2024.12.3
    //计算每个人的平均成绩JavaPairRDD<String,Double>averages=scores.join(counts).mapValues(newFunction<Tuple2<Integer,Integer>,Double>(){@OverridepublicDoublecall(Tuple2<Integer,Integer>tuple){return(double)tu......