偷懒的西西【推荐】

题目:

Description
高三数学作业总共有n道题目要写(其实是抄),编号1..n,抄每道题所花时间不一样,抄第i题要花a[i]分钟。由于西西还要准备NOIP,显然不能成天做数学作业。所以西西决定只用不超过t分钟时间抄这个,因此必然有空着的题。每道题要么不写,要么抄完,不能写一半。一段连续的空题称为一个空题段,它的长度就是所包含的题目数。这样应付自然会引起数学老师的愤怒。数学老师发怒的程度(简称发怒度)等于最长的空题段长度。
现在,西西想知道他在这t分钟内写哪些题,才能够尽量降低数学老师的发怒度。由于西西很聪明,你只要告诉他发怒度的数值就可以了,不需输出方案。(Someone:那么西西怎么不自己写程序?西西:我还在抄别的科目的作业……)
Input
第一行为两个整数n,t,代表共有n道题目,t分钟时间。
以下一行,为n个整数,依次为a[1], a[2],... a[n],意义如上所述。
Output
仅一行,一个整数w,为最低的发怒度。
Sample Input
17 11
6 4 5 2 5 3 4 5 2 3 4 5 2 3 6 3 5
Sample Output
3
Data Constraint
Hint
样例解释
分别写第4,6,10,14题,共用时2+3+3+3=11分钟。空题段:1-3(长度为3), 5-5(1), 7-9(3),
11-13(3), 15-17(3)。所以发怒度为3。可以证明,此数据中不存在使得发怒度<=2的作法。
数据范围
60%数据 n<=2000
100%数据 0<n<=50000,0<a[i]<=3000,0<t<=100000000

题解&总结:

二分答案。
判断答案是否合法。

怎么判断呢?
贪心显然不行。
那就用DP吧。

我们现在要判断二分出来的最大间隔(愤怒值)是否合法。

我们设fi表示做到第i个作业,且做了第i个作业的最小时间。

转移方程显然:fi=min{fj}  j=[i-x-1..i-1]  因为上一次做的作业与这一次间隔不能超过x。

答案显然为ans=max{fj}  j=[n-x..n]

但是,如果直接这样DP,会时超60分。
所以我们需要加优化。

我们可以发现,转移中的fi=min{fj}  j=[i-x-1..i-1] 可以不需要枚举都枚举j。
其实只要维护一个区间内的最小值就可以了。

我们每次把fi-x-2丢出区间,然后得到fi后把fi加入区间。

维护区间的最小值,用堆和线段树都可以。

我是用堆维护的,比赛时调了很久,
因为要开两个数组记录堆里面的位置与f数组里面的位置的对应关系。
然后打着打着自己都差点被自己绕晕了。

当然,也可以用奇奇怪怪的单调队列来优化。
听说这题可以当做单调队列的例题。
有兴趣的可以去学学。


这题(第一题)堆维护调了近两个小时。

第一题要不惜一切代价做对。
这是我比赛的原则。
也符合很多大型比赛的套路。
大型比赛第一题都最水。
如果大型比赛的第一题都做不对那还是回家睡觉吧。


内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问,采用Redis预减库存、消息队列削峰、据库乐观锁等手保障据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各件协作原理,真正掌握高并发微服务系统的构建能力。
<think>嗯,用户这次想了解Jupyter Notebook提高效率的便捷方法。从用户描述"偷懒"这个词来看,ta需要的应该是那些能节省时间、减少重复操作的小技巧。 参考站内引用材料,我注意到几个关键点:Jupyter是网页形式的交互式笔记本,支持实时代码和文档编写[^2][^3]。用户可能经常要在代码和文档间切换,所以高效操作很重要。 我想到几个实用技巧:首先是快捷键系统,这是直接的效率工具。比如命令模式下按A/B快速增删单元格,不用鼠标点来点去。还有魔法命令,像%timeit这种一行代码就能测试性能。另外自动补全和文档查询也很实用,按Tab就能补全变量名,省去打字时间。 用户提到"偷懒",可能还指不想写重复代码。所以代码片功能推荐,保存常用代码块随取随用。另外安装扩展工具也能极大提升效率,比如变量管理器、目录插件等。 考虑到用户可能是据分析师或研究人员,我特意加入调试技巧和导出功能。毕竟在处理据时快速定位错误很重要,而导出功能方便成果分享。 后补充了扩展插件推荐,因为安装jupyter_contrib_nbextensions后能获得几十种效率工具,比如代码折叠、执行进度条等,这对长期使用Jupyter的用户会是质的提升。 在回复织上,我把常用的快捷键放在前面,然后是代码相关技巧,再到高级功能。这样从基础到进阶,用户可以根据自己需求选用。所有技巧都确保能在默认环境中使用,避免推荐需要复杂配置的方案。 </think>在Jupyter Notebook中提高效率的便捷方法主要包含以下技巧,涵盖快捷键、魔法命令和实用功能: --- ### ⚡ 一、核心快捷键(命令模式按 `Esc`,编辑模式按 `Enter`) | **功能** | **快捷键** | |------------------------|---------------------| | 插入上方单元格 | `A` | | 插入下方单元格 | `B` | | 删除单元格 | `D` `D`(连按两次)| | 切换代码/Markdown | `Y` / `M` | | 运行当前单元格 | `Ctrl + Enter` | | 运行并跳转到下一单元格 | `Shift + Enter` | | 查找替换 | `Ctrl + F` | > 💡 按 `H` 可查看**完整快捷键列表**[^3] --- ### 二、魔法命令(Magic Commands) 1. **文件操作** ```python %cd D:/project # 切换工作目录 %ls # 查看当前目录文件 ``` 2. **代码性能分析** ```python %%timeit # 测量代码运行时间 [x**2 for x in range(1000)] ``` 3. **外部脚本加载** ```python %load script.py # 将外部代码导入单元格 ``` --- ### 🚀 三、高效编码技巧 1. **自动补全** - 输入变量名后按 `Tab` 显示补全选项 - 函后按 `Shift + Tab` 查看文档(按多次展开详情)[^3] 2. **多光标编辑** `Alt + 鼠标点击` 创建多个光标 3. **代码片快捷输入** 输入 `def` → 按 `Tab` 自动生成函模板 --- ### 🔧 四、扩展工具(需安装 `jupyter_contrib_nbextensions`) 1. **目录生成**:自动为长笔记本创建导航目录 2. **变量检查器**:实时监控变量类型和 3. **代码折叠**:折叠函/循环提升可读性 > 安装命令: > ```bash > pip install jupyter_contrib_nbextensions
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值