HDU 6356 Glad You Came 2018 Multi-University Training Contest 5 (线段树)
题目中没有明说会爆int和longlong 的精度,但是在RNG函数中不用unsigned int 会报精度,导致队友debug了很久...
根据每次生成的l,r,v对区间更新m次,然后求 i*ai的异或和。挺裸的线段树,只要ai<v就更新ai。在线段树结点中维护区间最小值,每次更新时,如果区间最小值>=v,那么就不用更新了。
#include<bits/stdc++.h>
#define lson rt << 1
#define rson rt << 1 | 1
#define Lson l, m, lson
#define Rson m + 1, r, rson
using namespace std;
typedef long long LL;
typedef unsigned int UI;
const int MOD = <<;
const int maxn = 1e5+;
UI X,Y,Z; LL mn[maxn<<];
void pushup(int rt) { mn[rt] = min(mn[lson],mn[rson]);} void build(int l,int r,int rt)
{
if(l==r) {
mn[rt]=;
return;
}
int m =(l+r)>>;
build(Lson);
build(Rson);
pushup(rt);
} void update(int L,int R,int l,int r,int rt,LL val)
{
if(mn[rt]>=val) return;
if(l==r){
mn[rt] = val;
return ;
}
int m =(l+r)>>;
if(L<=m) update(L,R,Lson,val);
if(R>m) update(L,R,Rson,val);
pushup(rt);
} LL query(int p,int l,int r,int rt)
{
if(l == r) return mn[rt];
int m = (l+r)>>;
if(p<=m) return query(p,Lson);
else return query(p,Rson);
} UI gao()
{
X = X^(X<<);
X = X^(X>>);
X = X^(X<<);
X = X^(X>>);
UI W = X^(Y^Z);
X = Y;
Y = Z;
Z = W;
return Z;
} int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int T;
UI N,M;
scanf("%d",&T);
while(T--){
scanf("%u%u%u%u%u",&N,&M,&X,&Y,&Z);
build(,N,);
int l,r,v;
for(int i=;i<M;++i){
l = gao()%N +;
r = gao()%N +;
v = gao()%MOD;
if(l>r) swap(l,r);
update(l,r,,N,,v);
}
LL ans=;
for(int i=;i<=N;++i) ans ^= i*query(i,,N,);
printf("%lld\n",ans);
}
return ;
}
HDU 6356 Glad You Came 2018 Multi-University Training Contest 5 (线段树)的更多相关文章
- HDU-6315 Naive Operations//2018 Multi-University Training Contest 2___1007 (线段树,区间除法)
原题地址 Naive Operations Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 502768/502768 K (Java/ ...
- HDU 1611 敌兵布阵 / HRBUST 1794 敌兵布阵(线段树)
HDU 1611 敌兵布阵 / HRBUST 1794 敌兵布阵(线段树) Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A ...
- 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 ...
- 2018 Arab Collegiate Programming Contest (ACPC 2018) G. Greatest Chicken Dish (线段树+GCD)
题目链接:https://codeforces.com/gym/101991/problem/G 题意:给出 n 个数,q 次询问区间[ li,ri ]之间有多少个 GCD = di 的连续子区间. ...
- HDU 6141 - I am your Father! | 2017 Multi-University Training Contest 8
思路来自 FXXL 最小树形图模板用kuangbin的 /* HDU 6141 - I am your Father! [ 最小树形图 ] | 2017 Multi-University Traini ...
- HDU 4946 Area of Mushroom(2014 Multi-University Training Contest 8)
思路: 只有速度最大才有可能为1,速度不是最大肯定为0,那么就是 只需要操作那些速度最大的点,这些点求一个凸包,判断一下是不是在凸包边上即可. 有几个需要注意的地方: 1.最大速度如果为0 那么肯 ...
- HDU 4939 Stupid Tower Defense (2014 Multi-University Training Contest 7)
思路:首先红色肯定要放在最后面.前面蓝色和绿色dp求解. dp[i][j] 表示前面(i+j) 个 有 i 个蓝色塔 j个绿色塔 能造成最大伤害. //====================== ...
- HDU 4913 Least common multiple(2014 Multi-University Training Contest 5)
题意:求所有自己的最小公倍数的和. 该集合是 2^ai * 3^bi 思路:线段树. 线段树中存的是 [3^b * f(b)] f(b)表示 因子3 的最小公倍数3的部分 为 3^b的个数 ...
随机推荐
- SVN版本库的备份、还原、移植(初级篇、中级篇和高级篇)
版本库数据的移植:svnadmin dump.svnadmin load 导出: $svnlook youngest myrepos //查看到目前为止最新的版本号 $svnadmin dump my ...
- 酷狗缓存文件kgtemp的加密方式
[转自:http://www.cnblogs.com/KMBlog/p/6877752.html] 首先对比了一下缓存文件和下载好的mp3文件,发现缓存文件多了1024个字节,而且对比了几个缓存文件, ...
- this,你是谁?
在js中this不像其它语言那样容易理解,它有时候指window对象,有时候又是其它对象,那么this,你到底是谁呢?要分析this就要先理解js中的方法定义,因为this一般都是在方法中使用的,而且 ...
- node中的require和exports
http://cnodejs.org/topic/4f16442ccae1f4aa270010e9
- 【BZOJ4665】小w的喜糖 容斥+组合数
[BZOJ4665]小w的喜糖 Description 废话不多说,反正小w要发喜糖啦!! 小w一共买了n块喜糖,发给了n个人,每个喜糖有一个种类.这时,小w突发奇想,如果这n个人相互交换手中的糖,那 ...
- 创建TPL自定义模板
文件布局 <!--1d7c7a527b6335cc7a623305ca940e1findex.tpl.html--> <!DOCTYPE html PUBLIC "-//W ...
- Centos6.5下Samba服务器的安装和配置
1.安装samba服务 # yum install samba samba-client samba-swat 2.安装包说明 samba-3.6.23-43.el6_9.x86_64----> ...
- Oracle Schema Objects——Tables——Table Compression
Oracle Schema Objects Table Compression 表压缩 The database can use table compression to reduce the amo ...
- mysql 中事件
# 创建存储过程 /* delimiter // create procedure test() begin update test SET name = date_format(now(),'%Y- ...
- 数值和字符串相互转换(C++ 数据类型转换技巧)
类型转换是将一种类型的值映射为另一种类型的值.进行数据类型的转换. 是在实际代码编写中经常遇到的问题,特别是字符串和其他类型的转换. 1.将字符串转换为整数 (1).转换函数// 双精度函数doubl ...