杭电1698--Just a Hook(线段树, 区间更新)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1698

线段树, 区间更新, 用到了Lazy思想。利用已更新区间来减少未更新区间用时。(自己的理解, 应该是对的)

 

#include <cstdio>
#include <cstring>
#include <iostream>
using  namespace std;
int Node[ 100100<< 2], n, m, lazy[ 100100<< 2];
void Pushup( int root)
{
    Node[root] = Node[root<< 1] + Node[root<< 1| 1]; 
}
void Pushdown( int l,  int r,  int root)
{
     int mid = (l + r) >>  1;
    Node[root<< 1] = (mid - l +  1)*lazy[root];
    Node[root<< 1| 1] = (r - mid)*lazy[root];
    lazy[root<< 1] = lazy[root<< 1| 1] = lazy[root];
    lazy[root] =  0;
}
void Build( int l,  int r,  int root)
{
    lazy[root] =  0;
     if(l==r)
    {
        Node[root] =  1;
         return;
     }    
      int mid = (l + r) >>  1;
    Build(l, mid, root<< 1);
    Build(mid +  1, r, root<< 1| 1);
    Pushup(root); 

void Update( int x,  int y,  int val,  int l,  int r,  int root)
{
     if(x == l && y == r)
    {
        lazy[root] = val;
        Node[root] = val*(y-x+ 1);
         return;
    }    
     if(lazy[root])
        Pushdown(l, r, root);
     int mid = (l + r) >>  1;
     if(y <= mid)
        Update(x, y, val, l, mid, root<< 1);
     else
         if(x > mid)
            Update(x, y, val, mid +  1, r, root<< 1| 1);
     else
    {
        Update(x, mid, val, l, mid, root<< 1);
        Update(mid+ 1, y, val, mid+ 1, r, root<< 1| 1);
    }
    Pushup(root);
}
int main()
{
     int T, temp =  1;
    scanf( " %d ", &T); 
     while(T--)
    {
        scanf( " %d%d ", &n, &m);
        Build( 1, n,  1);
         while(m--)
        {
             int a, b, c;
            scanf( " %d%d%d ", &a, &b, &c);
            Update(a, b, c,  1, n,  1);
        }
        printf( " Case %d: The total value of the hook is %d.\n ", temp++, Node[ 1]);
    }
     return  0;}



转载于:https://www.cnblogs.com/soTired/p/4776995.html

apache-atlas-2.1.0-hive-hook.tar.gz是Apache Atlas项目中的一个软件包。Apache Atlas是一个开源的数据治理和元数据框架,用于收集、集成、索引和搜索数据资产。它提供了一个统一的视图来管理企业中的所有数据资产,包括表、列、模式、实体和关系等。而apache-atlas-2.1.0-hive-hook.tar.gz是Atlas项目为了与Hive集成而提供的一个插件。 Hive是一个构建在Hadoop之上的数据仓库基础设施工具,用于处理大规模的结构化数据。它提供了类似于SQL的查询和分析功能,可以将数据批量导入、导出和查询。通过与Apache Atlas的集成,可以实现对Hive中数据资产的元数据管理和治理。 在实际的应用中,apache-atlas-2.1.0-hive-hook.tar.gz可以被部署到Hive的服务器上,并与Hive的插件机制进行集成。通过配置Hive的元数据存储URL、用户名和密码等信息,Atlas可以自动从Hive中提取元数据,并将其索引到Atlas的元数据仓库中。这样,用户可以在Atlas的界面中浏览和搜索Hive中的表、列和关系,并进行数据资产的管理和治理。 此外,apache-atlas-2.1.0-hive-hook.tar.gz还提供了一些其他功能,如基于分类标签的权限控制、数据血缘追踪、数据脱敏等。通过这些功能,用户可以更好地理解和管理Hive中的数据资产,提高数据治理的效率和质量。 总之,apache-atlas-2.1.0-hive-hook.tar.gz是Apache Atlas项目中用于与Hive集成的插件,通过它可以实现对Hive中数据资产的元数据管理和数据治理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值