【NOIP2013模拟联考5】军训

从零到一:RK3588嵌入式开发中的SDK与MPP集成实战解析 本文详细解析了RK3588嵌入式开发中SDK与MPP(Media Process Platform)的集成实战,涵盖开发环境构建、SDK架构解析、MPP集成关键技术点及常见问题诊断。通过Qt5.12.10交叉编译环境配置和硬件加速优化,帮助开发者高效完成嵌入式视觉项目开发,特别适合边缘计算应用场景。 阅读详情

题目

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();
}
【推荐100个unity插件】Animator 的替代品?—— Animancer Pro插件的使用介绍 Animancer与Unity Animator对比及使用指南 摘要: 本文对比了Animancer与Unity官方Animator的核心差异,分析了Animancer的优势特点。Animancer采用代码驱动模式,相比Animator的状态机系统更灵活高效,支持实时调试、动态混合和深度逻辑集成。文章详细介绍了Animancer的快速使用方法,包括动画播放、切换和触发机制,并区分了免费版与专业版的功能差异。适合需要高效动画开发、复杂交互逻辑的中小项目,为开发者提供了一种现代化的动画解决方案。 阅读详情

相关推荐

三相逆变器拓扑结构的分析及应用场景

三相逆变器是电力电子领域中广泛应用的一种设备,用于将直流电转换为交流电。不同的拓扑结构在性能、成本、复杂度和应用领域上存在差异。小编将在本文中将进一步拓展对三相逆变器拓扑结构的分析,并探讨其适用的应用场景。

道合顺的博客 2235

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

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

lijf2001的博客 1521

当AI学会自我验证:Chain-of-Verification如何杜绝错误决策?

2025年,大模型"幻觉"问题已成为企业落地AI的最大障碍之一——金融风控中1.2%的误判率可能导致千万级损失,医疗诊断中3%的错误可能危及生命,法律文书中5%的事实偏差可能引发合规风险。MetaAI与Google联合提出的**Chain-of-Verification(CoVe,验证链)**技术,让AI具备"自我审视"能力,通过结构化验证流程将幻觉率降低68%+,在复杂决策场景准确率提升至95%+。本文系统拆解CoVe的技术原理、实施路径与行业实战,为企业提供AI决策可靠性保障的完整方案。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1081

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

Kotlin kapt插件报错全解析:从Could not load module到彻底解决(含Gradle 8.2.2适配指南)

本文深度解析了Kotlin开发中常见的kapt插件报错“Could not load module”的根源,并提供了从诊断到解决的完整方案。重点探讨了Gradle 8.2.2与Kotlin 1.9.x的兼容性问题,包括JVM IR后端冲突、配置缓存问题及依赖版本对齐,并给出了详细的调试技巧与迁移至KSP的建议。

rrr55的博客 315

从OFED到rdma-core:手把手带你搞定Linux下RDMA开发环境的选型与搭建

本文详细介绍了在Linux系统下搭建RDMA开发环境的完整流程,涵盖OFED与rdma-core的选型对比及分步安装指南。针对高性能计算和分布式存储需求,解析RDMA技术栈的核心组件,提供环境验证与性能测试方法,帮助开发者快速构建稳定高效的开发环境。特别适合需要优化网络性能的工程师参考。

weixin_26905487的博客 225

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

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

Jacky35 1343

Android13 CarPowerManagementService启动流程分析

在CarPowerManagementService中init调用PowerHalService的setListener设置事件侦听器以接收车辆的电源事件。

liuning1985622的博客 956

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

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

qq_36551189的博客 619

【YOLOv12多模态融合改进】| TFAM:时序融合注意力模块 | 引入通道 - 空间双分支注意力机制,解决双模态特征融合中时序关联不足的问题

TFAM模块通过时序信息驱动的注意力机制,解决了双时相特征融合中时序关联不足的问题,实现了更精准的变化区域定位和特征表示。其结构轻量、泛化性强,为变化检测任务提供了一种高效的特征融合解决方案。

Limiiiing的博客 866

上午题目复习ing

无线局域网,11b是常用的,2.4ghz,后来改进5ghz,有些字段可以工作在5g的字段802.11/11a/1h/11n,,,,,11b和11g还在2.4ghz工作。数据链路层 传输服务,数据链路维护,差错控制,arp ip到mac,rarp反过来,token ring,x.25,atm,ethernet,蓝牙10m,简化因特网,分散式网,快调频,短包,点对点,点多多点,2.4ghz,最高速率1mb/s。gsm:是时分多址,900m-1800m,微蜂窝是市区,微微风是室内,伞是盲点,

weixin_47120900的博客 893

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

uniapp - 实现手机端H5网页直播功能效果,拿到后端推流地址或播放资源后进行前端的流畅播放和画面展示功能,uniapp实时推流/拉流直播系统详细教程(提供完整示例代码,一键复制开箱即用!)

uniapp,h5网页,手机端H5网页,uniapp h5直播功能页面,uniapp直播实时推送显示,uniapp h5直播怎么做,怎么使用uniapp去实现移动端手机H5直播,h5 vue+uniapp怎么做直播,uniapp中使用videojs构建H5直播播放器,uniappH5端怎么实现直播推流,uniapp如何实现直播,直播聊天功能,h5平台端直播用什么插件,uniapp手机网页直播用什么组件插件播放器,uniapp手机H5直播播放器详细教程,直播项目,怎么使用vue+uniapp怎么做H5实时直播

✅ 精选推荐文章 8792

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

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

angw337679452的博客 137

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

HownoneHe的博客 742

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【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、付费专栏及课程。

余额充值