codeforces 1504 div3

news/2025/9/26 9:22:51/文章来源:https://www.cnblogs.com/yuwj/p/19112517

codeforces 1054 div3

D

就是枚举最后答案的所有可能就好了,aba,bab ...

赛时没想到怎么算花费,结果在这题上码死了,

这种花费真心不擅长算,只知道批处理,子数组思维,没有动态的思路,这个就很动态

但是我就是不会算

赛时想的是前一半是 正 + 负, 后一半是负 + 正,找位置二分求和当前下标,然后根据上面划分计算两边花费,就是前缀和的问题,从中间位置开始

然后就si了,

int work(char ch){vector<int> pos;For(i,1,n) if(s[i] == ch) pos.pb(i);m = pos.size();if(m <= 1) return 0;vector<int> pre(m+1),newpos(m+1); // pos[k] ~ i + k - 1For(i,1,m) pre[i] = pre[i-1] + pos[i-1];For(i,1,m) newpos[i] = pos[i-1] - i;int res = LLONG_MAX;For(i,1,n-m+1){k = upper_bound(newpos.begin()+1,newpos.end(),i-1) - newpos.begin() - 1;int cost = 1ll*k*i + 1ll*(k-1)*k/2 - pre[k] + pre[m] - pre[k] - 1ll*(m-k)*(i-1) - (1ll*m*(m+1)/2 - 1ll*(k+1)*k/2);res = min(cost,res);}return res;
}void Solve(){cin >> n >> s, s = " " + s;int ans = min({work('a'), work('b')});cout << ans << '\n';
}

以下是 xll 的计算花费的方式,%%%

同样是枚举所有数组,但是先移到最左边作为base花费,然后从最左边一个个移动到最右边计算花费

int work(char ch){int tot = 0, res = 1e18;vector<int> pos;For(i,1,n) if(s[i] == ch) {pos.pb(i);tot += i - pos.size(); // 移到最左边花费 // cerr << i << ' ' << pos.size() << '\n';}res = min(res,tot);m = pos.size();for(int i=m;i>=1;--i){ // 每次移动一个到达最右边tot += n - m + i-pos[i-1] - (pos[i-1] - i);res = min(res, tot);}return res;
}void Solve(){cin >> n >> s, s = " " + s;// cout << work('a') << '\n';cout << min(work('a'), work('b')) << '\n';
}

E

经典恰好容斥计数吧,滑窗统计子数组符合条件的数量,然后就没有然后了

长度在区间 [l,r] 内恰好存在 k 种数字的区间个数

f(x,k) 长度至多为 x 的,至多 k 种类数 的区间个数

ans = f(r,k) - f(r,k-1) - (f(l-1,k) - f(l-1,k-1))

限制长度的滑窗子数组计数,用左端点收区间,然后计算所有有效右端点的贡献就是了

void Solve(){cin >> n >> k >> l >> r;vector<int> num(n+1);For(i,1,n) cin >> num[i];auto f = [&](int Len,int k)->int{map<int,int> cnt;int l = 1, kind = 0, res = 0;For(r,1,n){if(++cnt[num[r]] == 1) ++kind;while(kind > k ) {if(--cnt[num[l++]] == 0) --kind;}int minL = max(l, r - Len + 1);if (minL <= r) res += (r - minL + 1);}return res;};cout << f(r,k) - f(r,k-1) - (f(l-1,k) - f(l-1,k-1)) << '\n';
}

F

防到了 fjust 老学长AK的题,我能做出来吗

显然二分,但是怎么 check,无了

xll %%%

二分休息次数,每次休息就从1开始走一段,产生连续花费,尽可能走更多的连续段,

中间分开休息 Mid 次,与最开始一共休息 Mid 次没有区别,

最后只要查看血量是否能撑住这些段活下去就行了

由于段长和段的数量都知道了,且尽量让每一段更长,所以计算方式就很清晰了

先平分所有段,然后剩下的就分配到平均段长 +1,产生对应花费就行了

void Solve(){cin >> m >> n; // m 点生命值,到达 n 点if(m==1) return cout << n*2 << '\n', void();--m;auto check = [&](int mid) -> bool{int t = n/(mid+1);x = n % (mid+1), y = mid + 1 - x;ll tot = (t+1)*(t+2)/2*x + t*(t+1)/2 * y;return tot <= m + mid;};int l = 0, r = n,mid, ans;while(l <= r){mid = (r+l) >> 1;if(check(mid)) r = mid - 1, ans = mid;else l = mid+1;}cout << l + n << '\n'; // 基础走 n 步,再最少休息 l 步
}

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

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

相关文章

React 基础核心概念(8 个)——从入门到能写业务组件(上)| 葡萄城技术团队

React 基础核心概念(8 个)——从入门到能写业务组件(上) 前言:为什么要先掌握这些基础概念? 对国内开发者来说,React 是开发中后台系统、电商前端、移动端 H5 的“刚需技能”。但很多人刚学就陷入“会写 JSX 却…

2 day - when

第二天嘿嘿 从今天开始应用一些方法 法一、链式时延协议(嘿嘿这个时延还有协议真的很容易让人联想到计网,很喜欢计网老师) 有两条任务链为主链和辅助链。启用时,可以启用辅助链,预约一个信号:摘下眼镜并给小号发…

玄武建设局网站网页设计方案

NoSQL数据库&#xff1a;数据的一致性 读取一致性 强一致性 在任何时间访问集群中任一结点&#xff0c;得到的数据结果一致&#xff1b; 用户一致性 对同一用户&#xff0c;访问集群期间得到的数据一致&#xff1b; 解决用户一致性&#xff1a;使用粘性会话&#xff0c;将会话…

可以将自己做的衣服展示的网站网站的流量建设

文章目录 0 前言1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径&#xff0c;图像尺寸&#xff0c;数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

网站怎么更新数据重庆网架加工厂

华子目录 概念工作流程工作图流程&#xff08;按行处理&#xff09; awk程序执行方式1.通过命令行执行awk程序实例 2.awk命令调用脚本执行实例 3.直接使用awk脚本文件调用实例 awk命令的基本语法格式BEGIN模式与END模式实例awk的输出 记录和域&#xff08;记录表示数据行&#…

机械网站开发铁路局招聘正式工4000人

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

协会网站建设计划书工商局网站怎么做股东实名认证

1. 题目 给定一个整数序列&#xff1a;a1, a2, …, an&#xff0c;一个132模式的子序列 ai, aj, ak 被定义为&#xff1a;当 i < j < k 时&#xff0c;ai < ak < aj。 设计一个算法&#xff0c;当给定有 n 个数字的序列时&#xff0c;验证这个序列中是否含有132模…

网站主持人制作网站代言人asp 网站开发 软件

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

实用指南:轻松玩转Swagger API文档神器

实用指南:轻松玩转Swagger API文档神器pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

记录java调用eclipse cdt 解析c++文件

环境: jdk1.8 eclipse cdt 9.11.1 需求: java 解析c++中的类,属性类型,属性名称,函数,函数参数,返回值。 注意点: 如果你是外网编码,移植依赖和代码到内网的时候 运行可能出现 class not found xxxx , 这…

Chormium 密码管理器表单结构体说明(基于Chromium138)

这个结构体(struct PasswordForm)是 Chromium 浏览器(以及所有基于 Chromium 的浏览器,例如 Chrome、Edge 等)中密码管理器用来存储和管理单个登录凭证(即一组用户名和密码)的核心数据结构。它不仅包含了用户名…

为什么人工智能选择Python?深入解析AI界的胶水语言

在人工智能(AI)的黄金时代,Python几乎"统治"了整个领域。从深度学习到机器学习,从学术研究到工业应用,Python无处不在。 但为什么是Python?为什么不是性能更强的C++、生态成熟的Java,或者其他现代语言…

惠安网站建设报价网站开发工程师招聘要求

有很多网友在问&#xff1a;TPlink路由器端口映射怎么设置&#xff1f;因为不懂端口映射的原理&#xff0c;所以无从下手&#xff0c;下面小编就给大家分享TPlink云路由器界面端口映射设置方法&#xff0c;帮助大家快速入门TP路由器端口映射设置方法。 1.登录路由器管理界面&a…

咸宁网站设计windows 上wordpress

上一篇中 我们详细讲了内存溢出 内存泄漏 还有相关的案例。 这篇博客中我们主要了解一下GC调优。 有些新手可能会有一点 疑问—— 这两者不是一回事吗&#xff1f;&#xff1f; 其实说一回事 也没错 因为GC调优本质上还是针对 堆上的内存 只不过前面我们关注的侧重点在于 不合…

模版网站有源代码吗注册公司代理费用多少钱

【vs2019】window10环境变量设置 【先赞后看养成习惯】求关注点赞收藏&#x1f60a; 安装VS2019时建议默认安装地址&#xff0c;最好不要改动&#xff0c;不然容易出问题 以下是安装完VS2019后环境变量的设置情况&#xff0c;C:\Program Files (x86)\Microsoft Visual Studi…

1 day(20250925) - when

第一天,好像时间还可利用的地方很多,其实是效率和时长都有待提升。 哇要做的事情都蛮复杂和多的,其实没那么难对吧,不过太多了,想要迈大步就变得不可能实现,而且迈大步总感觉会错过一些细节,不能够有底气。但是…

12分钟讲解Python核心理念

https://segmentfault.com/a/1190000047277781 12分钟讲解Python核心理念 本内容是对 Every Python Concept Explained in 12 Minutes 内容的翻译与整理。 Python之禅(The zen of Python) 当你在Python解释器中输入i…

【重要】什么是 PEP 8 规范

PEP 8 是 Python 官方的代码风格指南,全称为 Python Enhancement Proposal 8(Python 增强提案 8),旨在通过统一编码规范提升代码的可读性、一致性和可维护性。以下是其核心内容与重要性: 一、PEP 8 的核心规范代码…

实用指南:华为坤灵:点燃中小企业智能化的星火

实用指南:华为坤灵:点燃中小企业智能化的星火pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…