HDU-6356 Glad You Came (线段树)
题目链接:Glad You Came
题意:数组有n个数初始为0,m个询问,每个询问给出L R V(按照给定函数生成),将数组的下标L到R的数与V取较大值,最后输出给定的公式结果。
题意:哇~打比赛的时候想用两个线段树去维护,一棵维护每个结点所代表区间的最大值,一棵维护每个结点所代表区间的异或和。不过这题比我想的要暴力~~~直接维护最大值,最后遍历整棵树将最大值pushdown下去就可以了。~
#include <bits/stdc++.h>
#define pi acos(-1)
#define fastcin ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int INF = 0x3f3f3f3f; // 不能加负号!!!
const LL LL_INF = 0x3f3f3f3f3f3f3f3f;//4e18 ~= 2^62
const int maxn = + ;
const LL mod = pow(, );
LL maxx[maxn<<];
LL a[maxn];
LL ans ;
unsigned int RNG61(unsigned int &x, unsigned int &y, unsigned int &z)
{
x = x^(x<<);
x = x^(x>>);
x = x^(x<<);
x = x^(x>>);
unsigned int w = x^(y^z);
x = y;
y = z;
z = w;
return z;
} void PushDown(int rt)
{
maxx[rt<<] = max(maxx[rt<<],maxx[rt]);
maxx[rt<<|] = max(maxx[rt<<|],maxx[rt]);
} //区间更新,假设A[L,R]+=C
void update(int L, int R, LL v, int l, int r, int rt)
{
//cout<<l<<"____"<<r<<"....."<<rt<<endl;
if(maxx[rt] > v) return;
if(L<=l && r<=R){
maxx[rt] = max(maxx[rt],v);
return ;
}
int mid = (l+r)>>;
PushDown(rt);
if(L <= mid) update(L, R, v, l, mid, rt<<);
if(R > mid) update(L, R, v, mid+, r, rt<<|);
// PushUp(rt);
}
void get(int l,int r,int rt){
if(l == r){
ans ^= l*maxx[rt];
return ;
}
PushDown(rt);
int mid = (l+r)>>;
get(l,mid,rt<<);
get(mid+,r,rt<<|);
}
int main()
{
int T;
cin>>T;
while(T--){
int n, m, l, r, v;
memset(maxx,,sizeof(maxx));
memset(a,,sizeof(a));
unsigned int X, Y, Z;
scanf("%d%d%u%u%u", &n, &m, &X, &Y, &Z);
unsigned int t1, t2, t3;
for(int i=; i<m; i++){
t1 = RNG61(X, Y, Z);
t2 = RNG61(X, Y, Z);
t3 = RNG61(X, Y, Z);
l = min((t1%n)+, (t2%n)+);
r = max((t1%n)+, (t2%n)+);
v = (t3 % mod + mod) %mod;
update(l, r, v, , n, );
}
ans = ;
get(,n,);
printf("%lld\n", ans);
}
}
HDU-6356 Glad You Came (线段树)的更多相关文章
- HDU 6356.Glad You Came-线段树(区间更新+剪枝) (2018 Multi-University Training Contest 5 1007)
6356.Glad You Came 题意就是给你一个随机生成函数,然后从随机函数里确定查询的左右区间以及要更新的val值.然后最后求一下异或和就可以了. 线段树,区间最大值和最小值维护一下,因为数据 ...
- 线段树模板(HDU 6356 Glad You Came)
题目: HDU 6356 http://acm.hdu.edu.cn/showproblem.php?pid=6356 很裸的线段树 #include<bits/stdc++.h> #de ...
- HDU 3016 Man Down (线段树+dp)
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- HDU.5692 Snacks ( DFS序 线段树维护最大值 )
HDU.5692 Snacks ( DFS序 线段树维护最大值 ) 题意分析 给出一颗树,节点标号为0-n,每个节点有一定权值,并且规定0号为根节点.有两种操作:操作一为询问,给出一个节点x,求从0号 ...
- HDU.1556 Color the ball (线段树 区间更新 单点查询)
HDU.1556 Color the ball (线段树 区间更新 单点查询) 题意分析 注意一下pushdown 和 pushup 模板类的题还真不能自己套啊,手写一遍才行 代码总览 #includ ...
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...
- HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)
HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...
- HDU.1689 Just a Hook (线段树 区间替换 区间总和)
HDU.1689 Just a Hook (线段树 区间替换 区间总和) 题意分析 一开始叶子节点均为1,操作为将[L,R]区间全部替换成C,求总区间[1,N]和 线段树维护区间和 . 建树的时候初始 ...
- hdu 1754 I Hate It 线段树 点改动
// hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bits ...
- hdu 1166 敌兵布阵 线段树 点更新
// hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ...
随机推荐
- LeetCode题解之 Continuous Subarray Sum
1.题目描述 2.循环计算即可 3.代码 bool checkSubarraySum(vector<int>& nums, int k) { ){ return false ; } ...
- python基础一数据类型之字典
摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...
- CAC的Debian-8-64bit安装BBR正确方式是?
裝过三台debian 64 bit, CAC, 2歐, KVM虛擬機 做法都一樣 0. 有裝銳速記得先刪除, 免得換核心後, 銳速在扯後腿 1.換4.9版kernel 有正式版 別裝啥rc版, 4.9 ...
- JavaScript获取请求参数
<script type="text/javascript"> //获取请求参数 function paramsMap() { var url = window.loc ...
- 根据模板导出Excel报表并复制模板生成多个Sheet页
因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为 根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...
- tidb导入大量数据报错:statement count 5001 exceeds the transaction limitation, autocommit = false
这是Tidb数据库事务提交数量达到上限的一种报错:因为tidb是分布式的数据库,tikv使用了底层的强一致性协议.这是分布式数据库必然遇到的一个问题,我们可以调整这个值:在tidb的配置文件里面“st ...
- 某某D的手伸的实在太长了,路由器也未能幸免,致被阉割的TP-Link
前段时间整了个服务器架上l2tp.server, TP-Link路由连上去后,全网走l2tp通道,而且不能配置相关的路由表 然后研究啊 找啊 查啊,确定是路由没有这功能 找客服问了一下,他一听就懂了, ...
- Symbol Table Applications
符号表应用 在计算机发展的早期,符号表帮助程序员从使用机器语言的数字地址进化到在汇编语言中使用符号名称:在现代应用程序中,符号名称的含义能够通行于跨域全球的计算机网络.快速查找算法曾经并继续在计算机领 ...
- node学习笔记_03 express框架
express api地址:http://www.expressjs.com.cn/starter/static-files.html 一.安装依赖 npm i --save express npm ...
- 三、并行编程 - Task同步机制。TreadLocal类、Lock、Interlocked、Synchronization、ConcurrentQueue以及Barrier等
在并行计算中,不可避免的会碰到多个任务共享变量,实例,集合.虽然task自带了两个方法:task.ContinueWith()和Task.Factory.ContinueWhenAll()来实现任务串 ...