简单的覆盖问题,,通过覆盖的g不同 有这不同的价值 最后还是一段上求和

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<string>
#include<queue>
#include<math.h>
using namespace std;
#define N 100005
#define lson rood<<1
#define rson rood<<1|1
int w[N];
struct node
{
    int l,r,mid,len;
    int v;
} a[N<<2];
void q(int rood,int l,int r)
{
    a[rood].l=l;a[rood].r=r;a[rood].mid=(r+l)/2;
    a[rood].len=(r-l+1);a[rood].v=1;
    if(l!=r)
    {
        q(lson,l,a[rood].mid);
        q(rson,a[rood].mid+1,r);
    }
}
void qq(int rood,int l,int r,int g)
{
    if(a[rood].v==g)
        return ;
    if(a[rood].l==l&&a[rood].r==r)
    {
        a[rood].v=g;
        return ;
    }
    if(a[rood].v!=-1)
    {
        a[lson].v=a[rson].v=a[rood].v;
        a[rood].v=-1;
    }
    if(a[rood].mid>=r) qq(lson,l,r,g);
    else if(a[rood].mid<l) qq(rson,l,r,g);
    else
    {
        qq(lson,l,a[rood].mid,g);
        qq(rson,a[rood].mid+1,r,g);
    }
}
int qqq(int rood)
{
    if(a[rood].v!=-1)
        return a[rood].v*a[rood].len;
    else
        return qqq(lson)+qqq(rson);
}
int main()
{
    int T,n,e,f,g,m,t=1;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        q(1,1,n);
        while(m--)
        {
            scanf("%d%d%d",&e,&f,&g);
            qq(1,e,f,g);
        }
        printf("Case %d: The total value of the hook is %d.\n",t++,qqq(1));
    }
    return 0;
}

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

时间: 2024-10-17 04:56:16

简单的覆盖问题,,通过覆盖的g不同 有这不同的价值 最后还是一段上求和的相关文章

Android 悬浮框 覆盖与被覆盖

简介 悬浮窗是Android平台的特色之一,熟练使用悬浮窗很重要,当大家都使用悬浮窗的时候,于是乎就有了现在的覆盖与被覆盖的问题. 在笔者接触所有app中,悬浮窗的覆盖能力最强的属某点,几乎把其他所有的app都覆盖了. 详情 涉及悬浮窗口的类:WindowManager.WindowManagerImpl,CompatModeWrapper(WindowManagerImpl的内部类),LocalWindowManager(Window的内部类). 如图: 掌握了它的原理,我们来写一个项目测试,

白盒测试 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖(转)

转自:http://wenda.tianya.cn/wenda/thread?tid=758a1e447e62b7df&hl=ja 白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视.白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试.因为对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向.本文介绍六种白盒子测试方法:语句覆盖.判定覆盖.条件覆盖.判定条件覆

软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别

举个例子吧     if   A   and   B   then   Action1     if   C   or   D   then   Action2         语句覆盖最弱,只需要让程序中的语句都执行一遍即可   .上例中只需设计测试用例使得A=true   B=true   C=true   即可.         分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足.上例需要设计测试用例使其分别满足下列条件即可(1)A=true,

条件覆盖,路径覆盖,语句覆盖,分支覆盖

转自http://hi.baidu.com/%D2%D7%B1%D8%BA%C6/blog/item/f016729f4fbeaebbc9eaf4df.html 语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每一个语句至少执行一次,其覆盖标准无法发现判定中逻辑运算的错误:判定覆盖是指选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结果至少出现一次,但若程序中的判定是有几个条件联合构成时,它未必能发现每个条件的错误: 条件覆盖是指选择足够的测试用例,使得运行这些测

POJ 2481 Cows 简单树状数组区间覆盖

点击打开链接 Cows Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 13334   Accepted: 4413 Description Farmer John's cows have discovered that the clover growing along the ridge of the hill (which we can think of as a one-dimensional number line

DLX精确覆盖与重复覆盖模板题

hihoCoder #1317 : 搜索四·跳舞链 原题地址:http://hihocoder.com/problemset/problem/1317 时间限制:10000ms 单点时限:1000ms 内存限制:256MB   描述 小Ho最近遇到一个难题,他需要破解一个棋局. 棋局分成了n行,m列,每行有若干个棋子.小Ho需要从中选择若干行使得每一列有且恰好只有一个棋子. 比如下面这样局面: 其中1表示放置有棋子的格子,0表示没有放置棋子. 对于上面这个问题,小Ho经过多次尝试以后得到了解为选

【BZOJ-1336&amp;1337】Alie最小圆覆盖 最小圆覆盖(随机增量法)

1336: [Balkan2002]Alien最小圆覆盖 Time Limit: 1 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 1573  Solved: 697[Submit][Status][Discuss] Description 给出N个点,让你画一个最小的包含所有点的圆. Input 先给出点的个数N,2<=N<=100000,再给出坐标Xi,Yi.(-10000.0<=xi,yi<=10000.0) Outpu

SPOJ 1771&amp;&amp;DLX精确覆盖,重复覆盖

DLX的题,做过这题才算是会吧. 这道题转化成了精确覆盖模型来做,一开始,只是单纯的要覆盖完行列和斜线,WA. 后来醒悟了,不能这样,只要覆盖全部行或列即可.虽然如此,但某些细节地方很关键不能考虑到. 特别要注意的是 for(int i=R[c];i;i=R[i]){ if(i>ne) break; if(S[i] < S[c]) c = i;} 找最小值只能是在ne之前,为什么呢?因为我们要完全覆盖行.可行吗?可行.稍微留意一下DLX的模板就知道,它其实在选中一列之后,是会枚举列上的行值,

处理事件的方式:两种类的覆盖处理(覆盖,通用处理),一种对象的处理(过滤处理,通常是父控件给子控件安装过滤),两种全局处理(QCoreApplication安装过滤器,覆盖notify方法)

虽然只有一句话,但却是我自己的心得. 特别注意,bool QCoreApplication::notify(QObject *receiver, QEvent *event) 明确指明了要发送的对象,以及要发送的事件,信息都这么清楚了,那覆盖后还不是为所欲为-而且我估计notify在过滤器之前执行. 其实五种方法在官方文档就有明确的说明: http://doc.qt.io/qt-5/qcoreapplication.html#notify 例子: http://blog.csdn.net/lia