【第22期】观点:IT 行业加班,到底有没有价值?

NOIP2012 借教室 D2 T2

原创 2016年08月30日 22:42:32

多么简单的二分题啊
我竟然没想怎么做…
二分+差分数组+求和
就水过了…

#include <cstdio>
#include <cstring>
int n,m,l=0,r,ans;
int a[1000001],cha[1000001],d[1000001][3];
bool check(int x)
{
    memset(cha,0,sizeof(cha));
    for(int i=1;i<=x;i++)
    {
        cha[d[i][1]]+=d[i][0];
        cha[d[i][2]+1]-=d[i][0];
    }
    int sum=0;
    for(int i=1;i<=n;i++)
    {
        sum+=cha[i];
        if(sum>a[i])
            return false;
    }
    return true;
}
int main()
{
    scanf("%d%d",&n,&m);
    r=m+1;
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(int i=1;i<=m;i++)
        scanf("%d%d%d",&d[i][0],&d[i][1],&d[i][2]);
    while(l<r-1)
    {
        int mid=((l+r)>>1);
        if(check(mid))
            l=mid;
        else
            r=mid;
    }
    if(l==m)
        printf("0");
    else
        printf("-1\n%d",r);
    return 0;
}

另外说一下
我莫名其妙地发明了一个左开右开的二分….
我一直当左闭右开用来着…

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

NOIP2012 Day2 T2 借教室

碰到区间问题要想到差分。 此题一开始想成[1, n]二分,原因是读题不认真,题目要求按订单一个个顺序判断,只要有一个不符合就打回去,不用管后面的,所以是[1, m]满足单调性,故二分订单。#incl...

Cocos2d-x中Vector<T>容器以及实例介绍

Vector&lt;T&gt; 是Cocos2d-x 3.x推出的列表容器,因此它所能容纳的是<span style="font-family: 'Time

欢迎关注CSDN程序人生公众号

关注程序员生活,汇聚开发轶事。

SCCM2012 R2实战系列之七:软件分发(exe)

在上一章节中,我们完成了SCCM 2012客户端代理软件的安装,现在就可以为客户端

[NOIP 2012] 借教室 D2 T2

正解给的是二分。刚做这题一看不是裸线段树吗,结果被卡了OTZ,加读入优化并卡常过的…#include #include #define min(a,b) ((a)<(b)?(a):(b)) int...

SCCM2012 R2实战系列之五:发现方法

  
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)