【NOIP2013模拟联考5】军训

Webpack打包到宝塔上线:前端小白也能搞定的部署保姆教程 本文为前端开发者提供了一份详尽的Webpack项目部署指南。通过宝塔面板的可视化操作,手把手教你如何将Vue3等项目从本地构建、打包,到上传服务器、配置Nginx,最终完成上线部署的全过程,有效解决了新手在项目上线环节的常见难题。 阅读详情

题目

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();
}
10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地 小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。 阅读详情

相关推荐

新版MQL语言程序设计:用vscode编写编译调试mt4和mt5程序

使用VScode搭建MT4与MT5开发环境,实现编辑编译调试统一。

超哥量化的博客 6872

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

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

lijf2001的博客 1521

[QMT量化交易小白入门]-四十四、年化收益48%的策略要兼容回测和实盘,将实盘改为定时任务的方式

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1373

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

医疗AI知识库更新慢?提示工程架构师用Agentic AI自动更新的策略

我们的目标是用Agentic AI替代传统更新流程中的“重复劳动”,让医疗知识库(以知识图谱为例)能自动跟踪最新医学进展,把“更新周期从数月缩短到数天”。从PubMed/指南数据库自动抓取新文献;用提示工程从文本中提取结构化医学知识;自动校验新知识与旧知识的冲突;将通过校验的知识写入知识图谱。拆问题:先讲医疗知识库更新慢的3大根源;给方案:用Agentic AI设计4个“小助手”解决问题;讲原理:每个小助手的工作逻辑+提示工程技巧;做实战。

AI 原生应用开发的博客 1061

Python爬虫实战:携程旅游平台数据爬取(酒店+机票+景点),破解加密与反爬(附完整代码)

携程的反爬机制再复杂,核心逻辑都是“识别非真实用户的请求”,而爬虫的核心就是“让请求看起来像真实用户的行为”。本文的方案从登录态处理、参数加密破解、动态数据抓取,到反爬应对,都是围绕“模拟真实”展开:用Playwright模拟真实浏览器登录,用住宅代理模拟真实用户IP,用随机延迟模拟真实用户的操作频率。掌握了这个核心思路,无论平台的反爬如何升级,都能找到应对方法。当然,爬虫技术是一把双刃剑,合理使用才能发挥其价值。如果你的爬虫项目中遇到了携程的反爬问题,不妨按照本文的步骤试试,大概率能解决问题。

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

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

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

Jacky35 1343

binning模式下和normal模式下相同曝光参数相同场景加权亮度差异消除方案优化(一)

摘要:针对ISP参数设置中浮点权重系数需转换为整数的问题,提出整数邻域搜索方案。该方法在浮点最优解附近(±1/±2)进行局部搜索,通过逐阶微调找到误差最小的整数权重组合,避免直接取整导致的误差反弹(误差从0.8%降至0.35%)。方案结合范围约束(1~15)和单调性约束(暗端递减、亮端递增),兼顾计算效率(单图耗时<10ms)与硬件兼容性,显著优于暴力搜索和简单取整,满足工程落地需求。

大熊 97

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

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

qq_36551189的博客 619

配置某VLAN下ONU的二层互访(隔离)问题(解决OLT二层隔离问题)

问题:OLT的ONU节点之间在同一VLAN下的终端默认隔离,在确实需要互通的场景下如何解决。

symstandsun的博客 4564

Python爬虫实战:抓取全球船舶AIS定位数据的全流程指南

AIS(Automatic Identification System)自动识别系统是目前全球航运中用于实时跟踪船只位置的主要技术。名称、MMSI编号、呼号实时经纬度船速、航向吃水、目的港状态(航行/停泊/锚泊)航线信息等🛰️海上运输监控:追踪航线,预估到港时间;🛳️船舶管理系统:为物流、港口运营提供决策依据;🌊研究分析:如海洋运输碳排放研究、船只拥堵热力图等;🧠人工智能训练数据集:用于轨迹预测、碰撞预警模型。

2201_76125261的博客 1364

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

100天精通Python(可视化篇)——第98天:Pyecharts绘制多种炫酷日历图参数说明+代码实战

一、日历图介绍 二、基础配置 1. 配置项类 2. 添加函数 3. 日期标签配置 4. 坐标系配置 三、日历图实战 1. 基础日历图 2. 日历热图

努力让自己发光,对的人才能迎着光而来 2万+

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

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

angw337679452的博客 137

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

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

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

HownoneHe的博客 742

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

余额充值