AtCoder Beginner Contest 356 A~F

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

A.Subsegment Reverse

题意

给出三个正整数N,L,RN, L, RN,L,R。

对于一个序列A=(1,2,…,N)A = (1, 2, \ldots, N)A=(1,2,…,N),请你输出翻转了L∼RL \sim RL∼R之间数字后得到的序列。

分析

使用循环进行翻转即可。

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5e2;

int a[N];

void solve() {
    int n, l, r;
    cin >> n >> l >> r;
    for (int i = 1; i <= n; i++) {
        a[i] = i;
    }
    for (int i = l, j = r; i <= j; i++, j--) {
        swap(a[i], a[j]);
    }
    for (int i = 1; i <= n; i++) {
        cout << a[i] << ' ';
    }
}

int main () {
    solve();
    return 0;
}

B.Nutrients

题意

高桥每天需要补充MMM种营养物质,第jjj种营养物质至少需要补充AjA_jAj​单位。

今天,他将会吃掉NNN种食物,其中第iii种食物能依次获得Xi,1,Xi,2,…,Xi,MX_{i, 1}, X_{i, 2}, \ldots, X_{i, M}Xi,1​,Xi,2​,…,Xi,M​营养,其中Xi,jX_{i, j}Xi,j​表示第iii种食物提供的jjj营养物质的数量。

问:今天能否获得足够的营养?

分析

直接在输入的AAA数组中减去每个食物对应的营养即可。

如果输入完成后,AAA数组里只存在负数和000,那么就表示获得了足够的营养,否则。说明没有获得足够的营养。

代码

#include <bits/stdc++.h>
using namespace std;

const int N = 3e5 + 5e2;

int a[N];

void solve() {
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= m; i++) {
        cin >> a[i];
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            int x;
            cin >> x;
            a[j] -= x;
        }
    }
    for (int i = 1; i <= m; i++) {
        if (a[i] > 0) {
            cout << "No" << endl;
            return;
        }
    }
    cout << "Yes" << endl;
}

int main () {
    solve();
    return 0;
}

C.Keys(二进制枚举)

题意

有NNN把钥匙,其中有真有假。

有一扇门,每次可以选择若干把钥匙一起开门,如果其中至少包含kkk把真的钥匙,那么就可以把门打开。

你对这个门尝试了MMM次以下操作:

  • 选择CiC_iCi​把钥匙Ai,1,Ai,2,…,Ai,CiA_{i, 1}, A_{i, 2}, \ldots, A_{i, C_i}Ai,1​,Ai,2​,…,Ai,Ci​​,并尝试打开门。

  • 获得当前尝试的结果RiR_iRi​:

    • 如果Ri=′o′R_i = 'o'Ri​=′o′:表示门被打开了

    • 如果Ri=′x′R_i = 'x'Ri​=′x′:表示门未被打开

已知钥匙的真假情况共有2N2^{N}2N种,请问其中有多少种情况满足MMM次操作的结果。

分析

由于n≤15n \le 15n≤15,那么2n≤215=327682^{n} \le 2^{15} = 327682n≤215=32768,因此,总的方案数是很小的,可以使用一个长度为nnn的二进制串表示钥匙的真假情况,即二进制串第iii位为000表示第iii把钥匙为假,第iii位为111表示第iii把钥匙为真。

然后枚举所有可能的二进制串(0∼2n−1)(0 \sim 2^{n} - 1)(0∼2n−1),并检查每个二进制串是否满足题目要求,即能打开门的方案中真钥匙的数量是否大于等于kkk,不能打开门的方案中真钥匙的数量是否小于kkk。如果满足题目要求,就记录答案数量加一。

最后输出记录的答案数量即可。

代码

#include <bits/stdc++.h>
using namespace std;

const int N = 3e2 + 5e2;

int n, m, k, c[N], r[N], a[N][N];

bool check(int x) {
    for (int i = 1; i <= m; i++) {
        int cnt = 0;
        for (int j = 1; j <= c[i]; j++) {
            if ((x & (1 << (a[i][j] - 1))) != 0) {
                cnt++;
            }
        }
        if (cnt >= k && r[i] == 1 || cnt < k && r[i] == 0) {} else {
            return 0;
        }
    }
    return 1;
}

void solve() {
    cin >> n >> m >> k;
    for (int i = 1; i <= m; i++) {
        cin >> c[i];
        for (int j = 1; j <= c[i]; j++) {
            cin >> a[i][j];
        }
        char op;
        cin >> op;
        if (op == 'o') r[i] = 1;
        else r[i] = 0;
    }
    int ans = 0;
    for (int i = (1 << n) - 1; i >= 0; i--) {
        if (check(i)) {
            ans++;
        }
    }
    cout << ans << endl;
}

int main () {
    solve();
    return 0;
}

D.Masked Popcount(数学)

题意

给出两个数字N,MN, MN,M,请你计算KaTeX parse error: Expected 'EOF', got '&' at position 40: …opcount(k\text{&̲}M)取模998244353998244353998244353的结果。

分析

先不考虑MMM,先考虑∑k=0Npopcount(k)\sum\limits_{k = 0}^{N}popcount(k)k=0∑N​popcount(k)的结果。

使用ans[i]ans[i]ans[i]表示1∼N1 \sim N1∼N之间二进制第iii为为一的数字个数。

那么∑k=0Npopcount(k)=∑i=059ans[i]\sum\limits_{k = 0}^{N}popcount(k) = \sum\limits_{i = 0}^{59}ans[i]k=0∑N​popcount(k)=i=0∑59​ans[i]。

然后打表来找一下规律:

  • n=1n = 1n=1时, ans=[1]ans = [1]ans=[1]
  • n=2n = 2n=2时, ans=[1,1]ans = [1, 1]ans=[1,1]
  • n=4n = 4n=4时, ans=[2,2,1]ans = [2, 2, 1]ans=[2,2,1]
  • n=8n = 8n=8时, ans=[4,4,4,1]ans = [4, 4, 4, 1]ans=[4,4,4,1]
  • n=16n = 16n=16时,ans=[8,8,8,8,1]ans = [8, 8, 8, 8, 1]ans=[8,8,8,8,1]
  • …
  • n=2in = 2^{i}n=2i时,ans=[2i−1,2i−1,…,2i−1,1]ans = [2^{i - 1}, 2^{i - 1}, \ldots, 2^{i - 1}, 1]ans=[2i−1,2i−1,…,2i−1,1]

这样就可以找到nnn为222的次方数,对每位二进制产生的贡献。

那如果n=2i+a(a<2i)n = 2^{i} + a(a < 2^{i})n=2i+a(a<2i)呢?

不难想到,2i∼2i+a2^{i} \sim 2^{i} + a2i∼2i+a最高的二进制位固定为111,那么共有1+a1 + a1+a个这样的数字,对第iii个二进制位产生的贡献即为1+a1 + a1+a,然后让nnn减去2i2^{i}2i,继续计算剩余的nnn还能产生的贡献即可。

因此,可以依次枚举59∼059 \sim 059∼0,如果n≥2in \ge 2^{i}n≥2i,那么就让所有的ans[j](j=0∼(i−1))ans[j](j = 0 \sim (i - 1))ans[j](j=0∼(i−1))均加上2i−12^{i - 1}2i−1,并让ans[i]ans[i]ans[i]加上1+n1 + n1+n % 2i2^{i}2i,然后让nnn减去2i2^{i}2i。

这样,就可以得到了∑k=0Npopcount(k)=∑i=059ans[i]\sum\limits_{k = 0}^{N}popcount(k) = \sum\limits_{i = 0}^{59}ans[i]k=0∑N​popcount(k)=i=0∑59​ans[i],然后计算popcountpopcountpopcount时需要让KaTeX parse error: Expected 'EOF', got '&' at position 9: k \text{&̲} m,那么不难想到,答案即为所有mmm的二进制位上为111对应的ans[i]ans[i]ans[i]之和。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int mod = 998244353;

ll ans[105];

void solve() {
    ll n, m;
    cin >> n >> m;
    for (int i = 60; i >= 0; i--) {
        if (n >= (1ll << i)) {
            ans[i] = ((ans[i] + 1) % mod + n % (1ll << i)) % mod;
            for (int j = i - 1; j >= 0; j--) {
                ans[j] = (ans[j] + (1ll << (i - 1)) % mod) % mod;
            }
            n -=(1ll << i);
        }
    }
    ll res = 0;
    for (int i = 60; i >= 0; i--) {
        if (m & (1ll << i))
            res = (res + ans[i]) % mod;
    }
    cout << res << endl;
}

int main () {
    solve();
    return 0;
}

E.Max/Min(前缀和)

题意

给出一个序列A=(A1,…,An)A = (A_1, \ldots, A_n)A=(A1​,…,An​),请你求出:

  • ∑i=1n−1∑j=i+1n⌊max(Ai,Aj)min(Ai,Aj)⌋\sum\limits_{i = 1}^{n - 1}\sum\limits_{j = i + 1}^{n}\lfloor \frac{max(A_i, A_j)}{min(A_i, A_j)} \rfloori=1∑n−1​j=i+1∑n​⌊min(Ai​,Aj​)max(Ai​,Aj​)​⌋

分析

不难想到,如果Ai<AjA_i < A_jAi​<Aj​,那么⌊max(Ai,Aj)min(Ai,Aj)⌋=⌊AjAi⌋\lfloor \frac{max(A_i, A_j)}{min(A_i, A_j)} \rfloor = \lfloor \frac{A_j}{A_i} \rfloor⌊min(Ai​,Aj​)max(Ai​,Aj​)​⌋=⌊Ai​Aj​​⌋。

因此,可以考虑对所有的AiA_iAi​,统计∑j=i+1n⌊AjAi⌋\sum\limits_{j = i + 1}^{n}\lfloor \frac{A_j}{A_i} \rfloorj=i+1∑n​⌊Ai​Aj​​⌋。

然后考虑怎么快速计算出∑j=i+1n⌊AjAi⌋\sum\limits_{j = i + 1}^{n}\lfloor \frac{A_j}{A_i} \rfloorj=i+1∑n​⌊Ai​Aj​​⌋,由于选择的是向下取整,那么对于数字xxx而言,y=x×j∼(x×(j+1))−1y = x \times j \sim (x \times (j + 1)) - 1y=x×j∼(x×(j+1))−1得到的⌊yx⌋\lfloor \frac{y}{x} \rfloor⌊xy​⌋均是相同的,因此,可以预处理前缀和,以便于快速知道x×j∼(x×(j+1))−1x \times j \sim (x \times (j + 1)) - 1x×j∼(x×(j+1))−1之间的数字个数,此时产生的贡献即为j×(pre[(x×(j+1))−1]−pre[x×j−1])×cntj \times (pre[(x \times (j + 1)) - 1] - pre[x \times j - 1]) \times cntj×(pre[(x×(j+1))−1]−pre[x×j−1])×cnt,其中cntcntcnt为数字xxx的出现次数。

因此,可以使用sumsumsum数组记录每个数字的出现次数,然后对记录的数字出现次数预处理前缀和。

然后,就可以枚举数字iii了,对于数字iii,再枚举jjj从111到i×j≤106i \times j \le 10^{6}i×j≤106的范围内。统计所有数字产生的贡献即可。

此时计算过程中会多计算了一部分,需要在计算后减去。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 + 5e2;
ll sum[N], pre[N];

int main() {
    int n;
    cin >> n;
    for (int i = 1, num; i <= n; i++) {
        cin >> num;
        sum[num]++;
    }
    for (int i = 1; i <= 1e6; i++) {
        pre[i] = pre[i - 1] + sum[i];
    }
    ll ans = 0;
    for (int i = 1; i <= 1e6; i++) {
        for (int j = 1; j * i <= 1e6; j++) {
            ans += j * (pre[min((j + 1) * i - 1, 1000000)] - pre[j * i - 1]) * sum[i];
        }
        ans -= sum[i] * (1 + sum[i]) / 2;
    }
    cout << ans << endl;
    return 0;
}

F.Distance Component Size Query(平衡树)

题意:

给你一个整数KKK。对于初始为空的集合SSS,依次处理以下两种类型的QQQ查询:

  • 1 x:给出一个整数xxx。如果xxx在SSS中,则从SSS中删除xxx。否则,在SSS中加入xxx。
  • 2 x:给出位于SSS中的整数xxx。考虑一个图,其中的顶点是SSS中的数字,并且当且仅当两个数字之间的绝对值差最多为KKK时,这两个数字之间有一条边。请打印包含xxx的连通部分中的顶点数。

分析:

本题操作222可以看作查询xxx所在的连通块大小,此处我们定义连通块为位于集合SSS中的数,他们中两个数的绝对值之差小于等于KKK时,就可以存在一条边。对于求一个连通块内点的个数,我们考虑缩点。

考虑使用SetSetSet来维护集合:S1S1S1维护所有点集合,S2S2S2维护缩点的集合,即只存放编号最大的点。在S2S2S2中需要求两个元素之间的距离,对于本题,暴力会超时,需要使用平衡树求排名,即rankrankrank。普通SetSetSet不方便进行求rankrankrank的操作,所以我们使用pb_ds对S1S1S1进行维护,S2S2S2使用普通SetSetSet也可以。

代码:

#include <bits/stdc++.h>
#include <bits/extc++.h>

using namespace std;
using namespace __gnu_pbds;
typedef long long LL;
const LL mod = 1000000007;
const LL MAXN = 4e18;
#define TR tree<LL, null_type, less<LL>, rb_tree_tag, tree_order_statistics_node_update>

TR s1, s2;

int main() {
    int q;
    LL k;
    cin >> q >> k;
    s1.insert(-MAXN), s1.insert(MAXN);
    s2.insert(-MAXN), s2.insert(MAXN);
    while (q--) {
        int cnt;
        LL x;
        cin >> cnt >> x;
        if (cnt == 1) {
            if (s1.find(x) == s1.end()) {
                auto it = s1.insert(x).first;
                LL w1 = *prev(it), w2 = *next(it);
                if (x - w1 <= k)
                    s2.erase(w1);
                if (w2 - x <= k)
                    continue;
                else
                    s2.insert(x);
            } else {
                auto it = s1.find(x);
                LL w1 = *prev(it), w2 = *next(it);
                s1.erase(x), s2.erase(x);
                if (w2 - w1 > k)
                    s2.insert(w1);
            }
        } else {
            auto it = s2.lower_bound(x);  // 找x所在连通块编号最大点
            cout << s1.order_of_key(*it) - s1.order_of_key(*prev(it)) << endl;
        }
    }
    return 0;
}

赛后交流

在比赛结束后,会在交流群中给出比赛题解,同学们可以在赛后查看题解进行补题。

群号: 704572101,赛后大家可以一起交流做题思路,分享做题技巧,欢迎大家的加入。

六、Tool 工具系统:让大模型拥有“手脚“ 我问你一个问题:大模型能不能告诉你"北京今天天气怎么样"?能——它能用非常流畅的中文回答你不能——它不知道这个答案因为它没有联网能力,也没有实时数据。它可能会自信地编一个"今天晴,25 度"给你——这就是幻觉。问题出在哪?大模型是一个"推理引擎",不是一个"执行引擎"。它知道天气 API 怎么调用,但不能真的发出 HTTP 请求。它知道 Python 代码怎么写,但不能真的运行代码。它知道数学公式,但做不了精确的大数计算。Tool 工具系统解决的,就是这个"最后一公里"问题。 阅读详情

相关推荐

半导体工厂自动化实战:用secs4net实现设备与MES系统通信(附完整代码)

本文详细介绍了如何利用secs4net框架实现半导体工厂设备与MES系统的高效通信。通过解析SECS/GEM协议的核心架构、关键业务场景实现及性能优化实践,帮助开发者快速掌握工业自动化通信技术,提升生产效率和系统稳定性。

transformer2023的博客 892

AtCoder Beginner Contest 356

由于钥匙一共就15把,我们枚举每一把钥匙为真的可能性,一共就是2的15次方,只需要判断当前钥匙排列是否能通过这m种是否开门的尝试方案,全部通过则说明当前钥匙的组合是可能的,就把ans++。题目大意是一共有n个钥匙,编号为1到n,需要k个真钥匙才能开门,然后给出了m个关系,也就是在某次尝试中用了这些钥匙开门,并且给了你是否开门的结果,问一共有多少种真钥匙的可能。也是简单题,输入包含n个项以及m行,在第二行输入第i个是第i列应该达到的目标,之后m行每行n个,要求每一列相加的和大于对应的第i列。

chkQAQ的博客 505

Android自动化新方案:ESP32-C3蓝牙HID模拟触控与手势操作实战(附源码)

本文详细介绍了使用ESP32-C3通过蓝牙HID协议实现Android设备自动化操作的完整方案。该硬件方案成本低廉且能完美规避系统风控,可模拟鼠标移动、点击及复杂手势操作,延迟低于50毫秒,适用于游戏连招和应用测试等场景。文章包含完整的源码实现和性能优化技巧。

kotlin6android的博客 377

AtCoder Beginner Contest 356 A-E

分析:我们可以考虑先将M拆分成二进制, 那么二进制位置上为1的才是有效的, 然后枚举这些位置, 判断0-N上有多少数在这些位置上为1,然后全部加起来。题目大意:给出一个长度为n的数组,求所有的二元组{i, j}满足i<j,的max(a[i], a[j]) / min(a[i], a[j])向下取整的和。赛时cwa了两发, 错在数组开小了,没注意M是偏大的,改了一次后没注意还要一个跟M相关,有点粗心了,f和g还有半小时,有思路但不多,这场感觉还行。时间复杂度:O(2^n * m * c)分析:直接模拟即可。

2301_80210089的博客 1373

Python爬虫实战:手把手教你用Selenium绕过药监局网站的反爬机制(附完整代码)

本文详细介绍了如何使用Selenium绕过药监局网站的反爬机制,提供了一套完整的Python爬虫实战方案。通过浏览器指纹伪装、动态等待策略、会话维持技巧以及分布式采集设计,帮助开发者高效爬取药监局数据,解决政府类网站常见的反爬挑战。

weixin_42620255的博客 737

ByteTrack参数调优全攻略:从原理到实战(含YOLOv8示例)

本文深入解析了ByteTrack多目标跟踪算法的核心原理与参数调优策略。通过拆解其独特的两阶段关联机制,并结合YOLOv8检测器,提供了针对不同应用场景(如拥挤行人、高速车辆)的精细化参数调整指南与实战示例,旨在帮助开发者解决ID切换、目标丢失等工程落地难题,提升跟踪系统的鲁棒性与实用性。

cheese的博客 322

ABC 356 C - Keys 翻译

种可能的钥匙组合,其中哪些是真钥匙,哪些是假钥匙。在这些组合中,找出与任何测试结果都不矛盾的组合数。给定的测试结果有可能是错误的,没有任何组合满足条件。有一扇门,门 X,你可以插入任意数量的钥匙。其中一些是真钥匙,其他都是假钥匙。输入内容由标准输入法提供,格式如下。把真钥匙,X 门才会打开。如问题陈述所述,答案可能是。你已经对这些钥匙进行了。

qianzhima2012的博客 330

手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略

本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。

weixin_29008805的博客 449

Atcoder Beginner Contest 356题解(D、E)

出现的次数,可以对这个桶数组再求个前缀和,则可以用这个前缀和数组。的二进制表示中1的个数,所以可以按位考虑,考虑有多少个。写代码时注意取模操作,传入函数中的参数也应该取模。,因为后者是调和级数,所以时间复杂度就是。,那么我们这样操作的时间复杂度就是。考虑如果a数组中的元素各不相同。排序以方便理解)从前往后枚举。,我们发现这个x的最大值就是。地求出某一连续值域中出现的。中的每一个元素,求当前位置。对于每个x,我们可以用。倍的情况并且注意把相同的。,那么这两个位一定都是。,可以开个桶来存储每个。

光mon的博客 1111

CLion for Mac(m1)配置GCC编译器

条件:电脑已经下载过XCode 一. 下载HomeBrew homebrew是一款macos,linux下的包管理工具,我们需要使用他来下载GCC 下载方法: 1.打开终端(terminal) 2.输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ps.有可能会遇到的问题 我当初下载挂了VPN,优快云上还有很多解决问题的方法,可以将错误信

supermario19的博客 7845

加权均值向量算法(INFO)详解:从数学原理到智能算法

本文系统介绍了加权均值向量算法(INFO)的理论基础、数学模型与实现应用。该算法基于加权均值数学概念,通过MeanRule规则平衡探索与开发能力,具有结构新颖、参数合理的特点。核心内容包括:1) 算法理论基础,阐述加权均值数学定义与小波函数权重计算;2) 算法原理,详细解析更新规则、向量组合和局部搜索三阶段数学模型;3) 实现方法,提供MATLAB代码关键参数解析;4) 改进方向,介绍INFO-KELM混合模型等变体;5) 应用案例,涵盖函数优化、工程设计与机器学习领域。

qq_42212808的博客 234

atcoder364(A~E)

##A.

sgyjhhik的博客 549

使用 Simulink + Simscape Electrical 对 级联H桥多电平整流器并网功率分配 进行建模与仿真

摘要:本文详细介绍了基于Simulink对级联H桥(CHB)多电平整流器并网功率分配进行建模的方法。内容包括系统组成、功率分配意义、Simulink建模流程、PWM控制策略实现、功率分配算法设计以及仿真分析。重点阐述了主电路搭建、双环控制结构(外环功率分配+内环电流控制)和载波层叠PWM调制技术,并提供了功率分配算法示例。通过优化参数和控制算法,可提升系统性能。该建模方法为电力电子变换器和新能源并网系统研究提供了有效工具。

amy_mhd的博客 251

AtCoder Beginner Contest 186

AtCoder Beginner Contest 186

青少年趣味编程 1062

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

AtCoder Beginner Contest 273

AtCoder Beginner Contest 273

青少年趣味编程 1045

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

题解/算法 {E - Max/Min}

1

qq_66485519的博客 467

AtCoder Beginner Contest 351 C题

这道题利用动态数组vector来模拟题目的要求,其中需要注意的是vector数组下标是从0 开始的,因此判断最右面的元素和倒数第二个右面元素的时候要注意其下面,再就是注意它放入的数据是2 的A[i]的次幂。其他只要掌握vector数组的使用方法,会vector.pop_back,应该就没问题了。

2302_79545206的博客 986

Atcoder 356 A - Subsegment Reverse

这道题,就是给你一个数字N,然后你就可以的得到一个首项为1,公差为1的N项等差数列,然后对于这个数列,将第L到R 项进行翻转,之后再输出即可,题目内容很简单,如何快速简洁的来实现这道题目呢,首先考虑数组A的构建,我们可以使用iota 函数递增得到A,然后使用reverse 函数即可,注意reverse函数的使用方法,其[L,R),右区间不是封闭的,而且还要注意vector数组下标是从0开始的。

2302_79545206的博客 471

poj_2479_Maximum sum(最大两子段和)

题型:DP(连续最大字段和的扩展) 题意:在一段数中找出两个连续子段,使其和最大。 分析: 可以联想到求最大子段和的方法,此题就是以此为基础的。 先从左向右做一遍求最大子段和的DP,得到数组dp1[ ]; 再从右向左做一遍求最大子段和的DP,得到数组dp2[ ]。 然后更新一下这两个数组,更新方法为: 对于数组dp1[ ],若dp1[i-1]>dp1[i],dp[i]

Light_starlight 1096

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 201

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 309

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 571

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 748

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 367

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 170
上一篇: Codeforces Round 947 (Div. 1 + Div. 2) A~F
下一篇: Codeforces Round 948 (Div. 2) A~D
AC-Panda
博客等级 码龄5年 1736粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值