Codeforces Round 1006 (Div. 3)(部分题解)

NHANES数据库实战:数据合并与加权分析技巧 本文详细解析了NHANES数据库实战中的核心技巧,重点阐述了数据合并与加权分析的正确方法。通过两个具体案例,手把手指导如何从数据下载、合并、权重计算到使用R语言survey包进行加权统计分析,避免因忽略复杂抽样设计而导致的研究偏倚,确保分析结果的准确性与可发表性。 阅读详情

A. New World, New Me, New Array

思路:这题挺简单的,在对k取绝对值后会更简单一点。

然后注意上取整。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'

void solve()
{
    int n, k, p;
    cin >> n >> k >> p;
    k = abs(k);
    if (n*p < k) cout << -1 << endl;
    else {
        cout << (k+p-1)/p << endl;
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int t = 1;
    cin >> t;
    while (t--)
    {
        solve();
    }
    
    return 0;
}

B. Having Been a Treasurer in the Past, I Help Goblins Deceive

思路:统计‘-’和‘_’的数量,‘-’会分在‘_’的两边,保证左右乘积最大,即尽可能平均分配。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'

void solve()
{
    int n;
    string s;
    cin >> n;
    cin >> s;
    int n1 = count(s.begin(), s.end(), '-');
    int n2 = n-n1;
    if (n1 < 2 || n2 < 1) cout << 0 << endl;
    else {
        int cnt = n1/2;
        cout << cnt*(n1-cnt)*n2 << endl;
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int t = 1;
    cin >> t;
    while (t--)
    {
        solve();
    }
    
    return 0;
}

C. Creating Keys for StORages Has Become My Main Skill

思路:我看了半天才看懂MEX(S)的意思,这里补充介绍一下,就是它的值为0到后第一个没在S集合里面的值,因此它的最大值不会超过n-1,所以我们要让它最大,就要从0开始枚举。这里代码(i&x)==i表示i的二进制数都包含在x中,一旦枚举到不满足,MEX值定了,所以我们可以为任何(i&x)==i的i值,显然0必定符合且简单,所以不满足就输出0,当枚举到最后一个数时,我们还要考虑前面所有的OR是否等于x,这里我们考虑到如果加上次i=n-1满足也可以输出该i,不满足我们就要输出一个能让其满足的数,即(num^x)可以帮缺少的二进制1都补上。(二进制)

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'

void solve()
{
    int n, x;
    cin >> n >> x;
    int num = 0;
    for (int i = 0; i<n; i++){
        if (i == n-1){
            if ((i|num) == x){
                cout << i << endl;
            }
            else cout << (num^x) << endl;
            return ;
        }
        if ((i&x)==i){
            cout << i << " ";
            num |= i;
        }
        else{
            cout << 0 << " ";
        }
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int t = 1;
    cin >> t;
    while (t--)
    {
        solve();
    }
    
    return 0;
}

D. For Wizards, the Exam Is Easy, but I Couldn't Handle It

思路:这道题由于n的范围比较小,可以直接暴力做出来,对于一个位置,往后枚举比较。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'

void solve()
{
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i<n; i++) cin >> a[i];
    int sum = 0;
    for (int i = 0; i<n; i++){
        for (int j = i+1; j<n; j++){
            sum += (a[i] > a[j]?1:0);
        }
    }
    int l = 0, r = 0;
    int ans = sum;
    for (int i = 0; i<n; i++){
        int cur = sum;
        for (int j = i+1; j<n; j++){
            cur -= (a[i] > a[j]?1:0);
            cur += (a[i] < a[j]?1:0);
            if (cur < ans){
                ans = cur;
                l = i;
                r = j;
            }
        }
    }
    cout << l+1 << " " << r+1 << endl;
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int t = 1;
    cin >> t;
    while (t--)
    {
        solve();
    }
    
    return 0;
}

E. Do You Love Your Hero and His Two-Hit Multi-Target Attacks?

思路:首先看到有公式之类要想着化简或者转化,这里对公式化简为

\left | x_a-x_b \right |\left | y_a-y_b \right |=0

所以只要x轴相等或者y轴相等就可以为一对,我们可以指定一个轴,然后来满足此条件。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'

void solve()
{
    int k;
    cin >> k;
    vector<array<int, 2>> ans;
    int x = 0, y = 0;
    while (k){
        x++;
        int s = 1;
        while (s*(s+1)/2 <= k) s++;
        k -= s*(s-1)/2;
        for (int i = 1; i<=s; i++){
            y++;
            ans.push_back({x, y});
        }
    }
    cout << ans.size() << endl;
    for (auto [x, y]:ans){
        cout << x << " " << y << endl;
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int t = 1;
    cin >> t;
    while (t--)
    {
        solve();
    }
    
    return 0;
}

F. Goodbye, Banker Life

思路:B站的一些视频说这种类型的三角形是组合数,因此他们把此题当作了组合数,并用Lucas定理来做,这里简单地说一下为什么和组合数相似。

列出组合数的三角形:

它受影响的方式和该题的差不多,只是当1<j<i时,组合数是加(也就是我们常说的杨辉三角),而该题是异或,之后就只需要判断奇偶性来判断,而Lucas定理就是用来计算大数情况下组合数模素数的结果,这里我们将该素数设为2就可以来判断奇偶性。

AC代码:

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

ll n, m, mod;
ll fact[100001], inv[100001];
ll qpow(ll a, ll b){
    ll res = 1;
    while (b){
        if (b & 1) res = res * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return res;
}
ll C(ll n, ll m){
    if (n > m) return 0;
    return fact[m]*inv[n]%mod*inv[m-n]%mod;
}
ll Lucas(ll n, ll m){
    if (n == 0) return 1;
    return Lucas(n/mod, m/mod) * C(n%mod, m%mod) %mod;
}
void init(ll mod){
    fact[0] = 1;
    for (int i = 1; i<=mod; i++){
        fact[i] = fact[i-1] * i % mod;
    }
    inv[mod-1] = qpow(fact[mod-1], mod-2);
    for (int i = mod-2; i>=0; i--){
        inv[i] = inv[i+1] * (i+1) % mod;
    }
}
void solve()
{
    int n, k;
    cin >> n >> k;
    for (int i = 0; i<n; i++){
        cout << Lucas(i, n-1)*k << " \n"[i==n-1];
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    mod = 2;
    init(mod);
    int t = 1;
    cin >> t;
    while (t--)
    {
        solve();
    }
    
    return 0;
}

榜单上大佬们的代码比较简单,是有一个结论,判断C_{i}^{j}是奇数,当且仅当(i&j)==j(i的二进制位完全包含j的二进制位,可以用Lucas定理推导)。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'

void solve()
{
    int n, k;
    cin >> n >> k;
    for (int i = 0; i<n; i++){
        cout << (((n-1)&i) == i ? k : 0) << " \n"[i==n-1];
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int t = 1;
    cin >> t;
    while (t--)
    {
        solve();
    }
    
    return 0;
}

WorkBuddy 实战:从聊天窗口到 AI 工作台,打造个人自动化助理 大模型时代,对话式 AI 常被当作高级搜索框,难以沉淀为生产力。其根源在于上下文断裂——每次对话都从零开始。AI Agent 的核心原理是通过状态保持、工具调用与流程复用,将临时交互固化为可重复的协作机制。WorkBuddy 作为个人 AI 工作台,以 Agent + Skill + 工作流架构解决该问题:Skill 封装操作手册,工作区沉淀知识上下文,自定义指令约束输出风格。这种设计让周报生成、会议纪要、文档初稿、专利检索辅助等重复劳动实现流程化自动产出。掌握 WorkBuddy 怎么用,关键在于从自己重 阅读详情

相关推荐

实战指南:如何用Frida绕过某梆加固的Anti-Frida检测(附完整脚本)

本文深入剖析了企业级加固方案中的Anti-Frida检测机制,并提供了实战对抗策略。通过分析基于文件系统、内存特征、行为及环境的多层次检测原理,文章详细介绍了如何定位检测逻辑、绕过maps文件扫描、对抗内存与行为特征检测,并附上了针对某梆加固的完整绕过脚本与系统化工程方案。

weixin_42527589的博客 600

Codeforces Round 1006 (Div. 3)

【代码】Codeforces Round 1006 (Div. 3)

2301_80025089的博客 808

Unity海康视屏对接

通过对接海康SDK,获取视屏流回调。经过解码得到YUV格式的图片,最后通过Shader把YUV数据显示出来。也可以通过Rtsp协议,直接获取视屏流显示。这个貌似Unity中已经有插件支持了,UMP。------2018.4.20using UnityEngine;using System.Collections;using System;using UnityEngine.UI;using Sys...

Witness_K的博客 2028

Turtle Puzzle: Rearrange and Negate(Round 929)

【代码】Turtle Puzzle: Rearrange and Negate(Round 929)

GordrnGhost的博客 878

Weaxor勒索病毒实战分析:从加密算法到防御策略(附检测工具清单)

本文对Weaxor勒索病毒进行了深度实战剖析,详细拆解了其采用ChaCha20与AES-CTR的混合加密算法、横向移动手法及数据回传行为。文章重点分析了其密钥生成机制的“漏洞修复”,并提供了从主机加固、网络监控到基于IOC威胁狩猎的立体化企业级防御策略与检测工具清单。

weixin_29233333的博客 262

手把手教你理解瑞萨RH850芯片的HSM:从硬件隔离到软件中断通信

本文深入解析瑞萨RH850芯片的HSM架构,从硬件隔离到软件中断通信的完整实现。通过详细讲解HSM的硬件组件、启动流程、核间通信机制及安全服务实现,帮助开发者掌握芯片级安全技术,提升汽车电子和工业控制领域的安全防护能力。

weixin_33925615的博客 379

Codeforces Round 1006 (Div. 3)A-F题解

我们可以贪心想想,我们能否只让他们横着共线,然后再想想,2,3,4,5个坐标共线的时候,共线坐标对数分别为1,3,6,10.我们会发现这个其实就是组合数,然后这个数组就是n * (n-1) / 2,由于有1的存在,那么我们肯定能够用这个数组里的数字拼凑成k.给你一个三角形,第i行有i个数字,第一行第一个数为x,第i行第一个数等于上一行第一个数,第i行最后一个数就等于上一行最后一个数,然后第i行第j个数就是。其实看到要求mex最大就应该有思路了,直接从0开始按顺序来,最后记得加上x就好,这就是贪心的想法。

W_Sherlock_Henry的博客 882

Ansys -PEmag 平面变压器仿真与circuit电路模型验证

ansys 软件集成了电路、磁路、PCB参数提取,结构参数提取等功能仿真,基于内置模块的功能参数的仿真后可以提取出主要关键参数,寄生参数,频域响应参数等。该软件的优势在于能够将所有的仿真参数导出为电路模型文件,可以在自带的模块中仿真也可以导出在其他第三方软件中仿真,比如matlab-simulink文件扥。主要介绍ANSYS插件的使用,对PEmag做了详细使用说明并通过案例得到对用的变压器参数;基于变压器参数再将其磁路模型导入到电路中进行建模仿真,实现PEmag与circuit的联合仿真。

weixin_41609745的博客 3016

Codeforces Round 1006 (Div. 3) A-G 题解

Codeforces Round 1006 (Div. 3) A ~ F 题解 附c++代码

2301_81346065的博客 1917

XYC Q8开源掌机刷第三方系统教程

分区结束后直接将各种游戏文件放入OD分区的Roms文件夹下

m0_60352504的博客 4569

YOLOv11改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、恶劣天气等问题

在一些特定情况下,目标检测任务由于多种因素的影响,变得更加复杂和困难。以下是几类常见的困难目标检测场景:1. 小目标检测定义:小目标检测是指当目标在图像中的占比非常小时,模型需要准确识别和定位这些目标。典型场景包括远程监控、卫星图像分析等。挑战1. 低分辨率:由于目标在图像中占据像素较少,细节缺失,特征提取难度增加。2. 特征不足:小目标缺乏明显的形状和纹理特征,容易被复杂背景淹没。3. 检测难度大:由于小目标与背景之间的对比度较低,误检的几率上升。4. 数据不平衡。

qq_64693987的博客 4万+

Codeforces-1006-C(水)

Codeforces 1006C - Three Parts of the Array 原题地址 [http://codeforces.com/contest/1006/problem/C] 题意 给一个数组 a[i] ,当从0项开始的一段数列之和等于从最后一项结束的一段数列之和时,输出这个和的最大值。 题解 把问题化成求sum1 - sum3 = 0时的sum1最大的情况,创建sum1,sum2...

terry的博客 320

第一章 千牛实时获取消息之ws服务端搭建

以上就是今天要讲的内容,本文仅仅简单介绍了ws服务端的搭建,后面将介绍ws客户端的搭建和配合ws服务器的测试。

不想说话的树专栏 1828

Codeforces Round 1006

Codeforces Round 1006

青少年趣味编程 1595

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Codeforces Round 1006 (Div. 3)补题

如果数组可以存在该数,则加入数组;暴力枚举,取循环左移后逆序最小的两端。如果原数组是单调上升的,输出。打表找规律,可以用递归做。还有一种方法是杨辉三角,如果是奇数则为。进制数反转,再将反转的数转换成十进制,加入答案。否则每次加/减最大值,使操作数最小化。易知当两个点的横坐标相同时,满足条件。,然后在新的一列中添加纵坐标不相同的。个数,则判断最后一个数可不可以放。位,所以要计算的答案如下所示。,如果不可以或者数组没有达到。个数,则剩下的数全部填充。,则不存在数满足条件。

2301_80198205的博客 960

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Codeforces Round 1006 Div3 A-E

夏目章人(Natsume Akito)刚刚在一个新世界苏醒,便立即收到了他的第一个任务!系统为他提供了一个包含 n 个零的数组 a,以及两个整数 k 和 p。在每次操作中,章人需要选择两个整数 i 和 x(满足 1≤i≤n 且 −p≤x≤p),然后执行赋值操作 ai​=x。章人仍未完全适应如何控制他的新身体,因此请你帮他计算使数组所有元素之和等于 k 所需的最少操作次数,或者告诉他这是不可能的。

AuRoRamth的博客 1093

Codeforces Round 1006 A - F题解

题目来源:https://codeforces.com/contest/2072。

Nqg11的博客 954

Codeforces Round 971

Codeforces Round 971

青少年趣味编程 1514

Codeforces Round #498 (Div. 3) problem1006

Codeforces Round #498 (Div. 3) problem 1006 problem 1006 刷题随笔 Codeforces Round #498 (Div. 3) problem 1006 A. Adjacent Replacements B. Polycarp’s Practice C. Three Parts of the Array D. Two Stri...

codeJxwww's blog 498

Codeforces Round #498 (Div. 3)(A,B,C,D,E,F)题解

题目链接:http://codeforces.com/contest/1006 A题题意:给n个数,然后经过一系列操作,操作是依次将所有2*i-1换为2*i,然后再将2*i换为2*i-1。问最后的数组。 A题题解:其实就是把所有的偶数-1即可。 AC代码: #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;algo...

sortmin的博客 337

Codeforces Round #498 (Div. 3) 简要题解

[比赛链接] https://codeforces.com/contest/1006 [题解] Problem A. Adjacent Replacements [算法] 将序列中的所有偶数替换为奇数即可 时间复杂度 : O(N) [代码] ...

172

codeforces 1006 div3(A-F),洛谷线段树

题解:对于长度为n的数组,选择[l,r],将a[l]移到a[r]后面 ,要让逆序对数目尽可能少,观察可发现,如果移动后a[l]>a[r],显然逆序对数目会变多,而若a[l]<a[r],逆序对数目会减少,所以只要逆序对减少的越多越好,同时不断更新左右边界即可。题解:要重排字符串,找出满足哥布林脸的最大个数,显然‘-’要放两边,‘_'要放中间,因此先找到分别的对数,再乘上其余未配对的个数。//此时画图可以看出,当点都在一条线上时,对k的贡献最大,此时为(n*(n-1))/2;题解:由lucas定理可推出。

m0_68480741的博客 346

寒假训练第二天-Codeforces Round #498 (Div. 3)

寒假训练第二天-Codeforces Round #498 (Div. 3) 前言:昏昏沉沉的一天,最近外婆生病,每天上午都在陪外婆输液,每到冬天感觉家里的老人都衰老了好多,希望外婆病赶快好身体健健康康的 题目链接-https://codeforces.com/contest/1006 A-Adjacent Replacements 题意:给你一个序列,然后用i代替序列中的i - 1,再用i - 1代替数列中的i(i为偶数) 题解:奇数i - 1被偶数i代替之后又被奇数i - 1代替成偶数,偶数被奇数i -

Siyue1999的博客 273

卢卡斯定理判断组合数奇偶(Codeforces Round 1006 (Div. 3)——F)

为什么提到“奇偶”“对2取摸”“杨辉三角”“卢卡斯定理”?​ 根据三角形定义,易知:此三角形正是杨辉三角对2取模

2301_81692739的博客 1056

Codeforces Round 1001-1030

本文汇总了Codeforces平台上Round 1001至1076的多场比赛资源链接,涉及算法竞赛题解与学习资料。同时涵盖信息学奥赛(NOI/CSP)备赛指南,包括省选题单、数学专项训练、数据结构精要及微积分入门推荐。还整理了2025年数学前沿研究、中小学至大学数学/物理/英语学习资源,以及在线评测系统(OJ)和竞赛真题来源,为编程竞赛与学术研究提供全面参考。

青少年趣味编程 54
上一篇: PTA习题(C语言)
下一篇: Educational Codeforces Round 175(部分题解)
wirepuller_king
博客等级 码龄3年 9292粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wirepuller_king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值