一、思路

线段树维护一个区间最小值,然后对于每次操作,做区间更新即可。要注意的是,在更新的时候,记得剪枝:如果当前更新的值$v \le minv$(minv为当前线段树节点所管辖区间的最小值),直接返回。否则,TLE。运行时间1500+ms,比标程2800+ms快将近两倍。

二、代码

#include<bits/stdc++.h>
using namespace std;
#define min(x, y) (x < y ? x : y)
#define max(x, y) (x > y ? x : y)
#define MAXN 100100

unsigned X, Y, Z;
struct node {
    int mv, lazy;
} data[MAXN * ];
int n, m;

inline void down(int rt) {
    if(data[rt].lazy) {
        , rch = rt <<  | ;
        if(data[lch].lazy < data[rt].lazy)data[lch].lazy = data[rt].lazy;
        if(data[lch].mv < data[rt].lazy)data[lch].mv = data[rt].lazy;
        if(data[rch].lazy < data[rt].lazy)data[rch].lazy = data[rt].lazy;
        if(data[rch].mv < data[rt].lazy)data[rch].mv = data[rt].lazy;
        data[rt].lazy = ;
    }
}

inline , , int r = n) {
    if(l > ur || r < ul)return;
    if(v <= data[rt].mv)return;
    if(l >= ul && r <= ur) {
        if(data[rt].mv < v)data[rt].mv = v, data[rt].lazy = v;
        return;
    }
    down(rt);
    ;
    update(ul, ur, v, rt << , l, mid);
    update(ul, ur, v, rt <<  | , mid + , r);
    data[rt].mv = min(data[rt << ].mv, data[rt <<  | ].mv);
}

inline , , int r = n) {
    if(l == r)return data[rt].mv;
    down(rt);
    ;
    , l, mid);
     | , mid + , r);
}

inline unsigned rng61() {
    X ^= X << ;
    X ^= X >> ;
    X ^= X << ;
    X ^= X >> ;
    unsigned W = X ^ Y ^ Z;
    X = Y; Y = Z; Z = W;
    return Z;
}

int main() {
//    freopen("1007.in", "r", stdin);
//    freopen("1007.out", "w", stdout);
     << ) - ;
    scanf("%d", &T);
    ; ca < T; ++ca) {
        scanf("%d%d%u%u%u", &n, &m, &X, &Y, &Z);
        memset(data, , ]) * ((n << ) + ));
        ; jj < m; ++jj) {
            unsigned f1 = rng61(), f2 = rng61();
            if(f1 >= n)f1 %= n;
            if(f2 >= n)f2 %= n;
            , ur = f2 + , v = rng61() & mod;
            if(ul > ur)swap(ul, ur);
            update(ul, ur, v);
        }
        ;
        ; i <= n; ++i)ans ^= 1LL * i * query(i);
        printf("%lld\n", ans);
    }
    ;
}

2018 Multi-University Training Contest 4-Glad You Came(hdu 6356)的更多相关文章

  1. 2018 Nowcoder Multi-University Training Contest 2

    目录 Contest Info Solutions A. run D. monrey G. transform H. travel I. car J. farm Contest Info Practi ...

  2. 2018 Nowcoder Multi-University Training Contest 1

    Practice Link J. Different Integers 题意: 给出\(n\)个数,每次询问\((l_i, r_i)\),表示\(a_1, \cdots, a_i, a_j, \cdo ...

  3. 2018 Nowcoder Multi-University Training Contest 5

    Practice Link A. gpa 题意: 有\(n\)门课程,每门课程的学分为\(s_i\),绩点为\(c_i\),要求最多删除\(k\)门课程,使得gpa最高. gpa计算方式如下: \[ ...

  4. 2018 Nowcoder Multi-University Training Contest 10

    Practice Link J. Rikka with Nickname 题意: 给出\(n\)个字符串,要求依次合并两个串\(s, t\),满足将\(t\)合并到\(s\)中变成\(r\),使得\( ...

  5. 【HDU 2014 Multi-University Training Contest 1 1002】/【HDU 4862】Jump

    多校训练就这么华丽丽的到了 ,于是乎各种华丽丽的被虐也開始了. 这是多校的1002; 最小费用最大流. 题目大意: 有n*m个方格,每一个方格都一个的十进制一位的数.你能够操作K次. 对于每一次操作, ...

  6. 【2014 Multi-University Training Contest 3 1002】/【HDU 4888】 Redraw Beautiful Drawings

    不easy啊.最终能够补第二个题了.! 顺便说一句:模版写残了就不要怪出题人啊 ~ (这残废模版研究了好长时间才找出错) 题目大意: 有一个n*m的矩阵.每个格子里都将有一个数.给你每一行数字之和和每 ...

  7. 【2014 Multi-University Training Contest 2 1002】/【HDU 4873】 ZCC Loves Intersection

    果然,或滥用零件,啥都不说了.我们欣慰地学习阅读.这两天残疾儿童是数学. 这是求所需的问题,不明确.贴上官方的解题报告. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi ...

  8. 2017 Multi-University Training Contest - Team 5——HDU6095&&HDU6090&&HDU

    HDU6095——Rikka with Competition 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6095 题目意思:抱歉虽然是签到题,现场 ...

  9. HDU 2018 Multi-University Training Contest 3 Problem A. Ascending Rating 【单调队列优化】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6319 Problem A. Ascending Rating Time Limit: 10000/500 ...

  10. 2018 Multi-University Training Contest 2

    题目链接:2018 Multi-University Training Contest 2 6318 Swaps and Inversions 题意:sum=x*逆序个数+交换次数*y,使sum最小 ...

随机推荐

  1. IIS Express 添加MIME映射

    IIS Express没有提供图形化界面来配置MIME类型,但提供了配置MIME类型的命令行工具. IIS Express中添加MIME映射.操作如下: 在DOS窗口下进入IIS Express安装目 ...

  2. python2.7安装第三方库错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb in position 0

    开发环境:win10, x64, pycharm社区版,python2.7.13 python2经常会遇见乱码的问题,并且一遇到中文就乱码.所以我们在安装的时候要注意,无论是解释器interpreto ...

  3. android:点击popupwindow以外区域 popupwindow自动消失

    方法一(这种方法可以处理popupwindows dimiss的时候一些其他的操作,比如让其他控件的隐藏,消失等): 代码如下popupWindow.setFocusable(false);//foc ...

  4. SQLPLUS的乱码问题

    我的中文系统,把对应非unicode字符时的设置,改成了 日文, 结果控制台使用sqlplus时候,总是出现乱码. 解决方法是,把NLS_LANG环境变量变成跟系统一样,就可以了. american_ ...

  5. torchnet+VGG16计算patch之间相似度

    torchnet+VGG16计算patch之间相似度 torch VGG16 similarity 本来打算使用VGG实现siamese CNN的,但是没想明白怎么使用torchnet对模型进行微调. ...

  6. snmpwalk-MIB of S5700-idc-stack

    IF-MIB:.iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifDescrOID:.1.3.6.1.2.1.2.2.1.2 针 ...

  7. App6种常见的数据加载设计

    App6种常见的数据加载设计 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载 ...

  8. java中可以让程序暂停几秒执行的代码

    //n为毫秒数 try { Thread.sleep ( n ) ; } catch (InterruptedException ie){} try { TimeUnit.SECONDS.sleep( ...

  9. jQuery判断checkbox是否选

    方法一: if ($("#checkbox-id").get(0).checked) { // do something } 方法二: if($('#checkbox-id').i ...

  10. MySql查询生日的两种方式

    需要是要查询日期段内过生日的会员,分为两种情况: 1. 不跨年 例如: 查询2017-01-01到2017-01-20之间过生日的会员  (假定今天是2017-01-01则这种也可以描述为20天内过生 ...