Educational Codeforces Round 102 C/D题解【构造】和【维护乱搞】

深入解析Gerber RS274X文件格式:从基础语法到实战应用 本文深入解析PCB制造的核心标准Gerber RS274X文件格式,详细介绍了其基础语法、坐标系统、功能码以及嵌入式光圈定义等关键特性。通过实战案例演示了如何解析和手写Gerber指令,并总结了常见错误与调试技巧,帮助PCB工程师掌握这一与制造工厂沟通的“通用语言”,确保设计准确无误地转化为实体电路板。 阅读详情

题目链接C
题目链接D

C.

题意为:给定n,k , (n<=k<2n)
求构造出来一个长度为k的p序列,使得:
b序列 = p 1 , p 2 , p 3 , p 4 . . . . . . p k , p k − 1 . . . . . . p k − ( n − k ) p_1,p_2,p_3,p_4......p_k,p_{k-1}......p_{k-(n-k)} p1​,p2​,p3​,p4​......pk​,pk−1​......pk−(n−k)​的逆序数小于等于a = 1 , 2 , 3 , 4..... k , k − 1...... k − ( n − k ) 1,2,3,4.....k,k-1......k-(n-k) 1,2,3,4.....k,k−1......k−(n−k)的逆序数。求b取最大字典序时b的序列。
打表:
n,k = 4 3发现答案序列为132
n,k = 5 3发现答案序列为3 2 1

nk = 44 答案:1 2 3 4
nk = 54 答案:1 2 4 3
nk = 64 答案:1 4 3 2
nk = 74 答案:4 3 2 1
发现b的逆序数总是和a的逆序数是一样的,根据打表信息和猜的结论耦合一下发现只需要把后面n-k+1倒序输出就好了;
答案代码:

int n,k;read(n);read(k);
for(int i=1;i<=2*k-n-1;i++)printf("%d ",i);
for(int i=k;i>=2*k-n;i--)printf("%d ",i); 

粗略证明一下:b的字典序和逆序数是顺序增长的,即逆序数大,字典序一定偏大。

D

题意为给定长度为n的+,-符号序列,定义初始值为0,求执行完n个+或者-操作后中间出现了多少个不同的数字。

样例8 4 -±-±-+
表示 0 -1 0 -1 -2 -1 -2 -3 -2 (注意第一个数0也要算上)

然后给m次询问,每次询问给定两个数l,r求忽略l到r的指令的答案(出现的不同数)。
于是很简单的思路:把[1,(l-1)]和[r+1,n]合起来就是答案了。记录一下 a l − 1 a_{l-1} al−1​还有从1跑到l-1的top和low 、 r+1跑到n的top和low就可以了。

//pre[i]就是从1跑到i的top和low
//suf[i]就是从i跑到n的top和low
		int n,m;read(n);read(m);
        for(int i =1;i<=n;++i)scanf(" %c",&s[i]);
        for(int i =1;i<=n;++i)
        {
            if(s[i]=='+')a[i] = a[i-1]+1;
            else a[i] = a[i-1]-1;
            pre[i].X = max(pre[i-1].X,a[i]);
            pre[i].Y = min(pre[i-1].Y,a[i]);
            //求pre就摁求,同时求出a数组表示从1执行到i的当前数。
        }
        suf[n+1]=(pii){0,0};
        for(int i =n;i>=1;--i)
        {
            if(s[i]=='+')suf[i] = (pii){max(suf[i+1].X+1,0),min(suf[i+1].Y+1,0)};
            else suf[i] = (pii){max(suf[i+1].X-1,0),min(suf[i+1].Y-1,0)};
            //suf数组求法就是倒着求,然后对上下界进行抬高或者下降,取0分界。
        }
        while(m--)
        {
            int l,r;read(l);read(r);
            int top = pre[l-1].X , low = pre[l-1].Y;
            int dtop = suf[r+1].X , dlow = suf[r+1].Y;
           // printf("%d %d %d %d\n",top,low,dtop,dlow);
            pii ans = (pii){max(top,dtop+a[l-1]) , min(low,dlow+a[l-1])};
            //最后答案就是两个答案拼接然后各取最值。
            printf("%d\n",ans.X-ans.Y+1);
        }

复健第一晚上的cf脑溢血了,c题想了好久,11分过b,1:00才过c,可以说人已经退化了。接着30分钟才过d。d想的很快,看完题就知道是这个做法但是调了很久代码,就是维护出来suf卡了一下,求ans也卡了一下。只能说这么久没碰题目手很生疏。

AI人工智能代理工作流 AI Agent WorkFlow:在股票市场预测中的应用 AI人工智能代理工作流 AI Agent WorkFlow:在股票市场预测中的应用 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词: AI Agent, W 阅读详情

相关推荐

Keil 丢失编译器版本5、内核文件core_cm3.c报错

若用的是旧版本的core_cm3.c ,就使用编译器v5编译工程;若想用编译器v6,就更新4个相关的内核文件:(CMSIS:Cortex Microcontroller Software Interface Standard,ARM Cortex™ 微控制器软件接口标准)

qq_52804040的博客 6239

Educational Codeforces Round 102 (Rated for Div. 2) D题 Program

这题就是把加号抽象成1,减号抽象成-1,记做数组a(1~n标号),然后求出数组a的前缀和数组为s。(s[0] = 0) 然后对于区间[l,r],答案就是然后分别在前缀和数组s上对区间[0,l-1],[r+1,n]查询最小值,最大值,分别记为minl1,maxl1,minl2,maxl2。那么此时的答案就是 max(maxl1,maxl2)-min(minl1,minl2)+1。 AC源码如下: //Dlove's template #include <iostream> #include &lt

鼎寒的博客 776

分子模拟入门教程 | 低调使用 建议收藏

该方法只需要原子的核电荷和少数模拟的环境参数作为输入,所有的性质都是通过求解薛定谔方程得到的,不需要使用任何经验参数。经典的原子水平的分子模拟已经成为提高我们对材料科学和生命系统中分子过程理解的最流行的方法之一。全原子模拟是一种非常强大的以原子分辨率呈现信息的方法,因为在原子模拟中,一个粒子代表一个特定的原子。随着计算机硬件和模拟技术的快速发展,分子模拟不仅可以解决基本的、常规的化学问题,还可以应用于各种复杂体系。然而,由于问题的复杂性以及严重依赖于现象的现实情况,最好是逐案确定合适的模拟方法。

pysonger的博客 783

Educational Codeforces Round 102

一. A.Replacing Elements A题链接 (1)题意: 给你一个数组,可以选择其中三个不同位置的数i,j,k,使得a[i] = a[j] + a[k],问能不能经过0次或者多次操作使得数组里面的数都小于等于d (2)题解: 能够使数组在任何时候都小于等于d的话,要么是存在两个数相加都不超过d,就可以使得任何一个数都 = 这两个数相加,要么就是所有数都已经不超过d,直接满足条件 (3)代码: #include <bits/stdc++.h> using namespace st

weixin_45843077的博客 425

【数据清洗】数据清洗流程及经验

预处理阶段 预处理阶段主要做两件事情: 一是将数据导入处理工具。 二是看数据。包含两个部分:一是看元数据,包括字段解释、数据来源、代码表等等一切描述数据的信息;二是抽取一部分数据,对数据本身有一个直观的了解,并且初步发现一些问题,为之后的处理做准备。 第一步:缺失值清洗 四个步骤: 1、确定缺失值范围:对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略。 2、去除不需要的...

JoJo93723的博客 6492

晶晨S905L3S/S905L3SB芯片刷机实战:BL加载工具与线刷固件全解析

本文针对晶晨S905L3S/S905L3SB芯片电视盒子刷机时常见的2%失败问题,提供了两种核心解决方案。一是使用已集成特殊通信协议的专用版USB Burning Tool(如V2.2.5/V2.2.7),二是采用旧版工具配合独立的BootLoader加载工具。文章详细解析了两种方案的原理、操作步骤、固件选择及常见问题排查,旨在帮助用户成功完成刷机,让老旧设备焕发新生。

weixin_29238147的博客 1107

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

链接: Educational Codeforces Round 102 (Rated for Div. 2). A 题意:输入n,d,有n个数,可以选择互不想等的i,j,k,使得ai=aj+ak。问最终能否使得数组的每个数字都小于等于d 思路:求出数组最小的两个数的和,小于d就YES,否则NO 代码 #include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include <math.h> #in

HHeyanjie的博客 794

移动端实战指南:深入理解 & 接入 IAB OMSDK

OMSDK(OpenMeasurementSDK)是IABTechLab推出的标准化测量工具,用于统一移动端/原生App广告的可见性和验证流程。其核心包括Native库(采集设备数据)和OMID JavaScript层(实现通信),通过标准化接口让开发者只需接入一套SDK即可兼容多个测量厂商,减少冲突和性能损耗。v1.4版本强化了对CTV和原生App场景的支持,而v1.5新增了画中画检测等功能。集成流程需通过IAB技术实验室注册下载,并遵循严格的命名空间规则。测试阶段需嵌入验证脚本并通过指定工具验证

帅次的博客 1186

Educational Codeforces Round 102 (Rated for Div. 2)

A. Replacing Elements 题意:一个数组,可以用两个不同的元素替换掉另外一个元素,不限次数。问,能否使得数组中所有元素都不大于 d 。 思路:显然,如果所有元素都不大于d,那就执行0次。成立。如果有元素大于d,那就得替换掉,显然选择最小的两个元素进行替换。所以如果最小的两个元素加起来大于d那就没戏了。反之有解。 AC代码: #include <bits/stdc++.h> #define int long long using namespace std; const int

qq_43461168的博客 2683

OpenCV-Python实战(11)——OpenCV轮廓检测相关应用

在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。在本文中,我们将学习如何利用获取到的轮廓,进行形状分析以及对象检测和识别。

盼小辉丶的博客 1万+

Couldn‘t agree a key exchange algorithm(available:curve25519-sha256,curve25519-sha256@libssh.org解决方案

本文主要介绍了Couldn’t agree a key exchange algorithm(available:curve25519-sha256,curve25519-sha256@libssh.org解决方案,希望能对使用winscp的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 方案一 2.2 方案二

weixin_43178406的博客 4万+

Educational Codeforces Round 102 (Rated for Div. 2) C. No More Inversions题解

Educational Codeforces Round 102 (Rated for Div. 2) C. No More Inversions 戳上方进入题目哟~ 题目大意 (这道题真的不好懂,对语文不及格的蒟蒻造成了巨大冲击) 你有一个长度为n的数组遵循以下规律: 1,2,3, … ,k-1, k, k-1, … , k-(n-k) 其中k <= n < 2k 。 首先题目给出一个定义: 我们把 i < j但a[i] > a[j]的情况称为倒置。 现在让你求出一个数组p,使得

Is_TuTouYa的博客 1407

VMware使用Windows、WinXP等虚拟机上不了网的解决办法(管用)

这个情况一般出现在可以插网线的电脑上,比如台式机和有网线插口的笔记本。需要转换器才能插网线的笔记本一般不会出现这种情况. 查看主机的IP地址和虚拟机的IP地址是否在同一网段,如果在的话,虚拟机就能上网了!!(备注:虚拟机中的IP地址一定要和主机中的用来上网的那个连接的IP地址相同哦)。

爱吃雪糕的小布丁的博客 1万+

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

Educational Codeforces Round 102 (Rated for Div. 2) 1473A 题意:用序列中两个数相加来替换序列中其他的数,判断能否使得整个序列的数小于等于d。 题解:乱搞题。 代码:A 1473B 题意:根据题目给出概念判断两个字符串是否存在最小公共倍数字串。 题解:求出两个字符串长度的最小公倍数L,将S和T的长度补全到L,判断两个字串是否相等即可。 代码:B 1473C 题意:给出两个数字n和k,其表示长度为2k的序列,其中前n个数为有序自然数1到n,后2*k-n个

Aliccccccc的博客 253

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Educational Codeforces Round 102 ABCD——解题报告

比赛链接:https://codeforces.com/contest/1473 A——Replacing Elements 当数组中的最小值和次小值的和小于等于d时或者数组中每个位置的值都小于等于d时输出YES,否则输出NO。 因为按照贪心的思想我们肯定每次选择这两个位置的值对其他位置进行赋值,所以直接判断就行了。 特判一下一次都不赋值的情况就行了。 #include <bits/stdc++.h> #define PI atan(1.0)*4 #define rp(i,s,.

mumei的博客 332

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

(Training 3)Educational Codeforces Round 102

能力不够只写了前4题 第四题在赛后10来分钟才调出来 又又又要掉分了 A. Replacing Elements 题意: 你可以做任意次操作 操作方法为选择 ai aj 使得 ak=ai+ak 问你能不能 使得数组全部小于d 思路:从前往后递推即可 只需要找出 是否存在2个数相加小于等于d 或者所有值都小于等于d #include<iostream> #include<cstring> #include<queue> #include<algorithm> u

the_xin的博客 234

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

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

Educational Codeforces Round 102 (Rated for Div. 2) B. String LCM 题解

Educational Codeforces Round 102 (Rated for Div. 2) B. String LCM 点击上方进入题目哟~ 题目大意 给两个只由a和b组成的字符串,让你求出即符合a的变化规律又符合b的变化规律的,长度即能被a的长度整除也能被b的长度整除的最短字符串。 解析 既然字符串s3要遵循两个字符串s1,s2的规律,也就是说这两个字符串的规律相同,且由于要找出遵循其规律的长度的最小公倍数,我的思路是先根据某一字符串s1求出一个符合题目要求长度的字符串s3,再将其与将长

Is_TuTouYa的博客 1721

Educational Codeforces Round 102 (Rated for Div. 2) A,B,C,D题【个人题解】

A. Replacing Elements #include <bits/stdc++.h> using namespace std; const int N=1e4+10; int a[N]; int main() { ios::sync_with_stdio(false); int T,n,d; cin>>T; while(T--) { cin>>n>>d; bool flag=0;

nefu_ljw的博客 1436

Educational Codeforces Round 102 (Rated for Div. 2) 简要题解

这场的题不毒瘤

Irving0323的博客 1405

Educational Codeforces Round 102 (Rated for Div. 2)(A~D)

A. Replacing Elements(水贪心) 题意 思路 经过合理操作之后的数都小于等于 d,有两种情况可以: 本身数列所有的元素的都小于等于 d,这个时候不需要操作。。 数列中最小的两个数之和小于等于 d 代码 #include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> #include &lt

做一只熊猫不好吗? 389

寒假训练第四天-Educational Codeforces Round 102 (Rated for Div. 2)

寒假训练第四天-Educational Codeforces Round 102 (Rated for Div. 2) 前言:打了场div2,心态爆炸 ,ed场教做人,c读半天没读懂,d被memset卡死了, 菜的抠脚 题目链接-https://codeforces.com/contest/1473 A-Replacing Elements 题意:给你一个序列和一个限制d,问是否存在j, k, 使得任意 a[i] = a[j] + a[k] (i≠j; i≠k; j≠k) ,若a[i] <=d,则无需

Siyue1999的博客 425

Educational Codeforces Round 10

DUANG:http://codeforces.com/contest/652 A 爬上爬下瞎搞 想复杂了不怎么敢交结果一发A了 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int main(){ 5 //while(true){ 6 int h1, h2, a...

weixin_33804990的博客 118

HDU6003(Problem Buyer 求出最小的k使得在n个区间里任选k个都包含m这个大小 优先队列)

题目 题意: 给你n个区间代表难度 m个问题的难度。问你至少选择多少个区间才可以保证:每个问题都有它对应的难度区间 而且多个问题不能对应一个区间。 思路: 对于问题1有a个区间不包括这个难度,要想满足这个问题就必须选a+1个区间。所以求出m个问题对应的m个 ai+1 取最大的就是本题的k.所以本题转化为求出所有的a。 用一个优先队列即可求出,注意一个区间只对应一个问题。。。所以上述描述不严谨...

qq_42576687的博客 384

Educational Codeforces Round 102 (Rated for Div. 2) D. Program

题意: 初始xxx值为111,给定一个长度为nnn的操作序列,′+′'+'′+′表示x=x+1x=x+1x=x+1,′−′'-'′−′表示x=x−1x=x-1x=x−1,再给定mmm个询问,每次给定两个数l,rl,rl,r,忽视从第lll到第rrr这r−l+1r-l+1r−l+1个操作,问剩下的操作中可以得到不同数的个数。 数据范围:1≤n,m≤2×105,1≤l≤r≤n1\leq n,m\leq 2\times 10^5,1\leq l\leq r\leq n1≤n,m≤2×105,1≤l≤r≤n 题解:

solego’s blog 261
上一篇: Codeforces Round #695 (Div. 2)D. Sum of Paths【计数题】
下一篇: 阶段总结
DevourPower
博客等级 码龄7年 52粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值