2018 Multi-University Training Contest 4-Glad You Came(hdu 6356)
一、思路
线段树维护一个区间最小值,然后对于每次操作,做区间更新即可。要注意的是,在更新的时候,记得剪枝:如果当前更新的值$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)的更多相关文章
- 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 ...
- 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 ...
- 2018 Nowcoder Multi-University Training Contest 5
Practice Link A. gpa 题意: 有\(n\)门课程,每门课程的学分为\(s_i\),绩点为\(c_i\),要求最多删除\(k\)门课程,使得gpa最高. gpa计算方式如下: \[ ...
- 2018 Nowcoder Multi-University Training Contest 10
Practice Link J. Rikka with Nickname 题意: 给出\(n\)个字符串,要求依次合并两个串\(s, t\),满足将\(t\)合并到\(s\)中变成\(r\),使得\( ...
- 【HDU 2014 Multi-University Training Contest 1 1002】/【HDU 4862】Jump
多校训练就这么华丽丽的到了 ,于是乎各种华丽丽的被虐也開始了. 这是多校的1002; 最小费用最大流. 题目大意: 有n*m个方格,每一个方格都一个的十进制一位的数.你能够操作K次. 对于每一次操作, ...
- 【2014 Multi-University Training Contest 3 1002】/【HDU 4888】 Redraw Beautiful Drawings
不easy啊.最终能够补第二个题了.! 顺便说一句:模版写残了就不要怪出题人啊 ~ (这残废模版研究了好长时间才找出错) 题目大意: 有一个n*m的矩阵.每个格子里都将有一个数.给你每一行数字之和和每 ...
- 【2014 Multi-University Training Contest 2 1002】/【HDU 4873】 ZCC Loves Intersection
果然,或滥用零件,啥都不说了.我们欣慰地学习阅读.这两天残疾儿童是数学. 这是求所需的问题,不明确.贴上官方的解题报告. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi ...
- 2017 Multi-University Training Contest - Team 5——HDU6095&&HDU6090&&HDU
HDU6095——Rikka with Competition 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6095 题目意思:抱歉虽然是签到题,现场 ...
- 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 ...
- 2018 Multi-University Training Contest 2
题目链接:2018 Multi-University Training Contest 2 6318 Swaps and Inversions 题意:sum=x*逆序个数+交换次数*y,使sum最小 ...
随机推荐
- R软件中排序:sort(),rank(),order()
在R中,和排序相关的函数主要有三个:sort(),rank(),order(). sort(x)是对向量x进行排序,返回值排序后的数值向量.rank()是求秩的函数,它的返回值是这个向量中对应元 ...
- MySQL返回影响行数的测试示例
found_rows() : select row_count() : update delete insert 注:需要配合相应的操作一起使用,否则返回的值只是1和-1(都是不正确的值) 示例: d ...
- Win32 基本文件读写操作
https://www.cnblogs.com/Clingingboy/archive/2011/05/10/2042645.html
- 获取和设置HTML标签中的数据
- Creating SSL keys, CSRs, self-signed certificates, and .pem files.
What is the whole darned process? Well that’s a good question. For my purposes, this is what I need ...
- 安装Ubuntu版本linux过程中没有提示设置root用户密码问题的解决办法
原来ubunto不提倡设置root用户,系统安装成功后,root密码是随机的,那么在这种情况下如何得到root权限呐,具体方法如下: 终端中输入:sudo passwd root 此时重新设置原登录用 ...
- 第12课:HTML+CSS的基础用法
1. html之head部分的常用标签的使用 <!--指定html是标准的html还是其它的html--> <!DOCTYPE html> <html lang=&quo ...
- websocket 缺点
当时用 python 做的服务器,后来回去想再工作项目上用,但新的技术升级,随之而来还是要解决很多非技术问题, 服务器带宽,并发服务器性能方方面面考虑之后还是没有用上,十分可惜, 一个新的技术推动,尤 ...
- 右键添加git bush here
由于sourcetree自动安装的git,导致右键没有git bush here,那么我们就自己添加一下. 运行regedit.exe进入注册表,在HKEY_CLASSES_ROOT\Director ...
- CUDA Samples: matrix multiplication(C = A * B)
以下CUDA sample是分别用C++和CUDA实现的两矩阵相乘运算code即C= A*B,CUDA中包含了两种核函数的实现方法,第一种方法来自于CUDA Samples\v8.0\0_Simple ...