首页 > 其他分享 >[NOIP2012 提高组] 借教室

[NOIP2012 提高组] 借教室

时间:2024-02-01 20:44:07浏览次数:29  
标签:differ NOIP2012 int 提高 教室 long mid 1e6 left

原题链接

一道二分+差分的题目,作为学习前缀和 和 差分 的引入题目非常合适。

首先检验其单调性,如果一个申请人订单不用修改,那么其前面的申请人也不用修改,符合单调性。

接着,这道题暴力的思路就很简单,但是看到运算量(n,m高达1e6),暴力的时间复杂度为O(n*m)显然超时。

那么就是运用差分思想了(不会的快去学!!)

主要代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n;
int a[N],d[N],s[N],t[N];
long long differ[N];    //一定要long long 极端情况differ[i]高达1e6*1e9(m个d[i]之和)
bool check(int m){
    memset(differ,0,sizeof(differ));
    for (int i=1;i<=m;i++) {
        differ[s[i]]+=d[i];
        differ[t[i]+1]-=d[i];
    }
    for (int i=1;i<=n;i++){
        differ[i]+=differ[i-1];
        if (differ[i]>a[i]) return false;
    }
    return true;
}
int main(){
    ios::sync_with_stdio(false);
    int m;
    cin>>n>>m;
    for (int i=1;i<=n;i++) cin>>a[i];
    for (int j=1;j<=m;j++) cin>>d[j]>>s[j]>>t[j];
    int left=0,right=m+1;
    while (left+1<right){
        int mid=left+(right-left>>1);
        if (check(mid)) left=mid;
        else right=mid;
    }
    if (left==m) cout<<0<<"\n";
    else cout<<-1<<"\n"<<right<<"\n";
    return 0;
}

 

标签:differ,NOIP2012,int,提高,教室,long,mid,1e6,left
From: https://www.cnblogs.com/purple123/p/18002088

相关文章

  • 洛谷题单指南-暴力枚举-P1149 [NOIP2008 提高组] 火柴棒等式
    原题链接:https://www.luogu.com.cn/problem/P1149题意解读:计算符合A+B=C时,火柴棍数量正好等于n,可以采用枚举A、B,然后计算出C,根据A、B、C计算出所有火柴棍数量,再加上4根加号、等号的,如果与n相等,即为一种合法等式。解题思路:题目的关键在于枚举A、B时,最大值的设定,不能超时。分析......
  • 如何用ChatGPT使开发效率提高50%以上?
    简介  ChatGPT是一个大型语言模型,由OpenAI开发。它被训练用于进行对话式交互,能够理解和生成自然语言文本。ChatGPT可以用于多种任务和场景,包括但不限于:智能助手、创意生成、语言学习、编程辅助等。ChatGPT的优势在于它的广泛知识和对多个领域的理解。它可以利用其训练数据中......
  • 洛谷题单指南-排序-P1012 [NOIP1998 提高组] 拼数
    原题链接:https://www.luogu.com.cn/problem/P1012题意解读:通过某种合理的排序方式,使得排序后的数字连在一起最大。解题思路:此题关键在于排序,对于两个数字,哪个数字应该排在前面呢?1、思考误区很容易想到,给定两个数abcd、xyz,先比较第一位a和x,谁大谁排前面,一直到c和z。再来看d,这......
  • Prism:打造WPF项目的MVVM之选,简化开发流程、提高可维护性
     概述:探索WPF开发新境界,借助PrismMVVM库,实现模块化、可维护的项目。强大的命令系统、松耦合通信、内置导航,让您的开发更高效、更流畅在WPF开发中,一个优秀的MVVM库是Prism。以下是Prism的优点以及基本应用示例:优点:模块化设计: Prism支持模块化开发,使项目更易维护和扩展。......
  • 帕金森早期诊断准确率提高至 90.2%,深圳先进院联合中山一院提出 GSP-GCNs 模型
    中山大学附属第一医院&中科大先进院等研究团队,提出了一种深度学习模型——图信号处理-图卷积网络(GSP-GCNs),利用从涉及声调调节的特定任务中获得的事件相关脑电图数据来诊断帕金森病。震颤、动作迟缓、表情僵硬……提起帕金森病,多数人会率先想到「手抖」,殊不知,在患病中晚期,患者甚......
  • 堡垒机是什么:如何帮助企业提高网络安全防护
    引言网络安全是当今企业面临的一个重大挑战,尤其是对于那些拥有大量敏感数据和业务系统的企业。一旦遭受黑客攻击或内部人员泄露,企业可能会遭受巨大的经济损失和声誉损害。因此,企业需要采取有效的措施来保护自己的网络资源,防止未经授权的访问和操作。堡垒机就是一种能够帮助企业提高......
  • 综合概念映射与图像识别方法提高学生科学探究课程成绩
    (Anintegratedconceptmappingandimagerecognitionapproachto improvingstudents'scientificinquirycourseperformance) DOI:10.1111/bjet.13177一、摘要研究目的:学者和研究者普遍认为,科学探究是培养学生应用知识和高级思维能力的重要活动。科学探究的过程可以......
  • P1063 [NOIP2006 提高组] 能量项链
    原题链接题解1.拆环成链2.最后一颗留下来的珠子一定是的头标记一定是某个原珠子\(A\)的头标记,尾标记一定是珠子\(A\)右边n个单位的珠子的尾标记3.对任意最大值而言,最后一颗一定是某两个珠子的合并后产生的,所以我们可以在区间内断点遍历\(Code\)#include<bits/stdc++.h>usin......
  • 题解 NOIP2014 提高组-联合权值
    题解NOIP2014提高组-联合权值基本思路:以每个点为中转点,则与之相邻的点组成的点对都可产生联合权值,并且全覆盖。主要总结一下两种求权值和的思路:思路1(容斥):记与\(u\)相邻的点的集合为\(A\),则点\(u\)产生的贡献为\[ans_u=(\sum_{v\inA}w_i)^2-\sum_{v\inA}w_v\times......
  • 使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
    前言:什么是集成配置系统?集成配置系统的主要目的是将应用程序的配置信息与代码分离,使得配置信息可以在不需要修改代码的情况下进行更改。这样可以提高应用程序的灵活性和可维护性。ASP.NETCore提供了一种灵活的配置系统,可以轻松地将配置信息从不同的来源加载到应用程序中,并且......