【NOIP2013模拟联考5】军训

使用 Python 和蒙特卡罗计算未来股价走势以及历史波动率和隐含波动率 蒙特卡罗模拟等工具使投资者能够洞察一系列潜在的未来。这远离了单纯的猜测,迈向了明智的、数据驱动的决策。 阅读详情

题目

HYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求:
1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。
2.每个学生必须要被分到某个班上。
3.每个班的欠扁值定义为该班中欠扁值最高的那名同学的欠扁值。所有班的欠扁值之和不得超过Limit。
4.每个班的女友指数定义为该班中所有同学的女友数量之和。在满足条件1、2、3 的情况下,分班应使得女友指数最高的那个班的女友指数最小。
请你帮HYSBZ 的教务处完成分班工作,并输出女友指数最高的班级的女友指数。
输入数据保证题目有解。

分析

要求最小的最大值,
很容易让我们想到想到二分。
那么二分ans,
定义fi表示,前i个人都分好班了,最小的欠扁值H为多少。
显然,如果fn<=limit,那么二分出来的ans是满足分班条件的。
那么怎么转移呢?,fi=min(fj+max(Hj+1,Hj+1,Hj+3......Hi))
但这样是O(N2)的,会超时,
那么我们就要像如何优化dp。
用个线段树来记录这个区间的

最大的h值mxh
最小的h值mnh
最小的f值mnf
还有答案mn,显然mn=mnf+mxh(方便而已)

接着随便搞搞就可以了。

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
using namespace std;
int f[25000],sum[27000],g[27000],h[27000],limit,n,m,ans;
int mxh[100000],mnh[100000],mnf[100000],mn[100000],lazy[100000];
int spread(int x,int y)
{
    if(!lazy[x])
        return 0;
    lazy[y]=max(lazy[y],lazy[x]);
    mxh[y]=max(lazy[x],mxh[y]);
    mnh[y]=mxh[y];
    mn[y]=mnf[y]+mxh[y];
}
int deeply(int v,int l,int r,int z)
{
    if(mxh[v]<z)
    {
        mxh[v]=mnh[v]=z;
        mn[v]=mnf[v]+z;
        lazy[v]=z;
        return 0;
    }
    if(l==r)
        return 0;
    spread(v,v*2);
    spread(v,v*2+1);
    lazy[v]=0;
    int mid=(l+r)/2;
    if(mnh[v*2]<z)
        deeply(v*2,l,mid,z);
    if(mnh[v*2+1]<z)
        deeply(v*2+1,mid+1,r,z);
    mn[v]=min(mn[v*2],mn[v*2+1]);
    mnf[v]=min(mnf[v*2],mnf[v*2+1]);
    mnh[v]=min(mnh[v*2],mnh[v*2+1]);
    mxh[v]=max(mxh[v*2],mxh[v*2+1]);
}
int change(int v,int l,int r,int x,int y,int z)
{
    if(l==x && y==r)
    {
        deeply(v,l,r,z);
        return 0;
    }
    spread(v,v*2);
    spread(v,v*2+1);
    lazy[v]=0;
    int mid=(l+r)/2;
    if(y<=mid)
        change(v*2,l,mid,x,y,z);
            else
                if(x>mid)
                    change(v*2+1,mid+1,r,x,y,z);
                        else 
                            change(v*2,l,mid,x,mid,z),change(v*2+1,mid+1,r,mid+1,y,z);
    mn[v]=min(mn[v*2],mn[v*2+1]);
    mnf[v]=min(mnf[v*2],mnf[v*2+1]);
    mnh[v]=min(mnh[v*2],mnh[v*2+1]);
    mxh[v]=max(mxh[v*2],mxh[v*2+1]);
}
int put(int v,int l,int r,int x,int z)
{
    if(l==r)
    {
        mxh[v]=mnh[v]=h[l];
        mnf[v]=z;
        mn[v]=mnf[v]+mxh[v];
        return 0;
    }
    spread(v,v*2);
    spread(v,v*2+1);
    lazy[v]=0;
    int mid=(l+r)/2;
    if(x<=mid)
        put(v*2,l,mid,x,z);
            else
                put(v*2+1,mid+1,r,x,z);
    mn[v]=min(mn[v*2],mn[v*2+1]);
    mnf[v]=min(mnf[v*2],mnf[v*2+1]);
    mnh[v]=min(mnh[v*2],mnh[v*2+1]);
    mxh[v]=max(mxh[v*2],mxh[v*2+1]);
}
int find(int v,int l,int r,int x,int y,int p)
{
    if(l==x && y==r)
    {
        f[p]=min(f[p],mn[v]);
        return 0;
    }
    spread(v,v*2);
    spread(v,v*2+1);
    lazy[v]=0;
    int mid=(l+r)/2;
    if(y<=mid)
        find(v*2,l,mid,x,y,p);
            else
                if(x>mid)
                    find(v*2+1,mid+1,r,x,y,p);
                        else 
                            find(v*2,l,mid,x,mid,p),find(v*2+1,mid+1,r,mid+1,y,p);
}
bool ok(int gg)
{
    memset(mxh,0,sizeof(mxh));
    memset(mnh,0,sizeof(mnh));
    memset(mnf,0,sizeof(mnf));
    memset(mn,0,sizeof(mn));
    memset(lazy,0,sizeof(lazy));
    f[0]=0;
    int j=1,ans;
    for(int i=1;i<=n;i++)
    {
        while(sum[i]-sum[j-1]>gg)
            j++;
        put(1,1,n,i,f[i-1]);
        change(1,1,n,j,i,h[i]);
        f[i]=maxlongint;
        find(1,1,n,j,i,i);
    }
    if(f[n]<=limit)
        return true;
            return false;
}
int rf()
{
    int l=1,r=sum[n];
    while(l<r)
    {
        int mid=(l+r)/2;
        if(ok(mid))
            r=mid;
                else 
                    l=mid+1;
    }
    printf("%d",l);
}
int main()
{
    scanf("%d%d",&n,&limit);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&h[i],&g[i]);
        sum[i]=sum[i-1]+g[i];
    }
    rf();
}
ICML-2025《Learning from Sample Stability for Deep Clustering》 用于指导深度聚类模型的训练,从而提升模型对困难样本的学习能力,最终改善整体聚类性能。首先,利用K-means在原始样本(非增强)的表征上进行聚类,得到初始聚类分配。其目的是鼓励模型对同一稳定样本在连续epoch中产生相近的表征。输出差异大)会产生更大的损失值,从而引导模型优先优化这些困难样本。此损失借鉴了NT-Xent损失的思想,但将正样本对定义为。最后,通过对比学习优化聚类中心,将同一聚类在。为了获得更具代表性的聚类中心,论文提出。为了学习更鲁棒的表征,模型在在线网络。首先,论文定义了样本。 阅读详情

相关推荐

Cherry Studio部署MCP服务报错全记录:从零解决‘Connection closed‘问题

本文详细记录了在Cherry Studio中部署MCP服务时遇到‘Connection closed’报错的完整排查与解决过程。文章从环境依赖(UV、Bun)的安装验证、绝对路径配置、网络镜像源设置,到服务端手动调试与Cherry Studio配置检查,提供了一套系统性的解决方案,帮助开发者彻底解决此类连接问题。

g9h0i1的博客 764

【NOIP2013模拟联考5】军训(training) 题解

原题DescriptionHYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求:1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。2.每个学生必须

lijf2001的博客 1521

机器人抓取(一)—— ROS MoveIt! 程序控制真实UR5机器人运动(python)

接上篇:ubuntu18.04 ros-melodic 安装 ur_robot_driver,驱动真实的 ur5 机器人 上文在 ubuntu 系统中配置了ur 机器人ros功能包 universal_robot 和驱动 Universal_Robots_ROS_Driver,并实现了用 moveit_rviz 拖动机器人运动。本文旨在学习如何使用 moveit python 用户接口moveit_commander,实现真实的ur5 机器人轨迹规划与控制。 1. ur5 机器人控制 参考:MoveIt »

zxxRobot的博客 1万+

JZOJ3456. 【NOIP2013模拟联考3】恭介的法则(rule)(2017.8B组)

https://jzoj.net/senior/#main/show/3456 想法: 要求找满足1/x+1/y=1/n!的对数(x,y) 即要求(x+y)/(x*y)=1/n!的对数 xy/(x+y)=n! xy=n!(x+y) 考虑通过x求y xy=n!x+n!y -n!x=n!y-xy n!x=xy-n!y n!x=(x-n!)y n!x/(x-n!)=y 都要为正整数

puppywolf的博客 360

224G PAM-4 通道的 PCB 和封装设计

该行业正在努力实现层厚非常低的 sub-Dk = 3 材料,以及更先进的加工,这将使封装和 PCB 中的透射电镜截止值更高。当回波损耗占主导地位时,我们基本上需要去除沿互连产生阻抗失配的任何元件,就像上面描述的更光滑的铜和更低的 Dk 值一样。第二个影响是传输线阻抗匹配在 56 GHz 范围内的非常高的频率下非常困难的主要原因之一,另一个因素是 Tx 或 Rx 封装/缓冲器中的寄生效应。由于 PCB 和封装中的长度刻度,这是 BGA 上的焊盘、过孔和球等小结构开始在输入阻抗中产生明显偏差的频率范围。

jkh920184196的博客 840

ArcGIS标注太乱?手把手教你用‘要素分类标注’搞定河流分级显示

本文详细介绍了如何在ArcGIS Pro中使用要素分类标注功能实现河流分级显示,解决标注混乱问题。通过数据预处理、分类标注规则定义和高级参数调优,帮助用户打造层次分明、专业清晰的水系地图,提升地图信息传达效率。

weixin_30326741的博客 474

【NOIP2013模拟联考5】军训(training) 题解+代码

DescriptionHYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求: 1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。 2.每个学生

Jacky35 1343

COMSOL 6.4安装全攻略:安装包获取、许可证配置与避坑指南

多物理场仿真是现代工程与科研中不可或缺的技术手段,其核心原理在于将电磁、结构、流体、传热等不同物理过程的耦合效应置于统一环境中求解,从而真实模拟复杂系统行为。这类仿真平台能大幅提升产品研发与设计验证效率,广泛应用于电子散热、声学分析、电力设备等领域。在部署最新版本仿真软件时,安装与许可证配置往往成为影响工作效率的关键环节。本文系统梳理COMSOL 6.4在Windows平台的安装全流程,涵盖安装包获取、系统依赖准备、许可证配置、常见报错排查等实用经验,帮助工程师与科研人员一次性完成环境搭建,把更多时间投入真

weixin_30000735的博客 1342

【JZOJ3463】【NOIP2013模拟联考5】军训(training)(单调栈+二分+DP+线段树优化)

Problem HYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求: 1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。 2.每个学生必...

qq_36551189的博客 619

Pixel 4/4 XL 刷机小白必看:Magisk Root 全流程详解(附电信网络适配技巧)

本文为Pixel 4/4 XL用户提供了一份详尽的Magisk Root全流程指南。从解锁Bootloader、刷入Magisk,到解决电信网络VoLTE适配问题,再到隐藏Root以通过银行App检测,手把手教你安全获取系统最高权限并优化日常使用体验。

weixin_29310605的博客 265

树莓派 Raspberry Pi 使用 YOLOv8 YOLOv10 YOLOv11进行目标检测及推理加速,Run YOLOv8 YOLOv10 YOLOv11 on Raspberry Pi

libcamera 是 linux 新增加用于访问 camera 的 API。树莓派参与了 libcamera 的开发,并且在新的摄像头软件中开始从依赖于固件的摄像头图像处理管道(Image processing pipeline, ISP)迁移到更加开放的 libcamera。当然这块用USB 摄像头应该也是可以的。

shiter编写程序的艺术 5568

JZOJ 3463. 【NOIP2013模拟联考5】军训(training)

目录: 题目: 分析: 代码: 题目: 单击查看题目 分析: 题目是求最大值最小,所以应该二分。 如何判断当前的mid值是否合法呢? 这里用DP实现。 设fifif_i表示i之前已经分好班的时候的最小欠扁值。 转移显然: fi=∑min{fj+max{hj+1,hj+2...hi}}fi=∑min{fj+max{hj+1,hj+2...hi}...

qq_35786326的博客 366

手把手教你完成YOLOv10 PySide6目标检测界面搭建,使用Qt6设计YOLOv10检测系统,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

手把手教你完成YOLOv10 PySide6目标检测界面搭建,使用Qt6设计YOLOv10检测系统,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1733

【NOIP2013模拟联考5】军训(training)

Description HYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求: 1.分班必须按照学号顺序来,即不...

angw337679452的博客 137

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

NOIP2013模拟联考5】军训(training)

DescriptionHYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求:1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。2.每个学生必须要被

HownoneHe的博客 742

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【JZOJ B组】【NOIP2013模拟联考5】军训(training)

Description HYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求: 1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。 2.每...

Brute♂force 403

JZOJ 2018.07.19【2018提高组】模拟C组

目录: 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela) 3462. 【NOIP2013模拟联考5】休息(rest) 3463. 【NOIP2013模拟联考5】军训(training) 3464. 【NOIP2013模拟联考6】秀姿势(sugata) 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela) Description “有了...

qq_35786326的博客 431

【NOIP2013模拟联考5】休息(rest) 题解(结论,逆序对)

Description 休息的时候,可以放松放松浑身的肌肉,打扫打扫卫生,感觉很舒服。在某一天,某LMZ 开始整理他那书架。已知他的书有nnn本,从左到右按顺序排列。他想把书从矮到高排好序,而每一本书都有一个独一无二的高度HiH_iHi​。他排序的方法是:每一次将所有的书划分为尽量少的连续部分,使得每一部分的书的高度都是单调下降,然后将其中所有不少于222本书的区间全部翻转。重复执行以上操作,最后使得书的高度全部单调上升。可是毕竟是休息时间,LMZ 不想花太多时间在给书排序这种事上面。因此他划分并翻转完第一

CJZ的博客 278

2018暑假集训——待做且可尝试去做的题

jzoj3387. 【NOIP2013模拟】终极武器 jzoj3336. 【NOI2013模拟】坑带的树 jzoj3304. Theres...

weixin_30344995的博客 205

7,8月纪中集训未完成题目

7.12 T3最长公共子串 7.13 T1只有70pts 消息传递 T4 只有50pts 公路维护 7.14 T4我图呢 7.15 T2 Reflect Damage T4 凡喵识图 …

ssllyr 250

2015-08 省赛模拟训练总结

说在前面这个月我们提早回来学校训练,这种安排早已习惯了。每到这个时候,我的收获会是一年中最大的。这一次我做的是省赛组的题,从中我不仅学到许多,而且看出了自己的许多问题。暴露的问题我在做比赛时的问题,可以大致归为几点: 时间分配问题:省赛题目的难度是普遍较高的,这时合理分配时间很重要,很重要,很重要。但是我有的时候会在一些题目上花太多时间。有的题可能看似简单,或者让我想到疑似正解的方法,于是花了较多的

WorldWide_D的博客 2371
上一篇: 匈牙利算法
下一篇: 【NOIP2013模拟联考6】选课
无尽的蓝黄
博客等级 码龄11年 30粉丝 219原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值