AtCoder ABC 128(C ~ E)

AtCoder Beginner Contest 350 (ABCDEF题)视频讲解 AtCoder Beginner Contest 350 A到F题视频讲解 阅读详情

C Switches(枚举 + 位运算)

Description:

​ 有n盏灯和m组设定,要求输出同时符合m组设定的灯开关的方案数

​ 设定:s_i中亮灯的数量%2 == p_i

Solution:

​ 因为跟开关灯有关也就是01有关 再加上N只有10 于是我们就用01串枚举一下灯的状态

​ 用位运算来check是否合法

Code:

int n, m;
int p[15];
 
signed main()
{
    ios;
    cin >> n >> m;
    vector<int> s[15];
    rep(i, 0, m)
    {
        int x, xx; cin >> x;
        rep(j, 0, x)
            cin >> xx, s[i].pb(xx);
    }
    
    rep(i, 0, m)
        cin >> p[i];
    
    int res = 0;
    for(int k = 0; k < (1 << n); k ++)
    {
        bool ok = 1;
        rep(i, 0, m)
        {
            int cnt = 0;
            for(auto x : s[i])
            {
                if(k & (1 << (x - 1)))
                    cnt ++;
            }
            if(cnt % 2 != p[i])
            {
                ok = false;
                break;
            }
        }
        if(ok)
            res ++;
    }
 
    cout << res << endl;
}

D equeue(暴力 贪心)

Description:

​ 给出长度为n的序列 可以在头部或者尾部进行k次四种操作

​ 1 从头部拿出一个 2 把从头部拿的任意一个放回去

​ 3 从尾部拿出一个 4 把从尾部拿的任意一个放回去

Solution:

​ N = 50,k = 100 于是优先考虑暴力的模拟

​ 枚举一下从头部拿1到x个 自然从尾部只能1到k-x个

​ 如果是负数就放回 记录答案取最大值

​ 这样做的时间复杂度为O(100^3*lg100) 可行

Code:

int n, k;
vector<int> b;
 
signed main()
{
    ios;
    cin >> n >> k;
    vector<int> a(n);
    rep(i, 0, n)
        cin >> a[i];
    
    int res = 0;
    for(int i = 0; i <= min(n, k); i ++)
    {
        for(int j = 0; j <= min(n, k); j ++)
        {
            if(i + j > min(n, k))
                break;
            b.clear();
            for(int l = 0; l < i; l ++)
                b.pb(a[l]);
            for(int l = 0; l < j; l ++)
                b.pb(a[n - 1 - l]);
            
            sort(b.begin(), b.end());
            int tot = 0;
            for(auto x : b)
                tot += x;
            res = max(res, tot);
            
            int cnt = k - i - j, idx = 0;
            while(cnt -- && idx < b.size())
            {
                if(b[idx] < 0)
                    tot -= b[idx ++];
                else break;
            }
            res = max(res, tot);
        }
    }
    cout << res << '\n';
}

E Roadwork(STL + 二分)

Description:

​ 有n个在时间[l, r]内生效的路障位于x_i 请问一个人在0坐标d时刻出发 输出每个人最长的行走距离

Solution:

​ 如果枚举人 那就是N*Q 必超时 我们可以将问题转化一下

​ 我们不考虑人, 我们来考虑障碍物可以挡住哪些人

​ 障碍物按坐标小到大排序 并将生效时间-坐标位置,就等价于0坐标时候障碍物出现的时间

​ 将人插入set 然后枚举障碍物的 [l, r] 进行二分,每次将落在区间内的人答案记录并删去

​ 每个人只会被删去一次 复杂度是O(nlgQ + QlgQ + Q)

Code:

const int N = 200005;
int n, m;
struct node {
    int s, t, x;
    bool operator < (const node &a) const {
        return x < a.x;
    }
}p[N];
int res[N], a[N];
map<int, int> pos;

signed main()
{
    memset(res, -1, sizeof res);
    scanf("%d%d", &n, &m);
    rep(i, 1, n + 1)
    {
        scanf("%d%d%d", &p[i].s, &p[i].t, &p[i].x);
        p[i].s -= p[i].x;
        p[i].t -= p[i].x;
        p[i].s = max(p[i].s, 0);
        p[i].t = max(p[i].t, 0);
    }
    sort(p + 1, p + n + 1);
    rep(i, 1, m + 1)
        scanf("%d", &a[i]), pos[a[i]] = i;
    
    set<int> s;
    rep(i, 1, m + 1)    s.insert(a[i]);  

    rep(i, 1, n + 1)
    {
        auto l = s.lower_bound(p[i].s);
        auto r = s.lower_bound(p[i].t);
        vector<int> q;
        for(auto j = l; j != r; j ++)
        {
            res[pos[*j]] = p[i].x;
            q.pb(*j);
        }
        for(auto j : q) s.erase(j);
    }
    rep(i, 1, m + 1)
        printf("%d\n", res[i]);
}
AtCoder初学者比赛:编程学习 ABC比赛为初学者提供了一个良好的平台,让他们在编程竞赛中获得实践经验,并提高他们的编程技能。在编程领域,AtCoder Beginner Contest(ABC)是一个非常受欢迎的比赛,旨在帮助初学者提高他们的编程能力。在这篇文章中,我们将介绍ABC比赛的一些基本概念,并提供一些示例代码来帮助您更好地理解。让我们来看一个简单的示例,来帮助您了解ABC比赛的工作原理。希望本文能帮助您了解AtCoder初学者比赛(ABC)的基本概念,并为您的编程学习之旅提供一些指导。给定两个整数A和B,计算它们的和。 阅读详情

相关推荐

C#连接数据库报Authentication to host ‘127.0.0.1‘ for user ‘root‘ using method ‘caching_sha2_password‘ fail

所以导致的,除了上边的办法,还可以把这个加密规则修改一下,这个的修改方式有很多,具体原因是因为MySQL8.0以前的加密规则是。

weixin_42209881的博客 4128

atcoder位运算&结论+公式推导

D-位运算&结论+公式推导 链接 结论: x+y=2( x x+y=2(~x~x+y=2( x & y )+ ( x ~y~)+~(~x~ y )+ ( x ^ y ) ~y~)~ y )  ( x (~x~( x & y 

honeistbutter的博客 725

基于MediaPipe的智能俯卧撑计数与姿势矫正系统

在现代健身和体能训练中,俯卧撑是最基础也是最有效的自重训练动作之一。然而,许多人在进行俯卧撑训练时常常存在姿势不正确、计数不准确等问题。本文将介绍如何利用计算机视觉和姿态估计技术,开发一个智能的俯卧撑计数与姿势矫正系统。

qq_36224726的博客 916

AtCoder Beginner Contest 171 E - Red Scarf (位运算+思维)

链接 E - Red Scarf 题意 : 给一个长度为 偶数的序列,序列中的每个元素是原序列中 除去当前位置元素的异或和,求原序列。 思路: 根据异或的性质,一个数异或奇数次为本身,异或偶数次为0. 2.假设原序列为 a,给出的序列为 b,要求 a1的话,只要把 b序列中 b2-bn 全部异或起来,那么就刚好 a1 异或了 n-1次(奇数次),其他为异或了 n-2次(偶数次),那么这个值就是我们要求的 a1了。代码用一个前缀,后缀就好了。 代码 #include<iostream> #

hddddh的博客 422

基于本地知识库的智能问答系统架构

智能问答系统的核心可以分为4部分。1)知识库构建。2)检索。3)后处理。4)推理。知识库构建:知识库中可以包含多个向量数据库和知识图谱等,核心是怎么建立索引,使得检索时能够将与问题相关的知识给检索出来。检索:从知识库中的多个库或者知识图谱中检索出与问题相关的信息。后处理:从知识库中检索出来的信息可能是冗余的,而且可能不符合我们希望的格式要求,因此,我们需要对这些数据进行过滤,格式化等操作。推理: 基于检索出来的知识进行推理,让输出能够回答用户的问题,目前主要使用大模型进行推理。

qq_44993593的博客 1709

555时基芯片的5种经典电路设计:从方波发生器到PWM调光实战

本文深入解析了555时基芯片的5种经典电路设计,从基础的无稳态方波发生器、单稳态触发器,到实用的占空比可调PWM信号源,并重点介绍了如何引入TVS保护电路增强系统鲁棒性。最后通过一个带保护的PWM LED调光台灯实战项目,综合展示了信号生成、功率驱动与电路保护的核心技术,是电子爱好者掌握模拟电路设计与应用的绝佳指南。

weixin_29207439的博客 490

atcoder-D - Xor Sum 4(位运算+组合数学思想)

思路:统计二进制上每一位上1出现的次数。然后异或,考虑每一位上0和1的组合次数,乘上这位的数值。 int a[65]; int main() { //freopen("in.txt", "r", stdin); int n; ll x; while (cin >> n) { f(i, 1, n) { scanf("%lld", &x); f(j, 0, 60) { if (x >> j & 1)a[j]++; }

qq_43543086的博客 342

go实现MQTT broker(附完整源码)

go实现MQTT broker(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 575

AtcoderABC256场

操作包括:在Square 0上放置一个棋子,将每个方格上的棋子向前移动Ai个方格,并根据条件移除目标方格不存在的棋子并将被移除的棋子数量添加到P中。在每次操作中,根据当前棋子所在的方格,更新下一个操作中棋子所在方格的状态。具体地,对于当前棋子所在的每个方格,如果棋子存在于该方格上,根据该方格上的数字确定下一个操作中棋子所在方格的状态。否则,将下一个操作中棋子所在方格的状态设置为1。由于每个方格可以包含1到N之间的整数,我们实际上可以将方格中的整数分配为1到N,并检查网格是否满足条件。使用9重循环来实现。

m0_73618658的博客 502

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

前程算法屋的博客 625

(ICLR 2025)【源码讲解+复现】TIMER-XL: Long-Context Transformers for Unified Time Series Forecasting

本文提出了一种统一的多变量时序预测模型Timer-XL,其核心创新包括:1)采用自回归解码器架构,将多变量时序预测统一为next-token预测问题;2)设计TimeAttention机制,通过相对位置编码和因果掩码捕获时序位置和变量间交互;3)支持长上下文预训练以提升零样本迁移能力。模型架构包含嵌入层、时间感知注意力块和预测头,采用MSE损失进行端到端训练。实验表明该方法在多种时序任务上表现优异,特别是在长跨度预测和少样本场景下。代码实现提供了完整的模型定义、数据加载和训练流程,支持自定义配置参数。

1146

atcoder abc128c

题意:有n个开关和m个灯泡,每个灯泡关联k个开关,当灯泡关联的开关开着的数量取余2等于p时,灯泡亮起,现在问你有多少种方式让灯泡全亮。 思路:利用二进制,直接模拟所有状态即可。 代码: #include<bits/stdc++.h> #define ULL unsigned long long #define LL long long #define Max 15 #define me...

Gee_Zer的博客 508

优化翼型形状的遗传算法实现

在每一代种群中,通过计算每个个体的适应度值,选择具有较高适应度值的个体,并使用交叉和变异算子对它们进行操作,从而生成新的个体。具体而言,我们将采用一个参数化的翼型模型,其中包括几何设计变量,如角度、弯曲和厚度等,以及性能指标,如升阻比和扭矩等。总之,本文提供了一个基于遗传算法的优化方法,用于寻找最优的翼型形状,并提供MATLAB源代码。需要注意的是,上述代码中的objFunc函数是一个示例性质的目标函数,实际应用中需要根据具体的问题进行修改。1.初始化一个随机的种群,其中每个个体代表一个参数化的翼型模型。

与其临渊羡鱼,不如退而结网 517

AtCoder ABC 128D equeue

题目链接:https://atcoder.jp/contests/abc128/tasks/abc128_d 题目大意   有一个双端队列,里面有 N 个整数,你可以进行如下4种操作: A:从队头那一个到手里。 B:从队尾拿一个到手里。 C:把手中任意一个数放到队头(这个操作等价于扔掉,我们完全可以执行完全部的AB,在执行CD)。 D:把手中任意一个数放到队尾。  ...

weixin_30594001的博客 404

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

abc238 C(偷偷用__int128做题是吧)

题目 题意: 求Sigma f(i) , f(x): <=x且和x位数相同的数的个数。 n = 1e18 思路: 猜! 1-9 10-99 100-999 都是从1开始,等差数列求和就完了。 当时用了一个笨方法,都爆ll了,改用__int128偷偷过了。 实际上是取模没有加括号,导致爆了,学废了。 时间复杂度: O(logn) 代码: // Problem: C - digitnum // Contest: AtCoder - Monoxer Programming Contest 2022(AtCo

xianqiuyigedao的博客 303

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Atcoder abc128 D

Problem Statement Your friend gave you a dequeue D as a birthday present.D is a horizontal cylinder that contains a row of N jewels. The values of the jewels are V1,V2,…,VN from left to right. There m...

Gee_Zer的博客 602

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

AtCoderBeginnerContest128 DEF

AtCoder Beginner Contest 128 DEF https://atcoder.jp/contests/abc128 D题 题意: v数组长度是n,代表有n个珠宝,可以进行k次操作; 每次操作,可以选择 1 从左边拿一个到手里 2 或者从右边拿一个手里 3 或者从手里放回一个到左边 4 或者从手里放回一个到右边 问最后手里所拥有珠宝价值总和最大 思路: 还以为是什么复杂的dp,但其实暴力就可以。 按照贡献来想 两重暴力循环,从左边拿几个,从右边拿几个,如果k次操作有剩,则将手里小于0的

weixin_44745441的博客 396

AtCoder Beginner Contest 406(ABCDEF)

先用ups,downs数组分别预处理存储局部最大值和局部最小值的下标,再使用滑动窗口的思想,当 i 遍历到满足条件2的点时,通过ups和downs得到满足条件3,4的最小下标 l 和最大下标r ,那么以i点为基础得到的蝶形数组数量为r-l+1。当删除某一行,使用cnt_y[y]对其内部记录,cnt_y[y]表达y列已被删除的垃圾数量,那么在求y列还有几个垃圾时,即为columns[y].size()-cnt_y[y]。在第 i 次运算中(1≤i≤N),他将当前显示的数字乘以一个正整数 A i。

qq_68286180的博客 813

Atcoder Beginner Contest 406

ABC406

djhws144的博客 1249

AtCoder Weekday Consest 赛情分析及题解 | 汇总(更新至 AWC 0129 Beta)

我把自己练习过的AtCoder AWC题目都整理了一下。虽然网站上有许多高手的解法,但因为我自己也是初学者,所以只用了比较容易理解的方法来分析和解答。如果你也在学习的话,希望这些内容能对你有一点帮助。

团爸讲算法 1048

AtCoder Beginner Contest 233 题解(A-Ex)

A、B 略。 ABC233C - Product 实际上就是一个简单 dp,但是 数组上范围比较大,需要用 map 维护下标以及转移点。 答案爆 long long,需使用 __int128。 using i128 = __int128; vector<map<i128, i128>> mp; int main() { i128 n, X; read(n, X); mp.resize(n + 1); mp[0][1] = 1; FOR(i, 1,

YangTY的博客 1047

atcoder abc 128 A-D

atdcoer

qq_74059564的博客 368

AtCoder 神题汇总

记录平时打 AtCoder 比赛时遇到的一些神题。 ABC128F Frog Jump Analysis Tenka1 Programmer Contest 2019 D Three Colors 题目大意 有 $n$ 个正整数 $a_1, a_2,\dots, a_n$($3\le n\le 300$,$1\le a_i \le 300$)。现在要把每个数涂成红,绿,蓝,三种颜色之一。将同色的数...

weixin_30425949的博客 393

AtCoder Beginner Contest 275「A」「B」「C 判正方形」「D 记忆化」「E 概率dp」「F 状态机dp」

AtCoder Beginner Contest 275「A」「B」「C 判正方形」「D 记忆化」「E 概率dp」「F 状态机dp」

Suryxin's blogs 559
上一篇: AtCoder ABC 127(C ~ E)
下一篇: AtCoder ABC 131
a simple_boy
博客等级 码龄5年 1粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值