当前位置: 首页 > news >正文

CF Edu 127 A-E vp补题

CF Edu 127 A-D vp补题

继续每日一vp,今天晚上有课,时间不太多,回去就直接vp。前三题比较简单,过了之后排名rk2000+,然后就去洗澡了。d题没怎么认真思考,其实也可做。最后rk4000+。发挥还行,b题罚时4次确实不应该。继续加油!
题目链接

A. String Building 签到
题意:给你一个只含‘a’和‘b’的字符串,问你能否通过‘aa’,‘aaa’,‘bb’,‘bbb’来组成。
思路:很明显直接判断字符串中是否存在单独的‘a’或者‘b’即可。
经典的双指针写法

void Showball(){string s;cin>>s;for(int i=0;i<s.size();i++){int j=i;while(j<s.size()-1&&s[j]==s[j+1]) j++;if(i==j) {cout<<"NO"<<endl;return;}i=j;}cout<<"YES"<<endl;
}

B. Consecutive Points Segment 贪心
题意:给你一个严格递增的序列,你可以对每一个数x,进行x+1,x-1或者不变的操作。问你能否把序列构造成形如l,l+1,l+2,...,l+n−1l,l+1,l+2,...,l+n-1l,l+1,l+2,...,l+n1的连续的序列。
思路:直接贪心分析,第一个数的情况比较特殊,单独分析,一旦前面的数确定就不能改变了,我们每次尽可能让数变大,如果相邻差值超过3,那么无法进行构造。具体看代码。当时写的时候细节没有处理好,wa了4发,(气急败坏!)

void Showball(){int n;cin>>n;vector<int> a(n);for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<n-1;i++){int t=a[i+1]-a[i];if(!i){if(t==0) a[i+1]++;else if(t==1) a[i]++,a[i+1]++;else if(t==2) a[i]++;else if(t==3) a[i]++,a[i+1]--;else {cout<<"NO"<<endl;return;}}else{if(t==0) a[i+1]++;else if(t==1) continue;else if(t==2) a[i+1]--;else {cout<<"NO"<<endl;return;}}}cout<<"YES"<<endl;
}

C. Dolce Vita 前缀和+贪心
题意:你每天都有x元,一开始给你n个物品的价格,每天所有的物品的价格都会+1。问你一共最多可以买几件物品。
思路:这个题算法本场高光了,看完题立马有了思路,简单理了一下逻辑直接就开码了。(码之前还提醒自己这题要开long long!)
然后很快,样例过了。交上去…看到一直在过数据,直呼稳了。然后wa 5。以为贪心错了,结果看了一下,vector没有开long long。(下次注意!
回归正题:这个题,贪心,我们就先从小到大给商品排个序。然后求一下前缀和。由于我们要算一共能买几件商品,我们直接统计每件商品最多能买几次,再求和就可以。对于第iii个物品,如果x<s[i],那么说明,这个物品一次都买不了,(因为我们要尽可能买便宜的商品)。不妨令t=(x-s[i])。那么我们发现每个物品最多可以买t/i+1t/i+1t/i+1次。因为我们排了序,所以如果t>0,说明第一次我们可以直接买到1-i这些商品,t就是剩下的钱。因为每天每件商品会涨价1元。所以t/it/it/i就是剩下的钱能够在涨价后还能买几天。因为第一天没有涨价,所以还要加上第一天的一次。最后统计就ok。代码十分简洁!

void Showball(){LL n,x;cin>>n>>x;vector<LL> a(n+1);LL sum=0;//写题解时,发现前缀和边算边用for(int i=1;i<=n;i++) cin>>a[i];sort(a.begin()+1,a.end());LL ans=0;for(int i=1;i<=n;i++){sum+=a[i];LL t=x-sum;if(t>=0) ans+=(t/i+1);}cout<<ans<<endl;
}

D. Insert a Progression 贪心+思维
题意:给你一个序列和一个正整数x。你需要将1-x之间的数插入到这个序列中去(可以插入到开头和结尾),然后求出最小的相邻两项绝对值之差的总和。
思路:经过分析,我们很快可以发现一些性质,对于单调的区间,插入后维持单调性,是不会影响结果的。比如在2和7之间插入3 4 5 6。结果还是5。反过来也如此,进行拓展我们就可以发现在序列最大值和最小值之间的数,可以直接插入并且对结果没有影响。接下来我们考虑这之外的数如何处理。我们设序列最大值为maxnmaxnmaxn,最小值为minnminnminn。通过刚才的分析,我们发现,对于111minn−1minn-1minn1这些数,如果我们按照连续的顺序插入,其实和直接插入1的结果是一样的,例如我们将1,2,3插入到4 6 7这个序列中。1,2,3,4,6,7。可以发现符合前面讲的单调的性质,所以2,3这些元素对结果不影响。所以我们只需要考虑1的插入。同理,我们也只需要考虑x的插入。
对1插入的位置进行分析。无非就是开头,结尾和minnminnminn的旁边。
对于开头的情况,我们发现对答案的贡献是max(a0−1,0)max(a_0-1,0)max(a01,0)。对于结尾的情况。贡献则是max(an−1−1,0)max(a_{n-1}-1,0)max(an11,0)。对于最小值旁边的情况,贡献则是2∗max(minn−1,0)2*max(minn-1,0)2max(minn1,0)。因为左边贡献一次,右边贡献一次。不理解的话,选三个数手算一下,就明白了。对于x的插入分析同理。

LL a[N];
void Showball(){LL n,x;cin>>n>>x;for(int i=0;i<n;i++) cin>>a[i];if(n==1){cout<<max(a[0],x)-1<<endl;return;}LL ans=0;LL minn=*min_element(a,a+n);LL maxn=*max_element(a,a+n);for(int i=0;i<n-1;i++){ans+=abs(a[i]-a[i+1]);}LL t1=min({2*max(0ll,x-maxn),max(0ll,x-a[0]),max(0ll,x-a[n-1])});LL t2=min({2*max(0ll,minn-1),max(0ll,a[0]-1),max(0ll,a[n-1]-1)});cout<<ans+t1+t2<<endl;
}

E. Preorder思维+计数
题意:给你一个满二叉树,每个节点都有一个字符‘A’或者‘B’。然后总的字符串就是从根节点按照序号连起来的字符。你可以将一个非叶子节点的左二子和右儿子交换。问你一共能够构成多种字符串。
思路:题目也很清晰。我们知道当两个儿子不同的时候,那么就可以有两种情况。所以我们就可以递归处理,如果左边和右边的字符串不相同答案就会乘2。因此我们需要较快的去比较左右字符串的大小。因此我们就可以进行规定,每次组合都按照字典序进行组合,那么对于两个一样情况的字符串,我们就可以直接进行比较了。
ps:对于char数组 使用

char s[N];
cin>>s+1;

这样读入在c++20里是不被允许的,会报错。一定要使用的话,可以循环读入字符,或者使用std::string

char s[N];
int n;
int f[N];
//快速幂 a^b mod p
LL qmi(int a, int b, int p)
{LL res = 1 % p;while (b){if (b & 1) res = res * a % p;a = a * (LL)a % p;b >>= 1;}return res;
}
string dfs(int u){if(!s[u<<1]) return s[u]=='A'?"A":"B";string s1=dfs(u<<1),s2=dfs(u<<1|1);f[u]=f[u<<1]+f[u<<1|1];if(s1!=s2) f[u]++;if(s1<s2) return s1+s[u]+s2;else return s2+s[u]+s1;
}
void Showball(){ s[0]='?';cin>>n;for(int i=1;i<1<<n;i++) cin>>s[i];dfs(1);cout<<qmi(2,f[1],mod)<<endl;
}

完结撒花!!!

相关文章:

CF Edu 127 A-E vp补题

CF Edu 127 A-D vp补题 继续每日一vp&#xff0c;今天晚上有课&#xff0c;时间不太多&#xff0c;回去就直接vp。前三题比较简单&#xff0c;过了之后排名rk2000&#xff0c;然后就去洗澡了。d题没怎么认真思考&#xff0c;其实也可做。最后rk4000。发挥还行&#xff0c;b题罚…...

剑指 Offer 05. 替换空格

摘要 剑指 Offer 05. 替换空格 一、字符替换 由于每次替换从1个字符变成3个字符&#xff0c;使用字符数组可方便地进行替换。建立字符数组地长度为 s 的长度的3倍&#xff0c;这样可保证字符数组可以容纳所有替换后的字符。 获得 s 的长度 length创建字符数组 array&#x…...

通过操作Cortex-A7核,串口输入相应的命令,控制LED灯进行工作

1.通过操作Cortex-A7核&#xff0c;串口输入相应的命令&#xff0c;控制LED灯进行工作 例如在串口输入led1on,开饭led1灯点亮 2.例如在串口输入led1off,开饭led1灯熄灭 3.例如在串口输入led2on,开饭led2灯点亮 4.例如在串口输入led2off,开饭led2灯熄灭 5.例如在串口输入led…...

Python实现某du文库vip内容下载,保存成PDF

前言 是谁&#xff0c;是谁在网页上搜索往年考试卷题答案的时候只能阅读前两页的选择题&#xff0c;是谁在搜几千字的文档资料只能看25%&#xff0c;是谁在百度文库找七找八的时候所有的东西都要付费才能继续看… 我先说 是我自己 我又不经常用&#xff0c;只有偶尔需要看看…...

vue3.0 模板语法

文章目录前言&#xff1a;1. 内容渲染指令1.1 v-text1.2 {{ }}插值表达式1.3 v-html2. 双向绑定指令2.1 v-model2.2 v-model的修饰符3. 属性绑定指令3.1 动态绑定多个属性值3.2 绑定class和style属性4.条件渲染指令4.1 v-if、v-else-if、v-else4.2 v-show4.3 v-if与v-show的区别…...

【GlobalMapper精品教程】054:标签(标注)功能案例详解

同ArcGIS标注一样,globalmapper提供了动态标注的功能,称为标签,本文详解标签的使用方法。 文章目录 一、标签配置二、创建标签图层三、标签图层选项1. 标签字段2. 标签样式3. 标签格式4. 标签语言5. 标签优先级一、标签配置 在配置页面的【矢量显示】→标签选项卡下,有标签…...

超详细树状数组讲解(+例题:动态求连续区间和)

树状数组的作用&#xff1a;快速的对数列的一段范围求和快速的修改数列的某一个数为什么要使用树状数组&#xff1a;大家从作用中看到快速求和的时候可能会想到为什么不使用前缀和只需要预处理一下就可以在O(1)的时间复杂度下实行对于数列的一段范围的和但是我们可以得到当我们…...

【学习笔记】AGC055

A - ABC Identity 如果只有AAA,BBB两种字符的话&#xff0c;我们发现要寻找p∈[1,n]p\in [1,n]p∈[1,n]&#xff0c;使得[1:p][1:p][1:p]中AAA的数目与[p1:n][p1:n][p1:n]中BBB的数目相同。 如果有A,B,CA,B,CA,B,C三种字符&#xff0c;我们可以先将A,BA,BA,B分离出来&#xf…...

墨者——内部文件上传系统漏洞分析溯源 内部文件上传系统漏洞分析溯源

墨者——内部文件上传系统漏洞分析溯源 内部文件上传系统漏洞分析溯源 1.选择合适的文件上传 2.可以看到为*.asp文件 3.可以推测出此站点为IIS 4.上传shell.asp试试 5.上传报错&#xff0c;将其改名为shell.asp.txt上传&#xff0c;发现上传成功 6.有个问题就是服务器将我们所…...

5.2 Python if语句

5.2.3 检查是否不相等要判断两个值是否不等&#xff0c;可结合使用惊叹号和等号(!)&#xff0c;其中的惊叹号表示不&#xff0c;在很多编程语言中都如此。下面再使用一条if语句来演示如何使用不等运算符。我们将把要求的比萨配料存储在一个变量中&#xff0c;再打印一条消息&am…...

ubuntu gerrit 配置

1 - 简介 参考地址: https://www.cnblogs.com/anliven/p/12019974.html https://www.cnblogs.com/anliven/p/11980432.html 虽然Gerrit 本身提供 Code Review和 Git 仓库的两大功能,但实际上很多项目用的是其他的Git仓库,例如GitLab和GitHub。 一般情况下,Gerrit位于最终…...

运动蓝牙耳机什么牌子好,运动蓝牙耳机品牌推荐

现在市面上运动耳机的品牌越来越多&#xff0c;还不知道选择哪一些运动耳机品牌&#xff0c;可以看看下面的一些耳机分享&#xff0c;运动耳机需要注意耳机的参数配置以及佩戴舒适度&#xff0c;根据自己最根本的使用需求来选择运动耳机。 1、南卡Runner Pro4骨传导蓝牙运动耳…...

(7)C#传智:方法及参数、重载(第7天)

一、方法作用域 被调用者需要调用者的值,方法有二: 1.传参数. private static void Main(string[] args){int m 3;Console.WriteLine(m);Console.ReadKey();}public static int GetMax(int m){return m 3;} 2.使用静态字段模拟全局. 多个方法都需要时&#x…...

Python 函数式编程

函数式编程&#xff1a;允许把函数本身作为参数传入另一个函数&#xff0c;还允许返回一个函数&#xff01; 1.高阶函数 一个函数可以接收另一个函数作为参数&#xff0c;这种函数称之为高阶函数 abs(-10) 是函数调用 abs是函数本身 abs函数名其实是一个变量名 变量可以…...

pandas读取EXCEL列名重复问题解决——pandas设置多行为列名(多层列名)

问题呈现 这是我在问答区看到的一个问题。 问&#xff1a;在python中使用pandas读取Excel数据&#xff0c;重复数据被区分了&#xff0c;如何做到重复数据不被区分&#xff1f; 解决思路 很明显&#xff0c;这是pandas读取excel文件时列名设置问题&#xff0c;我第一时间想…...

CMake常用语法

1. cmake_minimum_required(VERSION 3.4.1) 指定需要的最小的cmake版本 2. aux_source_directory 查找源文件并保存到相应的变量中: #查找当前目录下所有源文件并保存至SRC_LIST变量中 aux_source_directory(. SRC_LIST)3. add_library 3.1 添加一个库 add_library(<n…...

Java知识复习(一)基础知识

1、什么是JVM、JDK和JRE&#xff1f; JVM是指运行Java字节码的虚拟机。而字节码文件指的就是扩展名为.class的文件&#xff0c;JDK指功能齐全的Java SDK&#xff0c;能够创建和编译程序JRE指Java运行的环境&#xff0c;包括JVM、类库和命令等 2、重载和重写的主要区别 重载&…...

springboot+vue.js校园车辆用车预约管理系统

springboot是基于spring的快速开发框架, 相比于原生的spring而言, 它通过大量的java config来避免了大量的xml文件, 只需要简单的生成器便能生成一个可以运行的javaweb项目, 是目前最火热的java开发框架 前端技术&#xff1a;nodejsvueelementui本项目的应用场景描述如下&…...

【 K8s 源码之调度学习】Pod 间亲和性和反亲和性的源码分析

查看案例 字段含义podAffinityPod 间的亲和性定义podAntiAffinityPod 间的反亲和性定义requiredDuringSchedulingIgnoredDuringExecution硬性要求&#xff0c;必须满足条件&#xff0c;保证分散部署的效果最好使用用此方式preferredDuringSchedulingIgnoredDuringExecution软性…...

计及绿证交易及碳排放的含智能楼宇微网优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...