zoukankan      html  css  js  c++  java
  • hihocoder 1249(2015ACM/ICPC北京)

    题意:

    给你一块正方形的土地,里面有矩形的草地,要求把土地分成两份,满足以下两个条件

    1.两边的绿洲,左边>=右边,差值尽可能的小

    2.在满足1的情况下分给左边的土地尽快能的多

    而且绿洲不会出现覆盖


    思路:

    将绿洲压到你给一维矩阵中,然后从左往右加,当ls*2 >= sum,往后面寻找最近的一个p[i] != 0(即存在绿洲的地方)


    Orz:

    第一次没对,就YY绿洲可能超出了土地范围,然后哦一直WA

    现在才发现,当时只是没把有的数定义成long long超了,QAQ心好痛


    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    using namespace std;
    typedef long long ll;
    const int maxn = 10001000;
    const int INF = 0x3f3f3f3f;
    ll p[maxn];
    
    int main()
    {
        int n,T,len;
        ll sum,lef,top,w,h;
        scanf("%d",&T);
        while(T--)
        {
            memset(p,0,sizeof(p));
            scanf("%d%d",&len,&n);
            sum =  0;
            for(int i = 0;i < n;i++)
            {
                scanf("%lld%lld%lld%lld",&lef,&top,&w,&h);
                p[lef] += h;
                p[lef+w] -= h;
                sum += w*h;
            }
            ll ls = 0;
            for(int i = 1;i <= len;i++)
            {
                p[i] += p[i-1];
            }
    
            for(int i = 0;i <= len;i++)
            {
                ls += p[i];
                if(ls * 2 >= sum)
                {
                    int j;
                    for(j = i+1;p[j]==0 && j < len;j++);
                    printf("%d
    ",j);
                    break;
                }
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    一对多关系处理
    java中转换不同时区的时间
    maven
    学习设计模式
    算法
    mongodb学习总结
    mybatis源码分析(四) mybatis与spring事务管理分析
    学习数据库四大特性及事务隔离级别
    mybatis源码分析(三) mybatis-spring整合源码分析
    mybatis源码分析(二) 执行流程分析
  • 原文地址:https://www.cnblogs.com/Przz/p/5409674.html
Copyright © 2011-2022 走看看