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) ...
随机推荐
- EntityFramework 6.x和EntityFramework Core必须需要MultipleActiveResultSets?
前言 本节我们来探讨到底需不需要在连接字符串上加上MultipleActiveResultSets = true ?,若您有更深层次的理解欢迎留下您的脚印. EntityFramework 6.x和E ...
- [Bilingual] Different proofs of Jordan cardinal form (Jordan标准型的几种证明)
- 论学好Linux系统的超级重要性
不知道各位在日常的工作生活中有没有接触过“rm -rf /*”这个命令,因为这个命令搞出来的事情可还不少呢!前段时间就在一个群里看到了有个小伙子,老板让他去维护一下服务器,这小伙也不太懂,就问群里的大 ...
- dpdk-18.11网卡多队列RSS设置
背景 最近在做将基于dpdk-16.11.1开发的程序,转移到基于dpdk-18.11版本下开发.遇到了网卡RSS配置的问题,在这里纪录一下. 问题 dpdk-16.11.1 在dpdk-16.11. ...
- .netcore2.0发送邮件
SmtpClient smtpClient = new SmtpClient(); smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指 ...
- [Cordova 之 入门篇]
1. cordova是什么 Apache Cordova是一个开源的移动开发框架.允许你用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 2. 为什么用cordova 基于 ...
- <generatePublisherEvidence> 元素
<configuration> <runtime> <generatePublisherEvidence enabled="false"/> & ...
- mysql-SELECT子句的顺序
- [Luogu 4245] 任意模数NTT
Description 给定 \(2\) 个多项式 \(F(x), G(x)\),请求出 \(F(x) * G(x)\). 系数对 \(p\) 取模,且不保证 \(p\) 可以分解成 \(p = a ...
- bzoj 3196 && luogu 3380 JoyOI 1730 二逼平衡树 (线段树套Treap)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3196 题面; 3196: Tyvj 1730 二逼平衡树 Time Limit: 10 Se ...