Codeforces Round 894 (Div. 3) A-E cd 894 div3

news/2024/7/7 23:32:41/文章来源:https://www.cnblogs.com/qau-marisa3/p/18277395

A. Gift Carpet
每道题都是伸缩代码框有ac代码请不要漏掉
--------------------------题解-----------------------------
按先行便然后列再变循环 设置jud每满足一个条件就让jud++ 只有jud==相应值的时候才让其++

点击查看代码
#include<bits/stdc++.h>
using namespace std;
char a[30][30];
int main()
{int t;cin>>t;while(t--){int n,m;cin>>n>>m;int jud=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}for(int j=1;j<=m;j++){for(int i=1;i<=n;i++){if(jud==0&&a[i][j]=='v'){jud++;break;}if(jud==1&&a[i][j]=='i'){jud++;break;}if(jud==2&&a[i][j]=='k'){jud++;break;}if(jud==3&&a[i][j]=='a'){jud++;break;}}}if(jud==4) cout<<"YES"<<'\n';else cout<<"NO"<<'\n';}
}

B. Sequence Game

这题题意比较难理解,总的来说就是B的数列是A中 a[i]>=a[i-1]的数据现在让你根据B数列构造一个可能的A数列出来

--------------------------题解-----------------------------------------

经过长时间观察后我得出,只需要遍历B数列,如果看到一个b[i]<b[i-1]就说明原数列在这个地方不符合a[i]>=a[i-1]的要求,因此我们按照以下方法构造

b[i]>=b[i-1]则照抄b数列,不符合该要求时便多构造一个b[i-1]使他在原数列中符合要求 按照我的方法模拟一遍然后你输出构造的数列你就差不多懂了

可以在根据 (a[i]>=a[i-1]便放进b数列中这个要求检验一下看看是不是原先的B数列)

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=4e5+10;
int a[N];
int b[N];
int main()
{int t;cin>>t;while(t--){int n;cin>>n;for(int i=1;i<=n;i++) cin>>a[i];int cnt=1;b[1]=a[1];for(int i=2;i<=n;i++){   if(a[i]<a[i-1]){cnt++;b[cnt]= a[i];}cnt++;b[cnt]=a[i];}cout<<cnt<<'\n';for(int i=1;i<=cnt;i++){cout<<b[i]<<" ";}cout<<'\n';}
}

C. Flower City Fence

这题题意更是重量级的难懂,我大概概括一下,先给你一个如图一样排列的阶梯,然后你把这个阶梯按题目要求翻转(大的在下小的在上)然后再把翻转后的台阶看成一个全新的台阶,重新划分第1,2,3...阶梯把他们的高度统计出来,看他们的高度是否与未翻转的台阶相同(结合图理解)

---------------------------------------------------题解-------------------------------------------
首先我们要先记住题目给你的台阶一定是非递增数列也就是a[i+1]<=a[i] 加入有5个台阶 高度为6 6 6 6 6 把他们横过来之后 他们就会变成 5 5 5 5 5 5不符合要求由此我们可以看出每个台阶的高度都会对翻转

后的台阶高度做出一定贡献(也可能不做主要是看他翻转前的高度) 高度为x便可以对翻转后高度1~x的阶梯高度有1的贡献,所以我们可以得出一个结论 如果最大的a[1]>n的时候,该阶梯翻转之后是必然不可能和之前一样

的 比如n=1 a1=6 翻转后会变成 1 1 1 1 1 1.理解这块后就好做了我们枚举每一个点判断翻转后本应该最后对这个点做出贡献的x柱子(由于单调递减只要他做出了贡献他前面的也做出了贡献)有没有做到贡献以及x+1

个柱子是不是没有做到贡献(没有做到就对了) 可能比较难理解,建议反复读题和观看代码

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+10;
int a[N];
signed main()
{int t;cin>>t;while(t--){int n;cin>>n;int jud=0;for(int i=1;i<=n;i++) cin>>a[i];![](https://img2024.cnblogs.com/blog/3418807/202407/3418807-20240701085937602-1590934993.png)if(a[1]>n) jud=1;a[n+1]=0;a[0]=0;if(jud==0){//这个if也要注意不然会数组越界,此题有更简单和暴力的办法,但我赛中只想到了这个for(int i=1;i<=n;i++){if(a[a[i]]<i||a[a[i]+1]>=i) jud=1;//判断翻转后该位置柱子是否准确的被翻转前的柱子做到了贡献}}if(jud==1) cout<<"NO"<<'\n';else cout<<"YES"<<'\n';}
}

D. Ice Cream Balls

我不擅长的数学题,但总体难度不难主要考察二分,能看到这里的想必都是高手了,我会说的简单一点主要,分享一下我的推导思路

--------------------------------题解--------------------------------------
由题意我们知道这里面有一个数论原理,我简单解释一下,比如我们要凑出6种双球(以下统称sq单球统称dq),答案是 4
我们这么看第一个球可以和第2 3 4 个凑

第二个可以和3 4个凑

第三个可以和第4个凑
第4个没得凑
我们便可以列出这样的公式

x-1
+
x-2
+
x-3
+
x-4
=n
此时x为4 n=6便是正确答案
把这几个公式加起来可以简化成x*(x-1)/2==n
我们利用这个公式便可以进行二分
这是这题的第一个关键点

题目中说了需要正好能凑出n种双球我们拿n=179举例 这个样例你按照我的公式二分之后 l=19,我们是二分出来按照公式后得出来的最大但是绝对不超过n的一个数字便是19

然后19能正好凑出171种 但题目问的是需要几个球,因此可以买重复的凑成类似(1,1)(2,2)的sq 所以我们要在19的基础上再重复买(179-171)种球 19+8加起来便是27个与题目一答案一样
二分出来的并不是直接答案
这是第二个关键点

点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
ll check(ll q)
{//if(q*q-((1+q)*(q/2))==n) return 3;if(q*(q-1)/2>n) return 1;else return 0;}
int main()
{ll t;cin>>t;while(t--){cin>>n;if(n==1) cout<<2<<endl;else{//  x*x-1+x=nll l=1,r=3e9;while(l<r){ // cout<<l<<endl;ll mid=(l+r+1)/2;//   cout<<mid<<endl; if(check(mid)==0) l=mid;else r=mid-1;}//  cout<<l<<'\n';ll sum=0;sum=l*(l-1)/2;//cout<<sum<<endl;//sum=sum-(l-1);cout<<l+(n-sum)<<'\n';}}
}

E. Kolya and Movie Theatre

能看到这里的也是高手了,我就不赘述了,说得简单一点,这道题赛中时间不够了不然我就上大分了

这题总体不难主要考察数据结构和枚举,我们要枚举每一个 a[i]作为最后一个点(这里会影响减去了多少个d)同时维护一个最大值,同时开一个优先队列(小的在前)用来维护所选的m个是否需要去掉,不论我们怎选所消耗掉的dcnt都只和最后一个点有关所以我们不用考虑太多,每次减少的cntd恒等于d*i,因此我们只需要关心a[i]本身的大小就好..队列内部元素数量不足m时候主要是正数就入队切加入sum,队列元素>=m时候就判断是否需要把最小的移除

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
ll a[N];
int main()
{int t;cin>>t;while(t--){ll n,m,d;cin>>n>>m>>d;for(ll i=1;i<=n;i++) cin>>a[i];priority_queue <int,vector<int>,greater<int> >q;ll sum=0;ll ans=0;ll cnt=1;ll nl=0;for(ll i=1;i<=n;i++){   sum-=d;ll q1=q.size();if(q1<m){if(a[i]>0) sum+=a[i],q.push(a[i]);//      cout<<sum<<endl;}else{ll num1=q.top();if(num1<a[i]){sum=sum-num1+a[i];q.pop();q.push(a[i]);}}//   cout<<sum<<" "<<a[i]<<endl;ans=max(ans,sum);}cout<<ans<<'\n';}
}
/*
1
2 1 1
-1 2
*/

请各位看了之后大胆评论说一下感受,会根据各位的感受调整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/735631.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络隔离后 用这种安全U盘可实现数据安全传输

在网络隔离的环境下,尤其是物理隔离环境下,使用安全U盘进行数据传输可以被视为一种安全的方法。不过前提是要确保以下几点: 1、来源可信性:确保U盘的来源是可信的,没有被感染或篡改过的风险。最好使用自己的U盘,或者来自于安全可靠的来源。 2、扫描病毒:在使用U盘之前,…

AI引到学习前端开发

假设你是一位前端技术开发专家,我有几个JavaScript的问题想向你咨询 我想用JavaScript来做微信小程序开发,请以表格的方式输出知识要点 请叙述JavaScript操作浏览器对象的常用接口和方法 把上述表格按照访问对象归类 将上述文字制作一个表格来呈现,要求逻辑清晰描述信息简明…

U-KAN环境搭建推理测试

​引子 U-Net的鼎鼎大名,我觉得无需我多言了。图像分割和扩散概率模型的基石。作者探索了KANs在改进视觉任务 Backbone 网络方面的未开发潜力。作者研究、修改并重新设计已建立的U-Net Pipeline ,通过在标记化的中间表示上整合专用的KAN层,称之为U-KAN。严格的医学图像分割基…

飞驰云联Ftrans数据安全摆渡系统有哪些优点?

数据安全摆渡系统通常是指一种专门设计用来在网络隔离环境下,安全传输数据的系统或服务,通常被那些需要在不同系统、网络或地理位置之间安全传输敏感数据的企业和组织广泛使用。以下是一些主要应用数据安全摆渡系统的企业类型: 金融服务机构:银行、证券公司、保险公司等需要…

关于 VuePress 的主题

什么是主题?读者对主题这个单词应该不陌生,例如大部分 APP 都支持白天主题和夜晚主题等,使用者可以很轻松的切换主题等等。VuePress 中也有类似的概念。什么是主题?读者对主题这个单词应该不陌生,例如大部分 APP 都支持白天主题和夜晚主题等,使用者可以很轻松的切换主题等…

中台框架模块开发实践-用 Admin.Core 代码生成器生成通用代码生成器的模块代码

之前分享中台 Admin.Core 的模块代码生成器,陆续也结合群友们的反馈,完善了一些功能和模板上的优化,而本篇将基于此代码生成器生成一个通用代码生成器模块的基本代码 后续再在此代码的基础上进行完善,制作一个通用的代码生成器前言之前分享中台 Admin.Core 的模块代码生成器…

Java助力加固Excel文件,保障数据安全

前言 Excel文件保护是常用的一种功能,文件保护主要有三种:添加密码,如果没有密码不允许打开文件。 添加密码,如果没有密码,不能修改文件,但可以打开,只读以及另存文件。 只读推荐,通常推荐打开Excel文件的用户使用只读模式打开,这种方式仅是一种提示,并非强行保护文件…

AI Agent实战:智能检索在Kingbase数据库管理中的优势应用

虽然在开发过程中遇到了不少技术挑战,但最终我成功构建了一个针对金仓数据库的社区检索咨询助手。这个助手不仅解决了普通web搜索无法满足特定数据库问题的需求,还提高了我解决问题的效率和质量。在未来的工作中,我将继续优化这个助手,使其更加智能和强大。前言 在信息技术…

buck电路中的元件参数计算

目前市面上的电容种类繁多,在为我们的电源电路选择输入输出电容的时候难免会挑花了眼。本文就来浅析一下如何选择输入输出电容及其相关的计算。如有问题,欢迎指正。 1. 电源电路常见电容分类 以下罗列了几种电源电路中常见的电容种类及其特点,以供参考。image724610 26.3 KB…

Go:深入解析internal/race包,数据竞争检测的

Go:深入解析internal/race包,数据竞争检测的利器 原创 王义杰 AI学者王义杰 2024-05-17 21:14 广东 1人听过在 Go 语言中,internal/race 包是用于支持数据竞争检测的内部包。数据竞争(data race)是并发编程中常见且棘手的问题,通常发生在多个 goroutine 并发访问共享变量…

Gaming Dongle Feature Application Note

References:Gaming Dongle Feature Application Notedongle发送给headset的spp指令格式(PS:这部分指令的的接收可以在headset的app_dongle_spp_cback函数看到,但在dongle部分的发送指令源码似乎在sdk中看不到Σ(っ Д ;)っ) 功能实现函数 headset部分 // headset和dongle连接…

Notepad++无法设置中文简体

1、菜单栏点击“Settings”,在菜单中找到“Preferences”,然后点击。点击General选项,再在localization(界面语言) 选择中文简体。到这我们就可以将中文设置出来了。setting》》Preferences》》General》》localization》》选择中文简体 2、异常设置后无效。在Notepad++软件…

乌班图Ubuntu 24.04 SSH Server 修改默认端口重启无效

试用最新的乌班图版本,常规修改ssh端口,修改完毕后重启sshd提示没有找到service,然后尝试去掉d重启ssh后查看状态,端口仍然是默认的22,各种尝试都试了不行,重启服务器后倒是端口修改成功了,心想着不能每台机器都重启吧。百思不得其解后查看官网相关(机翻)意思就是22.1…

乌班图Ubuntu 24.04初始化MySQL报错error while loading shared libraries: libaio.so.1

由于乌班图24.04 LTS已经发布了,因此准备新业务逐步往这上面迁移,毕竟支持有效期比22.04更长 准备在24.04上进行MySQL的初始化,因为习惯自定义安装存储目录,所以使用mysql-8.0.37-linux-glibc2.28-x86_64.tar.xz这个最新的二进制版本。按照22.04版本整理的安装笔记进行操作…

开源一款基于 Typecho 开发的博客主题

主题介绍 WaterDrop 是 水滴 的意思,其实并没有什么特殊含义,只是因为每一次项目取名都绞尽脑汁,太麻烦了,于是就想着效法一些大佬,干脆取名随性一点。例如,Java 语言因作者经常在办公室喝 Java 咖啡而得名,MySQL和MariaDB的作者是同一人,命名分别是他两个女儿的名字(…

sqli-labs基础篇(1-22)

‍ less-1 字符型 判断是否存在sql注入​?id=1 and 1=1 --+​ ​​​?id=1 and 1=1 --+​ ​​​?id=1 and 1=2 --+​ ​​说明存在sql注入,并且注入类型为字符型注入 联合注入先判断列数​?id=1 order by 3 --+​有回显 ​​​?id=1 order by 4 --+​报错 ​​说明列数为…

C#/.NET/.NET Core优秀项目和框架2024年6月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项…

[转载]程序员自由创业周记:我曾走在崩溃的边缘

给大家推荐一本书 《我曾走在崩溃的边缘》讲的是俞敏洪讲述新东方从0到1、从1到N的创业历程。很久以前就看过,虽然书中的内容已经忘得基本差不多了,但是书名仍记忆犹新。因为刚过去的这周,我也走在崩溃的边缘。 原因是因为我的大意,导致过去两个月创业的收入付之一炬。本来…

关闭jenkins哪些没用的监控提示。界面清爽许多

1、关闭插件提醒找到如下位置:系统管理-系统配置-管理监控配置 根据需要适中禁用相关监控,2、关闭安全警告提醒找到如下位置:系统管理-全局安全配置-隐藏的安全警告经过两个基本设置,瞬间界面清爽许多。如下 :