Doom HDU - 5239 (找规律+线段树)
题目链接:
题目大意:首先是T组测试样例,然后n个数,m次询问,然后每一次询问给你一个区间,问你这个这段区间的加上上一次的和是多少,查询完之后,这段区间里面的每个数变为原来的平方。
具体思路:这个模数,和正常的模数不一样。
然后通过打表能发现,每个数不断自身平方对p取模后经过有限次 就不会变化了,
测试少于30次
所以也就是说每个节点至多会被更新30次。
注意会爆long long ,需要用unsigned long long .
AC代码:
#include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
# define ull unsigned long long
# define lson l,mid,rt<<
# define rson mid+,r,rt<<|
const int maxn = 4e5+;
const ull mod = ;
struct node
{
ull sum;
int flag;
} tree[maxn];
ull qsmu(ull t1,ull t2)
{
ull ans=0ll;
while(t2)
{
if(t2&)
ans=(ans+t1)%mod;
t2>>=;
t1=(t1+t1)%mod;
}
return ans;
}
ull tot;
void up(int rt)
{
tree[rt].sum=(tree[rt<<].sum+tree[rt<<|].sum)%mod;
tree[rt].flag=(tree[rt<<].flag&tree[rt<<|].flag);
}
void build(int l,int r,int rt)
{
tree[rt].flag=;
tree[rt].sum=;
if(l==r)
{
scanf("%lld",&tree[rt].sum);
return ;
}
int mid=l+r>>;
build(lson);
build(rson);
up(rt);
}
void update(int l,int r,int rt,int L,int R)
{
if(R<l||r<L||tree[rt].flag)
return ;
if(l==r)
{
ull tmp=tree[rt].sum;
tree[rt].sum=qsmu(tree[rt].sum,tree[rt].sum);
if(tmp==tree[rt].sum)
tree[rt].flag=;
return ;
}
int mid=(l+r)>>;
update(lson,L,R);update(rson,L,R);
up(rt);
}
void ask(int l,int r,int rt,int L,int R)
{
if(R<l||r<L)
return ;
if(L<=l&&R>=r)
{
tot=(tot+tree[rt].sum)%mod;
return ;
}
int mid=(l+r)>>;
ask(lson,L,R);ask(rson,L,R);
up(rt);
}
int main()
{
int T;
int Case=;
scanf("%d",&T);
while(T--)
{
tot=;
int m,n;
scanf("%d %d",&n,&m);
build(,n,);
printf("Case #%d:\n",++Case);
while(m--)
{
int l,r;
scanf("%d %d",&l,&r);
ask(,n,,l,r);
printf("%lld\n",tot);
update(,n,,l,r);
}
}
return ;
}
、
Doom HDU - 5239 (找规律+线段树)的更多相关文章
- 随机序列[SHOI2016](找规律+线段树)
传送门 这道题的题意就是给你n个数让你在每个数之间插入+.-.*三种运算符中的一种,然后算出一个答案,再把答案加起来. 这题肯定是不能暴力的(题目都告诉你了由3n-1种结果).我们先从小的情况枚举找一 ...
- A Simple Problem with Integers 循环节 修改 平方 找规律 线段树
A Simple Problem with Integers 这个题目首先要打表找规律,这个对2018取模最后都会进入一个循环节,这个循环节的打表要用到龟兔赛跑. 龟兔赛跑算法 floyed判环算法 ...
- hdu 5700区间交(线段树)
区间交 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...
- Snacks HDU 5692 dfs序列+线段树
Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...
- W - Doom HDU - 5239 线段树 找取模的规律+求一个很大的数的平方对一个数取模的写法 特别的模数==2^63-2^31
这个题目一开始感觉还是有点难的,这个模数这么大,根本就不知道怎么写,然后去搜了题解,知道了怎么去求当x很大的时候x的平方对一个数取模怎么样不会爆掉. 然后还顺便发现了一个规律就是当一个数更新一定次数之 ...
- hdu 3303 Harmony Forever (线段树 + 抽屉原理)
http://acm.hdu.edu.cn/showproblem.php?pid=3303 Harmony Forever Time Limit: 20000/10000 MS (Java/Othe ...
- HDU 6047 Maximum Sequence(线段树)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6047 题目: Maximum Sequence Time Limit: 4000/2000 MS (J ...
- hdu 3397 Sequence operation (线段树 区间合并 多重标记)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3397 题意: 给你一串01串,有5种操作 0. 区间全部变为0 1.区间全部变为1 2.区间异或 3.询问 ...
- HDU 2795 Billboard 【线段树维护区间最大值&&查询变形】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2795 Billboard Time Limit: 20000/8000 MS (Java/Others) ...
随机推荐
- CSAPP:第十章 系统级I/O
CSAPP:第十章 系统级I/O 10.1 unix I/O10.2 文件10.3 读取文件元数据10.4 读取目录内容10.5 共享文件10.6 我们该使用哪些I/O函数? 10.1 unix I/ ...
- 【原创】从Rest到Graphql
引言 开局两张图,内容全靠编- ok,如图所示,我在去年曾经写过一篇文章<闲侃前后端分离的必要性>.嗯,我知道肯定很多人没看过.所以我做一个总结,其实啰里八嗦了一篇文章,就是想说一下现在的 ...
- Elasticsearch 通关教程(七): Elasticsearch 的性能优化
硬件选择 Elasticsearch(后文简称 ES)的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件../config/elasticsearch. ...
- 将root 当成arraylist放入数据sturts2 入门笔记
刚启动idea 就报出错误 [-- ::,] Artifact -sturts2:war exploded: Error during artifact deployment. See server ...
- centos7之zabbix的监控H3C ER3200G2流量
1.首先在服务器端安装snmp工具 yum -y install net-snmp-utils snmp-libs snmp-devel snmp 启动snmpd服务 systemctl start ...
- RabbitMQ消息队列
RabbitMQ消息队列 !!! 注意,保证服务器的内存足够,磁盘足够,以及删除/etc/hosts中没有用的dns解析 # 优点,能够保证消息数据持久化,不丢失,支持高并发 安装学习rabbitm ...
- python中的__dict__,__getattr__,__setattr__
python class 通过内置成员dict 存储成员信息(字典) 首先用一个简单的例子看一下dict 的用法 class A(): def __init__(self,a,b): self.a = ...
- hihoCoder #1954 : 压缩树(虚树)
题意 有一棵 \(n\) 个节点且以 \(1\) 为根的树,把它复制成 \(m\) 个版本,有 \(q\) 次操作,每次对 \([l, r]\) 这些版本的 \(v\) 节点到根的路径收缩起来. 收缩 ...
- android wake lock 电源管理简单学习
需要配置清单文件:<uses-permission android:name="android.permission.WAKE_LOCK" /> 也可以参考我之前写的这 ...
- mobilebone与weiui_example.css 使用问题
weiui_example.css 原page样式属性opacity设置为0 ... 由于我采取的是使用mobilebone,没按照weui官网的来搞这种效果,所以这里会有冲突,设置为默认即可,即op ...