Educational Codeforces Round 124 (Rated for Div. 2)ABCD题解

SIwave学习记录:电热耦合仿真 SIwave电热耦合仿真 阅读详情

A. Playoff

传送门
在这里插入图片描述
题目大意:输入一个整数n,就有2n个人进行分组比赛,第一轮:12一组,34一组,…,2n-1和2n一组,当一组内编号连续则胜者为编号小的那个,否则胜者为编号高的那个。
解题思路:很明显最后胜者始终为最大的奇数即2n-1

输入样例

2
3
1

输出样例

7
1
#include <iostream>

using namespace std;
typedef long long ll;
const int N = 31;
ll a[N];
int main()
{
    int t;
    cin >> t;
    a[0] = 1;
    for(int i = 1 ; i < N ; i++){
        a[i] = a[i - 1] * 2;
    }
    while(t--){
        int n;
        cin >> n;
        cout << a[n] - 1 << endl;
    }
    return 0;
}

B. Prove Him Wrong

传送门
在这里插入图片描述
输入样例

3
2
512
3

输入样例

YES
1 337
NO
YES
31 4 159

在这里插入图片描述
题目大意:对于一个长度为n的数组a,一定能找到两个下标i,j,令a[i]=a[j]=|a[i]-a[j]|,数组a的总和会减少,我们要证明这个结论是错误的。输入一个n为数组的长度,如果有一个数组a,a中的元素不能大于1e9,进行任意这样的操作最后数组a的总和增加或不变,就输出数组a,否则输出NO。
解题思路:将题目的意思转换为不等式即我们要找到一个a[i],a[j]使得:
a[i]+a[j] <= 2 * |a[i]-a[j]| =>
a[i]+a[j] <= 2 * a[j] - 2 * a[i] =>
3a[i] <= a[j] =>
a[i] <= 1/3 * a[j]
所以第二个数只要是第一个数的3倍及以上,那么二者差值的2倍一定大于二者之和,那么我们就可以得到一个序列1 3 9 27 … 直到大于1e9,如果遇到第一个a[m] > 1e9那么输入的n如果大于等于m就输出No,否则输出Yes,所以我们需要先预处理一下

#include <iostream>
using namespace std;
const int N = 1002;
typedef long long ll;
ll a[N];
int main()
{
    int t;
    cin >> t;
    a[1] = 1;
    int flag = 0;
    for(int i = 2 ; i < 1002 ; i++ ){
        if(!flag){
            a[i] = a[i - 1] * 3;
        }
        if(a[i] * 3 > 1e9 && !flag){
            flag = i;
        }
    }
    while(t--){
        int n;
        cin >> n;
        if(n > flag){
            cout << "NO";
        }else{
            cout << "YES" << endl;
            for(int i = 1 ; i <= n ; i++){
                cout << a[i] << " ";
            }
        }
        cout << endl;
    }
    return 0;
}

C. Fault-tolerant Network

传送门
在这里插入图片描述
输入样例

2
3
1 10 1
20 4 25
4
1 1 1 1
1000000000 1000000000 1000000000 1000000000

输出样例

31
1999999998

题目大意:有两排电脑,每排电脑的个数为n,每排的电脑网络都是互通的(假设第一排的电脑为数组a,第二排为数组b),如a1连接a2,a2连接a3,…,an-1连接an,b也是一样。但是ab互不连通,现在需要你将a和b连接起来,每次连接都会花掉|ai-bj|,并保证a和b任意一台电脑挂掉了,a和b的网络连接不会断也不会出现某台电脑被孤立同时花费最小。

解题思路:通过分析我们可以知道,边界电脑a1,an,b1,bn必须被连接,如果a1没有被连接,那么假设a2挂掉了,a1就会成为孤立的点,同时我们也只需要让这四个点被连接,这样无论哪个的电脑挂掉都能保证两排电脑的每两个都能互通。可以抽象成一个矩形,如果有条边断掉,也还是一根线,不会断成两根线。
那么如何保证这四个点都被连接并且花费最小呢,这就需要枚举了。首先对于a1,有三种连接情况:b1,bn,bi:min(|a1-bi|)(i>1&i<n),b1、bn、an的情况也一样。我们只需要将这些情况枚举,找到最小的花费即可。

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 1e6;
#define Inf 1e9
typedef long long ll;
bool vis[N];
ll ans;
int cal(vector<ll> &v,int cur){ //寻找与该数组元素的最小差值
    ll res = 1e9;
    int pos;
    for(int i = 0 ; i < v.size() ; i++){
        if(res > abs(v[i] - cur)){
            res = abs(v[i] - cur);
            pos = i;
        }
    }
    return pos;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--){
        vector<ll>a,b;
        ans = 10ll * Inf;
        int n;
        scanf("%d",&n);
        ll x;
        for(int i = 1 ; i <= n ; i++){
            scanf("%lld",&x);
            a.push_back(x);
        }
        for(int i = 1 ; i <= n ; i++){
            scanf("%lld",&x);
            b.push_back(x);
        }
        vector<int> pos1 = {0, cal(b,a[0]), n-1};
        vector<int> pos2 = {0, cal(b,a[n-1]), n-1};
        for(auto i : pos1){
            for(auto j : pos2){
                ll res = abs(a[0] - b[i]) + abs(a[n - 1] - b[j]);
                if(i > 0 && j > 0){ // 如果a0没有连接b0
                    res += abs(b[0] -a[cal(a,b[0])]);
                }
                if(i < n -1 && j < n - 1){ // 如果an-1没有连接bn-1
                    res += abs(b[n - 1] - a[cal(a,b[n - 1])]);
                }
                ans = min(ans,res);
            }
        }
        printf("%lld\n",ans);
    }
    return 0;
}

D. Nearest Excluded Points

传送门
在这里插入图片描述
输入样例1

6
2 2
1 2
2 1
3 2
2 3
5 5

输出样例1

1 1
1 1
2 0
3 1
2 4
5 4

输入样例2

8
4 4
2 4
2 2
2 3
1 4
4 2
1 3
3 3

输出样例2

8
4 4
2 4
2 2
2 3
1 4
4 2
1 3
3 3

题目大意:给你一个点集,对于每个点输出不在点集内并且距离该点曼哈顿距离最近的点,曼哈顿距离distance = |x1-x2|+|y1-y2|
解题思路:采用bfs,首先遍历点集,对于一个点(x,y),曼哈顿距离最近为1,那么就遍历该点四个方向的点,如果找到一个点不在点集内就将(x,y)加入队列然后break。如果一个点四个方向的点都在点集内,那么与它曼哈顿距离最近的就是它四个方向中的点中曼哈顿距离最近的,可能有点绕,你可以想象假设一个点,他四个方向的点都在点集内,那么曼哈顿距离最近的点就变成外围点中曼哈顿距离最近的点,那么这个曼哈顿距离就变成2,因为曼哈顿距离为1的点都不能取。最后遍历整个队列,相当于这个队列的初始值就是整个图中最外围的点,那么里面的点就迭代更新为外围曼哈顿距离最近的点的答案。里面的点的答案就是外围点的答案。不停地迭代,最终每个点曼哈顿距离最近且不再点集内的答案就出来了。

#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
using namespace std;
const int N = 1e6 + 100;
vector<int> g[N];
int dx[4] = {1,-1,0,0};
int dy[4] = {0,0,1,-1};
typedef pair<int,int> PII;
int main()
{
    int n;
    cin >> n;
    vector<PII> a(n);
    for(auto &[x,y] : a){
        cin >> x >> y;
    }
    set<PII> st(a.begin(),a.end());
    map<PII,PII> ans;
    queue<PII> q;
    for(auto [x,y] : a){
        for(int i = 0 ; i <4 ; i++){
            int nx = x + dx[i];
            int ny = y + dy[i];
            if(st.count({nx,ny})){
                continue;
            }
            ans[{x,y}] = {nx,ny};
            q.push({x,y});
            break;
        }
    }
    while(!q.empty()){
        int x = q.front().first;
        int y = q.front().second;
        q.pop();
        for(int i = 0 ; i < 4 ; i++){
            int nx = x + dx[i];
            int ny = y + dy[i];
            if(!st.count({nx,ny}) || ans.count({nx,ny})){ //如果该点不是点集内的点或者已经找到该点的答案就不加入该点
                continue;
            }
            ans[{nx,ny}] = ans[{x,y}];
            q.push({nx,ny});
        }
    }
    for(auto [x,y] : a){
        auto i = ans[{x,y}];
        cout << i.first << " " << i.second << endl;
    }
    return 0;
}

使用AutoDL云服务器训练YOLO计算机视觉网络模型(AutoDL+Xftp+VS Code),附详细操作步骤 AutoDL AI算力云是一个提供人工智能算力服务的云平台。丰富的GPU资源:提供多种GPU型号,包括NVIDIA的A100A800L40V100RTX 4090RTX 3090等,能满足我们在不同场景下的需求,无论是进行大规模的AI训练还是复杂的科学计算等任务,都可以找到合适的GPU资源。灵活的付费方式:支持按量付费包日包周包月等多种付费模式。对于短期的实验或不确定时长的项目,可以选择按量付费;如果有长期稳定的算力需求,预付费或包周包月则可能更划算,可以根据自己的需求和预算进行选择。集成主流框架:集成了。 阅读详情

相关推荐

MIKE21桥墩模拟实战:抠网格与构筑物法对比与选型指南

本文详细对比了MIKE21软件中抠网格法与构筑物法在桥墩模拟中的应用,包括操作步骤、适用场景及优缺点分析。通过实际案例数据展示两种方法的精度与效率差异,并提供选型决策树和常见问题解决方案,帮助工程师根据项目需求选择最优模拟方法。

weixin_42656416的博客 322

Educational Codeforces Round 124 (Rated for Div. 2)

日常倒序 C.Fault-tolerant Network 题意分析: 有两排电脑, 每一排的电脑是左右互连的,现在要求你将上下两排的电脑连接起来, 形成容错网络: 即网络保持连接,尽管其中一台计算机出现故障。换句话说,如果一台计算机坏了(不管是哪台),网络就不会分裂成两个或多个部分。连接两台计算机的费用是 ∣ai−bj∣|a_i - b_j|∣ai​−bj​∣ 首先形成容错网络, 连四条边 是肯定可以的, 但不一定是最优的, 也可以连两条边, 也可以连三条边 #include<bits/std

CPP2021的博客 463

Sciter教程_00_创建HelloWorld工程

本教程记录Sciter工程的创建和编译运行的过程。

qq_36707072的博客 2277

Educational Codeforces Round 124 (Rated for Div. 2)C. Fault-tolerant Network

原题链接Problem - C - Codeforces 题意就是两边各有电脑,每边的电脑互相之间已经连接,在破坏一台电脑的情况下还要两边可以连接成功的最小代价是 代价=abs(a[i]-b[k]); 不难猜到只要两边两端的电脑可以连接到对面就一定可以,因为可以互相之间相互连,所以最少两条线最多四条线就可以了,先预处理一下两边两端相连的代价然后就可以去比较到底用几条线好了; 代码 #include<iostream> #include<algorithm> using n

qq_62165099的博客 347

TC387 MCMCAN Message RAM配置详解:Tx Buffer与Rx FIFO地址布局

在嵌入式CAN/CAN FD通信系统中,缓冲区和FIFO是数据收发的核心机制,而AURIX TC3xx系列单片机将这一机制集成在了MCMCAN模块专用的Message RAM中。这是一块由CAN控制器独占的内存区域,开发人员需要按照寄存器规范手动划分Tx Buffer、Rx FIFO、过滤元素等子区间。合理的RAM布局能确保不同功能区域互不重叠、有序排列,避免数据覆盖与错帧。通过掌握TXBC、RXF0C等配置寄存器的字段含义,结合实用的地址布局表,可以显著降低多节点CAN通信的调试成本。本内容面向使用TC3

weixin_34226182的博客 224

脑影像分析软件推荐 | JuSpace

JuSpace是一种允许基于 MRI 测量与核成像衍生估计的跨模态关联的工具包,它涵盖各种神经递质系统,包括多巴胺能、血清素能、去甲肾上腺素能和 GABA(γ-氨基丁酸) 神经传递。JuSpace 由一组 Matlab 功能以及涵盖各种受体系统的 PET 受体图谱组成。

NHKJ_ZF的博客 1708

Educational Codeforces Round 124 (Rated for Div. 2)(A-C)

A. Playoff 题意: 告诉你会执行2的n次方次比赛,参赛选手的标号也从1~2的n次方,两两pk,如果二者编号和是偶数,那么编号大的获胜进入下一轮,否则是奇数小的进入下一轮 思路: 不难发现,第一轮时每一组偏小的都会获胜也就是奇数会获胜,而进入到第二轮全是奇数,那么他们的和全是偶数,之后也是如此,因为偶数都被淘汰了,所以都会是出现奇数pk奇数的情况,所以输出最大的奇数即可,也就是2^n-1; #include<bits/stdc++.h> using namesp.

RIPKEY的博客 719

【SOC 芯片设计 DFT 学习专栏 -- DFT DRC规则检查】

在现代半导体设计中,DFT(Design for Test)技术的重要性不言而喻。它确保了芯片在制造完成后能够进行高效和可靠的测试。DFT设计规则检查(DRC)作为DFT流程中的一个关键环节,通过一系列自动化工具检测设计中的潜在问题,从而保证设计的可测试性和整体质量。在本文中,我们将详细探讨DFT DRC的概念、重要性、检查流程以及具体的规则和应用。Tessent是业界领先的DFT解决方案之一,其DRC工具通过一系列自动化检查,确保设计符合DFT要求。

CodingCos的博客 4170

Educational Codeforces Round 124 (Rated for Div. 2)简训

Educational Codeforces Round 124 (Rated for Div. 2)简训 涉及的知识点:搜索,思维

C_eeking的博客 1120

ABAP 平台 SOAUTH2_CLIENT 全面实战:用一套配置,打通 OAuth 2.0 客户端的创建、联调与运维

本文是一份ABAP平台上配置OAuth 2.0客户端的全流程指南,重点介绍新界面SOAUTH2_CLIENT的使用方法。内容涵盖从概念解析到实操步骤,包括四种常见授权方式的选择、证书信任管理、Scope配置以及联调技巧。指南通过两个企业级案例(对接SAP BTP Cloud Integration和SAML 2.0身份联合)展示实际应用场景,并提供了配置清单和伪代码示例。特别强调新界面将客户端配置、令牌测试和校验功能整合的工程化优势,以及与旧事务码OA2C_CONFIG的主要差异。文中多处引用SAP官方文档

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 319

YOLOv8极速瘦身实战:LAMP剪枝让模型又快又准

一个庞大的模型虽然强大,但在实际部署,尤其是资源受限的边缘设备(如无人机、移动电话、嵌入式系统)上,却面临着严峻的挑战:高昂的内存占用、巨大的计算量以及随之而来的高延迟和高能耗。本教程从LAMP剪枝的深刻理论出发,详细解释了它如何通过最小化最坏情况下的L2失真,并借助巧妙的数学简化,最终推导出一种高效、无超参数、层自适应的剪枝策略。它如同为臃肿的模型进行一次精准的“瘦身手术”,通过移除网络中冗余或不重要的权重、神经元甚至整个结构,来显著降低模型的参数量和计算量(FLOPs),从而实现推理加速和资源节约。

FJN110的博客 258

Educational Codeforces Round 134 (Rated for Div. 2) A-D

ddl

weixin_45453817的博客 512

基于YOLO的印章检测及文字识别

针对印章自动化检测与文字识别需求,提出了一种融合改进YOLO模型与OCR技术的端到端解决方案,旨在解决复杂背景干扰、印章残缺变形及环形文字排列等难题

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 8224

Educational Codeforces Round 124 (Rated for Div. 2)(ABCD)

Educational Codeforces Round 124 (Rated for Div. 2)(ABCD) 总结:日常犯病,细节处理不好 A. Playoff 题意:给定数字n,有2n2^n2n个人进行比赛,按顺序排好,每次两两比赛,如果两者和相加为奇数,则数字较小的晋级;否则数字较大的晋级。 思路:根据样例盲猜答案是2n−12^n-12n−1,幸运水过 #include<bits/stdc++.h> using namespace std; typedef long long ll;

一只大菜鸡的博客 522

visio安装包

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Educational Codeforces Round 95 (Rated for Div. 2)解题报告

Educational Codeforces Round 95 (Rated for Div. 2) A. Buying Torches 题目大意 111根棍子能换xxx根棍子,yyy根棍子能换一份煤,111根棍子和111份煤能组成一根火柴,初始时你只有一根棍子,问你最少最多少次交换可以获得kkk根火柴 解题思路 根据题目意思,我们至少要有kkk块煤,那么就需要kykyky根棍子,还需要另外的kkk根棍子与其组成kkk根火柴,设aaa为用棍子换棍子的次数,bbb表示用棍子换煤块的次数,则有: a(x−1)+

weixin_44211980的博客 302

怀旧版电脑GBC模拟器

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

【Educational Codeforces Round 120 (Rated for Div. 2)】【题解A-C】

2021-12-28 文章目录2021-12-28A. Construct a Rectangle题目大意:测试样例:【code】:B. Berland Music题目大意:测试样例:【code】:C. Set or Decrease题目大意:测试样例:【code】: A. Construct a Rectangle 题目大意: 有三个长度为 l1、l2 和 l3 的整数棒。 你被要求将它们中的一个准确地分成两部分,这样: 两个部分都具有正(严格大于 0)整数长度; 碎片的总长度等于木棒的原始长度; 可以从

eternity_memory的博客 1200

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Educational Codeforces Round 124 (Rated for Div. 2) -B-C

原题链接https://codeforces.com/contest/1651/problem/B 解题思路: 读题,题目要求对于任意的i,j做了ai=aj=|ai-aj|操作后都不会减小。 一: 满足不会减小这个条件。有a+b>=2*(a-b)(假设a是大的数) 则解方程有a>=3*b。 二: 由一即可发现数字序列必然是递增的(要满足题目条件,较大的数必须大于或等于另一数的三倍),所以要使序列最长即从最小数1开始列举。 三: 按此序列可以最长。1 3 9 27 81…(下一个数恰好是前一个的三

qq_52930538的博客 316

Educational Codeforces Round 99 (Rated for Div. 2) 题解

题目链接:Educational Codeforces Round 99 (Rated for Div. 2) A. Strange Functions 转换题意就是判断字符串长度 int main() { int n; cin >> n; while(n--) { string s; cin >> s; cout << s.length() << endl; } } B. Jumps int main() { int t; sc

张小生的先生的博客 392

Educational Codeforces Round 124 (Rated for Div. 2) (A-D题解)

源代码:ACM/OpenjudgeNow/Codeforces at master · abmcar/ACM (github.com) 更好的阅读体验: 折跃坐标 A. Playoff 题目大意: 思路: 比较简单的数学思路 我们发现每轮会刷掉奇数位的选手 不难发现和证明 最终剩下的一定是$2^n-1 $ 代码: void solution() { cin >> n; cout << (1 << n) - 1 << endl; } B. P

Abmcar的博客 1326

Codeforces1651-Educational Codeforces Round 124 (Rated for Div. 2)-题解(A-D)

比赛链接 A 题意 2n2^n2n名运动员比赛,当运动员 x 和 y 比赛时,获胜者的决定如下: 如果 x+yx+yx+y是奇数,则编号较低的运动员获胜 如果 x+yx+yx+y是偶数,则编号较高的运动员获胜。 思路 最后肯定是最大的奇数获胜,也就是2n−12^n - 12n−1 AC代码 #include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_wit

千淘万漉虽辛苦,吹尽狂沙始到金 1376

Educational Codeforces Round 90 (Rated for Div. 2)部分题解

A - Donut Shops 题解: 1.我们首先特判一下包装盒里面只有一个物品的情况,如果只装了一个物品,那我们就直接比较这两个物品的单价即可。 2.如果盒子里面装的不止是一键物品,那么我们就需要比较一下之间的单价了,如果价格相等,那么第一件物品肯定有优势(因为它可以一个一个卖),输出1 -1即可;如果第一件价格小于第二件价格,那么第二件物品就会“一无是处”,直接输出1 -1即可,如果第一件物品价格小于第二件物品价格,且单价要大于第二件物品,那么就可以输出1 b。(恰好为b件,肯定买第二件物品话算,因为

xxxxxiao123的博客 2093

Educational Codeforces Round 80 (Rated for Div. 2) 题解

Educational Codeforces Round 80 (Rated for Div. 2) 【A. Deadline】 【题目大意】 ([]表示想上取整) 【解题思路】 【AC代码】 #include <bits/stdc++.h> #define max(a, b) ((a) > (b) ? (a) :(b)) #define min(a, b) ((a) &lt...

weixin_44211980的博客 892

Educational Codeforces Round 81 (Rated for Div. 2)解题报告

Educational Codeforces Round 81 (Rated for Div. 2) 【A.Display The Number】 【题目大意】 问你用n根火柴能表示的最大数字是多少 【解题思路】 容易想到1只需要两根火柴,那么尽量用1,有多的将第一位改为7 【AC代码】 #include <bits/stdc++.h> #define N 100 #define ma...

weixin_44211980的博客 582

Educational Codeforces Round 112 (Rated for Div. 2)(补题)

B. Two Tables 题意: 给定一个W*H的矩形,在里面有一个蓝色桌子,坐标(左右顶点)(x1,y1)(x2,y2),然后还要在里面放一个红色桌子,要想放开红色桌子,问你蓝色桌子移动的最小距离。 思路: 只需要单一的上下左右移动即可,因为蓝色方块向单一方向移动,对另一个方向是没有贡献的(也可以理解为,因为蓝色方块周边的区域总是有长或者宽是和W或H是一样的,所以就不用再动它了) 知道只用单一移动的话,就把所有情况讨论出来就行了,上下左右移动的最小值取出来就行 #include <bits/st

weixin_54699118的博客 630

Educational Codeforces Round 134 (Rated for Div. 2) A - D

Educational Codeforces Round 134 (Rated for Div. 2)

qq_53504307的博客 242

Educational Codeforces Round 134 (Rated for Div. 2)

思路:最小值好求,只需要在b数组中找到第一个大于a[i]的元素b[j],用b[j]-a[i]即为当前这位的di的最小值.最大值就稍微难一点.我们可知最后一位的对大致是固定的,那么就倒着往前遍历.我们记录当前能和a数组匹配的最大的b数组中元素下标是p.当a[i]>b[i-1]的时候,那么i到p区间内合法最大值都是b[p]-a[i].此时再往前会因为a[i]>b[i-1]而导致规则不成立,直接把p更新为i-1,在继续匹配即可.

qq_49593247的博客 653
上一篇: Codeforces Round #705 (Div. 2)
leslie___
博客等级 码龄7年 21粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值