Codeforces Round #740 (Div. 2)

黑金ZYNQ7010开发板开箱实测:从接线到串口通信的保姆级指南 本文提供黑金ZYNQ7010开发板从开箱到串口通信的完整实操指南。详细介绍了硬件连接、驱动安装、启动模式设置及串口终端配置等关键步骤,并针对常见问题提供排查思路,帮助FPGA开发者快速上手ZYNQ平台,建立稳定的调试通道。 阅读详情

A Simply Strange Sort

题目大意

给定一个长度为n的数组,对根据操作次数数组进行两种操作

  • 操作次数为奇数则,枚举i为1, 3, 5…n - 2,如果a[i] > a[i + 1]交换i和i+1
  • 操作次数为奇数则,枚举i为2, 3, 6…n - 1,如果a[i] > a[i + 1]交换i和i+1
主要思路

根据题意模拟即可,最坏情况数组为n, n - 1, … 1,复杂度为n^2

AC代码
#include <bits/stdc++.h>

#define int long long
using namespace std;
#define debug(a) cout << #a << " = " << a << endl;
#define x first
#define y second
typedef long long ll;
const int N = 200010, mod = 998244353;
int n, m;
int a[N], b[N];
int st[N];

signed main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int T;
    cin >> T;
    while(T--)
    {
        cin >> n;
        for(int i = 1; i <= n; i++) cin >> a[i];
        int res = 0;
        while(!is_sorted(a + 1, a + n + 1))
        {
            res++;
            if(res % 2)
            {
                for(int i = 1; i <= n - 2; i += 2)
                {
                    if(a[i] > a[i + 1]) swap(a[i], a[i + 1]);
                }
            }
            else
            {
                for(int i = 2; i <= n - 1; i += 2)
                {
                    if(a[i] > a[i + 1]) swap(a[i], a[i + 1]);
                }
            }
        }
        cout << res << endl;
    }
    return 0;
}

B Charmed by the Game

题目大意

A和B轮流发球,未规定谁先发球,A发球若B接到则B得分,否则A得分,接发球的人接到一球为则记为1次接到发球,给定两人的最终比分,问两人接到发球的总次数的可能是哪些

主要思路

两人发球的最少次数是(a + b) / 2,所以两人接到发球的次数最小值为t = (a + b) / 2 - min(a, b),如果比这个值更小那么一定不会以a和b的比分结束比赛,因为两人轮流发球,一人发一次。

接下来考虑最大值,与最小值相同将接到发球和未接到发球反转即可,最大值为a + b - t,a+b为总发球次数

  • 当a+b为偶数时,假设当前比分情况已经确定,我们修改一个人的未接到发球改为接到发球,那么另一个人也许这样修改,那么对答案的修改值就是2
  • 当a+b为偶数时,假设当前比分情况已经确定,我们修改一个人的未接到发球改为接到发球,那么我们只要修改第一个发球人的顺序即可对答案修改值为1
AC代码
#include <bits/stdc++.h>

#define int long long
using namespace std;
#define debug(a) cout << #a << " = " << a << endl;
#define x first
#define y second
typedef long long ll;
const int N = 200010, mod = 998244353;
int n, m;

signed main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int T;
    cin >> T;
    while(T--)
    {
        int a, b;
        cin >> a >> b;
        int sum = (a + b) / 2;
        int t = sum - min(a, b);
        
        vector<int> res;
        if((a + b) % 2)
        {
            for(int i = t; i <= a + b - t; i++)
            {
                res.push_back(i);
            }
        }
        else
        {
            for(int i = t; i <= a + b - t; i += 2)
            {
                res.push_back(i);
            }
        }
        cout << res.size() << endl;
        for(auto i : res)
        {
            cout << i << ' ';
        }
        cout << endl;
    }
    return 0;
}

C Deep Down Below

题目大意

给定n组怪兽,英雄的值必须大于怪兽才能将其击杀,并且英雄的值+1,必须击杀每一组的所有怪兽才能击杀下一组,问英雄的最小值

主要思路

我们预处理出每一组需要的最小值以及击杀一组后的最小值,对所有区间排序,然后遍历所有组求英雄的最小值(具体看代码)

AC代码
#include <bits/stdc++.h>

#define int long long
using namespace std;
#define x first
#define y second
typedef long long ll;
const int N = 200010, mod = 1e9+7;
int n, a[N];
pair<int, int> p[N];

signed main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int T;
    cin >> T;
    while(T--)
    {
        cin >> n;
        for(int i = 0; i < n; i++)
        {
            int t;
            cin >> t;
            int maxa = 0;
            for(int j = 0; j < t; j++)
            {
                cin >> a[j];
                maxa = max(maxa, a[j] - j + 1);
            }
            p[i] = {maxa, maxa + t};
            //cout << p[i].x << ' ' << p[i].y << endl;
        }
        
        sort(p, p + n);
        
        int ans = p[0].x;
        int l = p[0].x, r = p[0].y;
        for(int i = 1; i < n; i++)
        {
            if(p[i].x <= r)
            {
                r += p[i].y - p[i].x;//如果能满足这一组,那么有区间加上下一组的增加的值
            }
            else
            {
                l += p[i].x - r;//如果不能满足这一组,那么左区间就要加上中间的差值来满足能击杀这一组
                r = p[i].y;
            }
        }
        cout << l << endl;
    }
    return 0;
}

D1 Up the Strip (simplified version)

题目大意

当前在n点,每次你能跳跃到1~n - 1或者到n/i (2 <= i <= x),问到1号点有多少种方案

主要思路

dp+整除分块

dp[i]表示1到 i 的方案数

  • 首先1~x的任意一个区间都能到x,那么dp[i]首先要加上 ∑ j = 1 i − 1 d p [ j ] \sum_{j=1}^{i-1}{dp[j]} ∑j=1i−1​dp[j],可以通过前缀和维护
  • 其次考虑整除,我们发现 n i \frac{n}{i} in​的值在一定区间都是相同的,每一个值相同的块的最后一个数为n/(n / i),具体整除分块可见:整除分块,于是用整除分块处理每一个数即可, 整除分块复杂度为根号n

于是dp[i] = ∑ j = 1 i − 1 d p [ j ] + ∑ d p [ i l ] \sum_{j=1}^{i-1}{dp[j]} + \sum_{}^{}{dp[\frac{i}{l}]} ∑j=1i−1​dp[j]+∑​dp[li​]

AC代码
#include <bits/stdc++.h>

#define int long long
using namespace std;
#define debug(a) cout << #a << " = " << a << endl;
#define x first
#define y second
typedef long long ll;
const int N = 200010;
int n, m;
int dp[N], sum[N];//sum维护前缀和

signed main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int T;
    T = 1;
    while(T--)
    {
        cin >> n >> m;
        dp[1] = sum[1] = 1;
        for(int i = 2; i <= n; i++)
        {
            dp[i] = sum[i - 1];
            for(int l = 2, r; l <= i; l = r + 1)
            {
                r = i / (i / l);
                dp[i] = (dp[i] + (r - l + 1) * dp[i / l]) % m;
            }
            sum[i] = (sum[i - 1] + dp[i]) % m;
        }
        cout << dp[n] << endl;//答案为1走到n位置的方案数
    }
    return 0;
}

D2由于我实在太菜还没过,争取明天补上

BALM2深度解析 | 港大MARS实验室如何用点簇革新激光BA? 本文深度解析了港大MARS实验室提出的BALM2方案如何通过点簇技术革新激光BA(Bundle Adjustment)处理。BALM2将点云数据聚合为点簇,显著提升计算效率,实测显示其计算耗时仅为传统方法的1/20。文章详细介绍了点簇的核心原理、二阶优化方法及与传统方法的性能对比,展示了其在激光SLAM领域的突破性应用。 阅读详情

相关推荐

DPO(Direct Preference Optimization)实战全流程指南

《DPO实战全流程指南》摘要 本文提供了端到端的DPO(直接偏好优化)实战方案,包含数据准备、模型训练、评估部署全流程。核心内容包括: 数据构建:推荐UltraFeedback等高质量数据集,提供数据预处理代码 训练配置:基于HuggingFace TRL库的DPO实现,详解beta值等关键参数调优 工业优化:显存节省技巧(LoRA、梯度检查点)、领域自适应方法和在线学习架构 效果评估:量化对比显示DPO可降低86%有害回复率,提升24%用户满意度 常见问题:针对灾难性遗忘、过度安全化等问题给出解决方案 附

技术引领业务创新 1467

hdu1698 Just a Hook (线段树)

题意:给一个大小为n的数组,初始状态全为1 ,进行q次段赋值,问最后的全段和是多少 思路:线段树段修改模板题(用来写模板的题)特别的是,由于只有最后一步查询全段和以及初始状态全为1,代码可以偷工减料 #include #include using namespace std; const int maxn=500100; //用于存放线段树的结构 l,r表示此区间

brainache的博客 277

java实现mavlink协议解析与封包上传数据,实现mavlink数据交互,附带代码、详解

本篇文章介绍了使用java来进行mavlink协议解析,封包与解包的过程,并附带源码供大家使用。MAVLink(Micro Air Vehicle Link,微型空中飞行器链路通讯协议)是无人飞行器与地面站(Ground Control Station ,GCS)或云端服务器之间通讯,以及无人飞行器之间通讯最常用的协议。它已经在PX4、APM、PIXHAWK和Parrot AR.Drone飞控平台上进行了大量测试。

qq_30279827的博客 1450

2021牛客暑期多校训练营3 Kuriyama Mirai and Exclusive Or

2021牛客暑期多校训练营3 Kuriyama Mirai and Exclusive Or 题目链接 题意 给定一个长度为n的数组a。 有q次操作,每次操作有两种类型: 给定一个区间[al,ar][a_l,a_r][al​,ar​]​​,对​​区间内的数ai⊕x,i∈[l,r]a_i\oplus x,i\in [l,r]ai​⊕x,i∈[l,r]​​​。 给定一个区间[al,ar][a_l,a_r][al​,ar​]​,对区间内的数ai⊕(x+i−l),i∈[l,r]a_i\oplus (x+i-l),

Moyan的博客 353

离线反激转换器反馈环路设计:从理论到实践的Type II补偿器详解

在开关电源设计中,反馈环路稳定性是决定电源性能与可靠性的核心。其本质是通过补偿网络对功率级的小信号特性进行校正,以构建一个具有足够相位裕度和增益裕度的闭环系统。反激转换器作为一种广泛应用的隔离拓扑,其功率级在连续导通模式(CCM)和非连续导通模式(DCM)下呈现不同的零极点特性,这直接决定了补偿器的选型。Type II补偿器因其传递函数中固有的积分环节、低频零点与高频极点,恰好能与反激功率级的1P2Z(一个极点、两个零点)特性形成互补,有效塑造理想的回路增益曲线,实现快速稳定的动态响应。本文聚焦于采用TL4

weixin_30162121的博客 501

作物生长模型Oryza V3实战1:为什么要研究它

ORYZAV3是水稻生长模拟模型ORYZA2000的最新升级版本(3.5版),作为作物生长模型,它通过数学方法和计算机技术模拟水稻生长发育过程及其与环境条件的相互作用。主要功能包括:模拟不同条件下的水稻生长和产量形成、评估环境胁迫影响、分析土壤碳氮动态以及进行区域尺度模拟。国内应用广泛,科研机构用于气候变化影响评估、灌溉模式比较等研究,并开展参数敏感性分析和应用培训。使用流程分为六个步骤:确定输入参数(气象、土壤、作物三类)、参数校准、设置模拟环境、运行模型、分析结果(输出50个参数)和计算产量(穗干重×收

504

数组区间共同操作(前缀和与差分的应用)

题意: 长度为 n 的数组(数组中元素∣ai∣|a_i|∣ai​∣≤10610^6106),一共进行 q 次操作,1 ≤ n, q ≤ 2×10510^5105; 每次操作给出 L,R,c,表示区间[L, R]中各个数均增加上 c(−10510^5105≤ c ≤10510^5105); 求 q 次操作结束后,数组中各个元素值。 输入要求: 第1行输入数组长度 n 和操作次数 q; 第2行...

weixin_43403556的博客 423

YOLOv11改进 | 网络结构代码逐行解析(一) | 项目目录构造分析

Hello,大家好这次给大家带来的不是改进,是整个YOLOv11项目的分析整个系列大概会更新5-7篇左右的文章从项目的目录到每一个功能代码的都会进行详细的讲解,下面开始进行YOLOv11逐行解析的第一篇——项目目录构造分析开头之前顺便给大家推荐一下我的专栏,本专栏更新上百余篇YOLOv11改进机制手把手教你添加到网络结构中,同时针对拿到模型不知道如何修改,不知道如何发表论文的读者进行针对性的文章介绍,本专栏质量分平均分96分,内容质量完全有所保证。

Snu77的博客 1万+

Codeforces Round #705 (Div. 2) D. GCD of an Array

题意 给定一个长度为n的数组a,q个操作,每次使第k个数 * x,求每次操作之后的数组所有元素的最大公约数,ans % (1e9 + 7)。 1 <= n ,q<= 2e5 ,1<= ai <= 2e5, 1 <= x <= 2e5 思路 刚开始以为用线段树维护,但是会爆long long,天真的想每次除去这次的gcd,用个变量来记录每次答案,但是每个数也会爆long long。 用multiset来维护每一位的每个质数的个数来变化(方便找最小值,最小值也就是gcd的

qq_45074215的博客 175

K-Core, K-Shell & K-Crust傻傻分不清楚

K-Core(K-核)就是所有大于等于K的K-Shell的并集;K-Crust(K-皮)就是所有小于等于K的K-shell的并集。

欢迎订阅 -- 小源笔迹 2256

查找【优快云】- 人工客服

【代码】查找【优快云】- 人工客服。

👨‍💻 前端开发者 | 技术分享者 1403

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))(https://codeforces.com/contest/1561) 一边被折磨一边打代码 A. Simply Strange Sort (https://codeforces.com/contest/1561/problem/A) You have a permutation: an array a=[a1,a2,…,an] of distinct integer

好好好,这么写博客是吧 479

【Android 11】使用Android Studio调试系统应用之Settings移植(五):编译Settings 模块、解决编译错误

基于Andorid 11,系列第5篇文章,本章开始,终于轮到解决正主Settings的编译问题了,使用android studio编译出Settings.apk,能看到这一章的同学,也着实不容易了,再接再厉

上周的博客 3919

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) A-F全题解

也不是很难嘛o(╥﹏╥)o

663

怀旧版电脑GBC模拟器

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

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Codeforces Round #740 Div. 2 E

// Problem: Bottom-Tier Reversals // Contest: codeforces #740 // URL: https://codeforces.com/contest/1561/problem/E // Memory Limit: 512MB // Time Limit: 2000ms // author:tczz /* solution:很明显偶数位置的数不能通过翻转成为奇数位的数,奇数位同 理,所以如果奇数在偶数位置或者偶数在奇数位置,那么就是impossible.

tczz000的博客 179

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Codeforces Round #740 Div. 2 解题报告

A. Simply Strange Sort 模拟 题意: 给你一个长度为nnn (nnn<=1000 且 nnn是奇数) 的排列; 有一种操作,定义第iii次操作: 如果iii是奇数,对所有奇数位置pospospos(pospospos<n),如果 第pospospos位大于第pospospos+1位,那么交换。 如果iii是偶数,对所有偶数位置进行上面那个操作; 求在第几次操作之后,整个序列有序。 思路: 因为给的nnn很小,对于一个数,他回到原本的位置,最多需要nnn次操作,那么nnn个数

qq_52383696的博客 391

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Codeforces Round #740(Div. 2)部分题解

A 点击此处查看对应的题目. 本题模拟 本题要求最后迭代完成的数组必须递增,那么,首先检验是否符合这个条件,如果不符合就反复迭代。 按题意来说,迭代的过程需要按奇数和偶数进行枚举不符合条件则与后一个数交换。反复迭代后记录其次数便是答案。 时间复杂度 O(n3)O(n^3)O(n3) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1010,INF = 1e9 + 5; int a[N

山中一扶苏的博客 203

Codeforces Round #740 (Div. 2) CF1561

A.模拟 看一下,数据范围很小,我们按照题意模拟暴力就好了 #include<bits/stdc++.h> using namespace std; int a[950]; int n; inline bool check() { for (int i=1;i<=n;++i)if (a[i]!=i)return false; return true; } int main() { ios::sync_with_stdio(0); int t;cin>>t; while

Code_Shark的博客 223

Codeforces Round #740 (Div. 2) A C

A - Simply Strange Sort 题意 给你定义一个 f 操作,f(i) 为如果ai>ai+1a_i>a_{i+1}ai​>ai+1​就交换两个数 然后给定操作 i,如果 i 是奇数则对所有的奇数下标的数都做f操作;如果 i 是偶数对所有的偶数下标都做 f 操作 n为奇数 给定数列为n的全排列 问多少次操作会使得数列递增 题解 一开始还以为是什么根据这个数所在的位置和应该所在的位置的,结果估摸一下数据范围,应该可以暴力 Code #include <iostream&g

INGg__的博客 328

Codeforces Round #740 (Div. 2) B C

B. Charmed by the Game 题目大意: A和B轮流发球,给出A和B的胜利场数a和b,但是不知道谁先发球,问最后破发球次数的所有可能。接球一方胜利即为破发球。 题解: 因为不知道谁先发球,所以可以分为两种情况, 一种为A先发球,另一种为B先发球 每个人发球的次数很容易得出来,定义x = (a + b) / 2,y = a + b - x 那么A要么发球x次,要么发球y次。 A发球x次:若A在发球中胜利i次,那么A就有a - i次破发球,B就有x - i破发球,a - i + x - i即为总

weixin_52278699的博客 216

Codeforces Round #740 Div. 2 A B C D1 D2

目录A. Simply Strange SortB. Charmed by the GameC. Deep Down BelowD1. Up the Strip (simplified version) A. Simply Strange Sort 题目链接 题意: 给你一个从1−n1-n1−n的排列数组,nnn的长度是奇数,按照题目给定的要求对序列进行变换,求多少次变换之后能够使得数组递增。 分析: 简单的模拟题,主要是要读懂题意,f(i)f(i)f(i)代表如果ai>ai+1a_i > a

a碟的博客 463

Codeforces Round #740 (Div. 2) E. Bottom-Tier Reversals 构造

传送门 文章目录题意:思路: 题意: 给你一个长度为奇数nnn的排列aaa,每次可以选择长度为奇数的前缀,并将[1,len][1,len][1,len]翻转,你需要用不超过5n2\frac{5n}{2}25n​次操作将其变成有序的,输出方案。 如果无解输出−1-1−1。 n≤2021n\le2021n≤2021,nnn是奇数 思路: 比较套路的构造吧,没做血亏。 首先不难发现,翻转不会改变位置的奇偶性,所以如果i mod 2!=ai mod 2i\bmod2!=a_i\bmod2imod2!=ai​mod2

m0_51068403的博客 201

Codeforces Round #381 (Div. 2) &&Codeforce_740

A. Alyona and copybooks水题,让求满足条件的最小花费,注意组合可能是多个即可。#include <bits/stdc++.h> using namespace std;typedef long long ll;int main(int argc, char const *argv[]) { ll n,a,b,c; cin>>n>>a>>b>>c; n%=

坚持不懈 694

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))(A-D2)

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) A - Simply Strange Sort(模拟) 简单模拟,没什么好说的。 #include <bits/stdc++.h> #define inf 0x3f3f3f3f //#define int long long using namespace std; typedef pair<int,int> PII; const int N =

weixin_58110654的博客 268
上一篇: Codeforces Round #739 (Div. 3) A~F2
下一篇: Codeforces Round #742 (Div. 2) A~F
zhbbbb!
博客等级 码龄7年 43粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值