牛客周赛85 DEF

news/2025/3/17 16:59:57/文章来源:https://www.cnblogs.com/benscode/p/18777175

不行了,活不了了
我怎么那么菜:(

D

题意:

枚举1~n的前缀将其删除后,问是否能选定一个后缀使其删除后序列变为双生串

思路:

这题暴力能过你敢信?

void solve(){int n;cin>>n;string s;cin>>s;s=" "+s;int cnt=0;for(int i=1;i<=n;i++){int cur=0;for(int j=i+1;j<=n;j++){if(s[j]=='0')cur^=1;else cur^=2;if(cur==0){cnt++;break;}}}double ans=cnt*1.0/n;cout<<fixed<<setprecision(15)<<ans<<endl;
}

说是01串状态太少O(n方)实际是O(n)
吐了🤮
后来写出真正O(n)的解:
对于字符串的每一位先预处理记录其前缀拥有的0,1子串的奇偶情况
0->00:0偶,1偶
1->01:0偶,1奇
2->10:0奇,1偶
3->11:0奇,1奇
用二进制数来代替状态
将4个状态数存在一个表中
当真正要删除前缀时,枚举1~n
当此时的状态在表中至少有两处存在,(比如此时:0偶,1偶,后面也有0偶,1偶的状态)
说明将其删除后,可以通过删除后缀达成条件
注意答案精度要15位小数点

map<int,int>mp;
void solve(){int n;cin>>n;string s;cin>>s;int prea=0,preb=0;for(int i=0;i<n;i++){prea+=(s[i]=='0')?1:0;preb+=(s[i]=='0')?0:1;int p=prea%2,q=preb%2;int state=(p<<1)+q;mp[state]++;}prea=0,preb=0;int cnt=0;for(int i=0;i<n;i++){prea+=(s[i]=='0')?1:0;preb+=(s[i]=='0')?0:1;int p=prea%2,q=preb%2;int state=(p<<1)+q;mp[state]--;if(mp[state]>0){cnt++;}}double ans=cnt*1.0/n;cout<<fixed<<setprecision(15)<<ans<<endl;
}

E

构造,发现当一处有至少三条线段相交时一定不满足涂色条件
所以至多有两条线段相交
把紫色线段和红色线段的编号分别存在两个集合A,B中
我们尽可能多地能涂紫就涂紫
发现当前遍历到的线段左端点比紫色线段最大右端点小后,这就相交了,于是就要把它涂成红色
能不能涂成红色呢?同样的,如果它的左端点比红色线段最大右端点小,那么也相交,输出-1退出
反之,就把它放到红色线段集合中
实现方面主要需要按左端点为第一关键字排序,然后才是右端点
顺便一提,数据好像也是水的,直接把集合A,B最末尾的线段右端点当作两个集合的最大右端点也能过

struct node{int l,r;int id;bool operator<(const node& a)const{if(a.l!=l)return l<a.l;return r<a.r;}
};
void solve(){int n;cin>>n;vector<node>interval(n);for(int i=0;i<n;i++){cin>>interval[i].l>>interval[i].r;interval[i].id=i+1;}sort(interval.begin(),interval.end()); vector<pii>a,b;int ar=0,br=0;a.pb({interval[0].r,interval[0].id});ar=interval[0].r;for(int i=1;i<n;i++){int left=interval[i].l;if(left>ar){a.pb({interval[i].r,interval[i].id});ar=max(ar,interval[i].r);}else{if(!b.size()){b.pb({interval[i].r,interval[i].id});br=interval[i].r;}else{if(left<=br){cout<<-1<<endl;return;}else{b.pb({interval[i].r,interval[i].id});br=max(br,interval[i].r);}}}}cout<<a.size()<<endl;for(int i=0;i<a.size();i++){cout<<a[i].se<<' ';}
}

F

题意:

染色至多k个节点,问最大连通块的最小值

思路:

二分最大连通块的大小,如果check到了,说明还能更小,否则需要更大
check函数的具体逻辑:
我们至多用k次机会让一个节点染色,所以贪心的想从根往下深搜,当当前节点u的连通块大小:cnt[u]大于了mid,说明要耗费一次机会让其cnt[u]=0(即染色)
(意思其实是贪心从叶子节点往上的节点如果大于mid直接染色,不过连通块代码是dfs因此无法这样至底向上实现)
看是否需要染色的节点数大于k

vector<int>e[maxn];
int cnt[maxn];
int need,n,k;
void dfs(int mid,int u,int fa){for(int v:e[u]){if(v==fa)continue;dfs(mid,v,u);cnt[u]+=cnt[v];}if(cnt[u]>mid){need++;cnt[u]=0;}
}
bool check(int mid){for(int i=1;i<=n;i++)cnt[i]=1;dfs(mid,1,0);if(need>k)return false;return true;
}
void solve(){cin>>n>>k;for(int i=1;i<=n-1;i++){int u,v;cin>>u>>v;e[u].pb(v);e[v].pb(u);}int l=0,r=maxn;int res=0;while(l<=r){int mid=l+r>>1;need=0;if(check(mid)){r=mid-1;res=mid;}else{l=mid+1;}}cout<<res<<endl;
}

我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....我好菜.....

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

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

相关文章

通过C#转换图片到PDF文档

将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片。此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露。本文将介绍如何将JPG/PNG图片转换为PDF文档。C# 将单张图片转换为PDF文档 C# 将多张图片转换到一个PDF文…

使用Istio灰度发布

目录灰度发布1. Istio1.1 Istio介绍1.2 Istio是如何工作的2. 安装Istio2.1 环境2.2 得到二进制文件2.3 安装istio3. 部署bookinfo模拟业务3.1 v1页面3.2 v2页面3.3 v3页面4. 模拟灰度发布4.1 业务版本v24.2 灰度发布到v3版本5. Kiali5.1 安装普罗米修斯5.2 修改svc类型 灰度发布…

304跳转如何避免

1.什么是304跳转 当浏览器发起请求时,如果资源(index.html或者js)没有改变(例如文件没有被修改),服务器就会返回 304 状态码,表示该资源自上次请求以来没有被修改过,客户端可以继续使用本地缓存的副本,而不需要重新下载资源。 2. 如何避免304跳转 2.1 如果是nginx代理# …

LiveGBS国标GB28181国标平台分布式集群部署 以及多服务器动态负载均衡的技术方案在智慧工地、平安城市、智慧交通、智慧城市、交通枢纽、跨区域联网监控视频平台等大型视频流媒体项目如何实现

@目录1、大型容灾GB28181国标流媒体服务1.1、需求背景1.2、高可用分布式方案2、方案详解2.1、 百万路视频接入2.2、几百上千路高并发请求播放2.3、信令服务主备方式 1、大型容灾GB28181国标流媒体服务 1.1、需求背景 大型视频监控平台项目的常见需求高并发 高可用性 容灾备份 跨…

变量、常量及其初始化和命名规范

变量:public class HelloWorld250316 { //实例变量 从属于对象,如果不自行初始化,这个类型的默认值 0 0.0 u000,布尔类型默认false //除了基本类型,其余的默认值都是null String name; int age; public static void main(String[] args) { int a=10; System.out.println(a…

必剪使用指南

必剪使用指南 目录必剪使用指南下载快捷键文件剪辑编辑显示标记下载 必剪官网:https://bcut.bilibili.cn/.快捷键 文件新建草稿:ctrl + n 保存草稿:ctrl + s 导入:ctrl + i 导出:ctrl + e 退出:ctl + q剪辑分割工具:c 选择工具:v 分割:x编辑复制:ctrl + c 剪切:ctrl…

python运算注意点

1、整除// 9//2得出为4,被除数在前。 取余% 9%2得出1 2、round()函数,表示四舍五入,奇进偶不进 例:round(3.5)为4 round(6.5)为6 3、赋值 多变量赋值,直接用,隔开。 赋值加运算(先运算再赋值,也就是先乘2*3=6,直接赋值给b)4、逻辑运算符有一种优化机制,短…

Bernoulli Equation

伯努利方程 伯努利方程并非一个独立的定律,而是在不同条件下由 Navier-Stokes 动量方程(式1)和能量方程(式2)推导而来的。 \[\rho\left(\frac{\partial u_{j}}{\partial t} + u_{i}\frac{\partial u_{j}}{\partial x_{i}}\right)=-\frac{\partial p}{\partial x_{j}}+\rho…

社区演讲-基于.NET 技术栈的研发过程管理和智能化探索

Hi all 2024年11月23日,我作为【项目管理实践探索者大会】专题讲师,给社区分享了主题《基于.NET 技术栈的研发过程管理和智能化探索》 现场参与人数:100+ 演讲议题介绍: 体系建设:如何设计一个合适的研发过程管理体系 平台提效:通过.NET技术构建任务驱动+流程驱动,释放研…

halcon 深度学习教程(二)halcon基于深度学习的OCR检测

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18777081深度学习教程目录如下,还在继续更新完善中 深度学习系列教程目录 本篇非常简单,但是非常好用的OCR识别,传统的OCR识别方法一大堆各种各样的操作,麻烦的要死。halcon 22版本开始支持深度学习OCR,并且…

[ SpringMVC ] SpringMVC如何通过是否有@RestController注解来判断返回ModelAndView还是Json

引言之前在面试的遇到面试官问我SpringMVC的执行流程,我那时候回答的是SpringMVC的DispatcherServlet的dodispatch方法找到ControllerMethod之后将返回值通过convert成Json返回响应体,事后想了一下回答的其实并不正确,因为SpringMVC之前学习的时候有使用ModelAndView返回视图,我…

从HR+AI到AI+HR,企业人力资源AI进程已过半

一、人力资源管理智能化应势而上,核心价值受企业管理层肯定 过往各项研究表明,AI 已经被广泛应用于企业经营的各个环节中。根据易路于2023 年发布的《AI 在企业人力资源中的应用白皮书1.0》(以下简称《白皮书1.0》),我们可以明确感受到:AI 已不同程度应用于招聘管理、员工…