zoukankan      html  css  js  c++  java
  • 洛谷 P1083 借教室 题解

    这是考试的T4。

    T2 sb dp不想发了,T3 文化之旅是道错题,暴力20分。

    Analysis

    用差分数组储存借教室的情况,二分答案求差分数组前缀和判断合不合法。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #define maxn 1000010
     6 using namespace std;
     7 inline int read()
     8 {
     9     int x=0;
    10     bool f=1;
    11     char c=getchar();
    12     for(; !isdigit(c); c=getchar()) if(c=='-') f=0;
    13     for(; isdigit(c); c=getchar()) x=(x<<3)+(x<<1)+c-'0';
    14     if(f) return x;
    15     return 0-x;
    16 }
    17 inline void write(int x)
    18 {
    19     if(x<0){putchar('-');x=-x;}
    20     if(x>9)write(x/10);
    21     putchar(x%10+'0');
    22 }
    23 int n,m;
    24 int in[maxn],cha[maxn],d[maxn],s[maxn],t[maxn],sum[maxn];
    25 inline bool check(int x)
    26 {
    27     memset(cha,0,sizeof(cha));
    28     for(int i=1;i<=x;i++)
    29     {
    30         cha[s[i]]+=d[i];
    31         cha[t[i]+1]-=d[i];
    32     }
    33     sum[1]=cha[1];
    34     for(int i=2;i<=n;i++)
    35     {
    36         sum[i]=sum[i-1]+cha[i];
    37         if(sum[i]>in[i])return false;
    38     }
    39     return true;
    40 }
    41 int main()
    42 {
    43 //    freopen("classroom.in","r",stdin);
    44 //    freopen("classroom.out","w",stdout);
    45     n=read();m=read();
    46     for(int i=1;i<=n;i++) in[i]=read();
    47     for(int i=1;i<=m;i++)
    48     {
    49         d[i]=read();
    50         s[i]=read();
    51         t[i]=read();
    52     }
    53     if(check(m)==true)
    54     {
    55         write(0);
    56         return 0;
    57     }
    58     int l=1,r=m,mid=0;
    59     while(l<r)
    60     {
    61         mid=(l+r)/2;
    62         if(check(mid)==false) r=mid;
    63         else l=mid+1;
    64     }
    65     write(-1);
    66     printf("
    ");
    67     write(l);
    68     return 0;
    69 }

    请各位大佬斧正(反正我不认识斧正是什么意思)

  • 相关阅读:
    LeetCode题解之Leaf-Similar Trees
    LeetCode题解之 Increasing Order Search Tree
    建立git仓库的步骤
    Jquery-1(基础)
    JavaScript-12(脚本化CSS)
    JavaScript-11(DOM文档对象模型)
    JavaScript-10(JavaScript事件)
    JavaScript-实现下拉菜单
    JavaScript-9(BOM浏览器对象模型)
    JavaScript-字符与编码转换
  • 原文地址:https://www.cnblogs.com/handsome-zyc/p/11296571.html
Copyright © 2011-2022 走看看