HDU 5239 Doom [线段树]

别再死记硬背窗函数公式了!用MATLAB实战汉宁窗FIR滤波器,从频谱图看懂‘主瓣’和‘旁瓣’ 本文通过MATLAB实战演示汉宁窗FIR滤波器的设计过程,帮助读者从频谱图直观理解主瓣与旁瓣的特性。文章详细对比了矩形窗与汉宁窗的频谱差异,并提供了高通滤波器设计的完整代码示例,适用于数字信号处理学习和工程应用。 阅读详情

题意:N个数,每次给出L,R,先将区间和累加至计数器S,并将区间内每个数取平方。所有操作都对9223372034707292160取模。

范围:5组数据,10W个数

解法:很神奇的取模数,当某个数一直平方下去再对其取模,就会在某一步之后,一直都是那个数了..所以这就变成了单点有次数限制更改的线段树;

其复杂度为N*logN*限制次数(至多29);由于此题的乘法会暴longlong,需要用位操作模拟乘法。


代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<iostream>
#include<stdlib.h>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<bitset>
#pragma comment(linker, "/STACK:1024000000,1024000000")
template <class T>
bool scanff(T &ret){ //Faster Input
    char c; int sgn; T bit=0.1;
    if(c=getchar(),c==EOF) return 0;
    while(c!='-'&&c!='.'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
    if(c==' '||c=='\n'){ ret*=sgn; return 1; }
    while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10;
    ret*=sgn;
    return 1;
}
#define inf 1073741823
#define llinf 4611686018427387903LL
#define PI acos(-1.0)
#define lth (th<<1)
#define rth (th<<1|1)
#define rep(i,a,b) for(int i=int(a);i<=int(b);i++)
#define drep(i,a,b) for(int i=int(a);i>=int(b);i--)
#define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)
#define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)
#define mem(x,val) memset(x,val,sizeof(x))
#define mkp(a,b) make_pair(a,b)
#define findx(x) lower_bound(b+1,b+1+bn,x)-b
#define pb(x) push_back(x)
using namespace std;
typedef unsigned long long ll;
typedef pair<int,int> pii;

#define NN 280000
const ll mod=9223372034707292160llu;

int n,m,qn,ql,qr,lx[NN],rx[NN];
ll val[NN];
bool bj[NN];

void built(int n){
    for(m=1;m<n+3;m<<=1);
    rep(i,n+1,m)val[i+m]=0;
    rep(i,1,n)scanff(val[i+m]);
    rep(i,0,m<<1)bj[i]=0;
    rep(i,0,m-1)lx[i+m]=rx[i+m]=i;
    drep(th,m-1,1){
        lx[th]=lx[lth];
        rx[th]=rx[rth];
        val[th]=(val[lth]+val[rth])%mod;
    }
}
ll mul(ll x,ll y){
    ll z=0;
    while(x>0){
        if(x&1)z=(z+y)%mod;
        x>>=1;y=(y<<1)%mod;
    }
    return z;
}
void update(int th){
    int l=lx[th],r=rx[th];
    if(th>m){
        ll z=mul(val[th],val[th]);
        if(z==val[th])bj[th]=1;
        val[th]=z;
    }
    else{
        int mid=(l+r)>>1;
        if(!bj[lth]&&ql<=mid)update(lth);
        if(!bj[rth]&&qr> mid)update(rth);
        //maintain
        val[th]=(val[lth]+val[rth])%mod;
        if(bj[lth]&&bj[rth])bj[th]=1;
    }
}
ll query(int l,int r){
    ll ans=0;
    for(l=l+m-1,r=r+m+1;l^r^1;l>>=1,r>>=1){
        if(~l&1)ans=(ans+val[l^1])%mod;
        if(r&1) ans=(ans+val[r^1])%mod;
    }
    return ans;
}
int main(){
    tdata{
        printf("Case #%d:\n",cas);
        scanf("%d%d",&n,&qn);
        built(n);
        ll ans=0;
        rep(i,1,qn){
            scanf("%d%d",&ql,&qr);
            ans=(ans+query(ql,qr))%mod;
            update(1);
            printf("%llu\n",ans);
        }
    }
    return 0;
}


S7-1200与ABB机器人进行SOCKET通信的具体方法示例 阅读详情

相关推荐

LAMMPS实战:如何用ReaxFF力场模拟碳氢化合物热解(附完整脚本)

本文提供了一份使用LAMMPS软件中ReaxFF反应力场模拟碳氢化合物热解过程的完整实战指南。内容涵盖从环境准备、力场参数选择、能量最小化,到升温恒温动力学模拟的完整脚本编写,并介绍了基于轨迹文件的产物分析方法,帮助计算化学与材料科学研究者快速上手这一关键的分子动力学仿真技术。

soda5的博客 1100

Doom HDU - 5239 (找规律+线段树)

题目链接: D - Doom HDU - 5239 题目大意:首先是T组测试样例,然后n个数,m次询问,然后每一次询问给你一个区间,问你这个这段区间的加上上一次的和是多少,查询完之后,这段区间里面的每个数变为原来的平方。 具体思路:这个模数,和正常的模数不一样。 然后通过打表能发现,每个数不断自身平方对p取模后经过有限次 就不会变化了, 测试少于30次 所以...

diaomeijiao3430的博客 179

CosyVoice 本地部署详细教程 手把手小白教程

本文提供了详细的CosyVoice本地部署教程,强调了避免中文名称和空格的重要性,并列出了必要的软件安装步骤,包括CUDA、cuDNN、Git和Miniconda。教程涵盖了从检查CUDA版本到下载模型和运行模型的全过程,确保用户能够顺利部署并使用CosyVoice。

huazn612的博客 2万+

HDU 5239 DOOM 线段树

HDU 5239 DOOM 线段树标签(空格分隔): 线段树题目链接:hdu5239 题意:给定长度为N的序列,有Q个操作,每次操作询问区间[l,r]的和,并将区间的值平方,每次输出所有之前查询答案的和对2^63-2^31取模。 思路:找规律发现任何数平方30次之后模mod都不再变化。于是用线段树维护区间内平方次数最少的元素为多少,弱最小的大于30则不进行操作,直接返回区间和,反之则继续递归直至

alpc_paul的专栏 1081

修复ASUS in WinRE教程

暑假入手了天选三,发现是win11家庭版,本来想着家庭版将就一下无所谓,结果在使用的过程中发现相较于专业版真的是不能比,于是自己就重装了系统,发现ASUS in WinRE入口不见了,折腾半天最后成功修复。

weixin_46202629的博客 1万+

手把手教你用AD9834 DDS模块DIY一个可调信号源(附AD原理图/PCB/程序)

本文详细介绍了如何使用AD9834 DDS模块DIY一个高精度可调信号源,涵盖硬件搭建、原理图解读、PCB优化和程序烧录等关键步骤。通过STM32控制实现0-10MHz频率范围输出,特别适合电子设计与射频实验,提供完整的AD原理图、PCB设计和程序代码参考。

weixin_31854867的博客 408

HDU 5239 Doom [线段树,更新有上界]【数据结构】

好久没有更新博客了 更新一波吧,,,题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5239——————————————————————————————————————DoomTime Limit: 12000/6000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) T

Tabris的博客 709

单细胞转录组聚类分析R包——SC3的应用

前言 在做单细胞相关聚类分析的过程中,为了研究异质性,发现了一种专门用于单细胞转录组的聚类分析R包——SC3(single cell consensus clustering,单细胞一致性聚类)。该聚类算法发表于Nature Methods(2017),能够让单细胞RNA-seq基于转录组特征对细胞类型进行定量表征。这是一种用户友好的无监督聚类工具,它通过一致方法将多个聚类解决方案组合在一起,从而得到高精度和鲁棒性的分群结果。SC3包的官方具体使用教程见:http://www.bioconductor.or

m0_51042606的博客 5005

HDU5239.Doom——线段树

http://acm.hdu.edu.cn/showproblem.php?pid=5239转:http://blog.youkuaiyun.com/zava_1087/article/details/46040747 任意数的平方,最多29次模上p,都会不变#include <bits/stdc++.h> #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1c

fsdcyr 1061

java链接opc报异常org.jinterop.dcom.common.JIException: Access is denied解决

记录一下这次从发现问题到解决问题的过程 项目是通过java链接OPC,读取数据,并且发送数据的 程序一直运行正常,最近客户反馈说无法读取数据,通过查看,发现访问异常了。花了2天的时间才解决了这个异常。 org.jinterop.dcom.common.JIException: Access is denied, please check whether the [domain-username-password] are correct. Also, if not already done please c

机器学习菜鸟 1万+

【WRFDA运行第五期】运行 OBSGRID 客观分析

运行 OBSGRID 客观分析

WW、forever的博客 1048

hdu 5239 Doom 线段树

DoomTime Limit: 12000/6000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 806    Accepted Submission(s): 200 Problem DescriptionTHE END IS COMINGGGGGG! Mike

acm 499

华为交换机系统软件升级和安全漏洞修复教程

在华为交换机国网可以查询到华为交换机官方电话:400-822-9999,通过下命令查询出需要升级的交换机软件版本和补丁版本号发给华为,获取新的升级系统软件和补丁以及升级教程。下面是我升级华为交换机总结的教程,作为参考。...

星如雨落 2965

hdu 5239 Doom(线段树+数论)

题意: 给出n个数和一个初始值为0的答案。每次操作给出一个区间[l,r],把区间所有的数加到答案中,之后把区间的每个数都平方。每次操作都需要输出答案 mod 9223372034707292160(2 ^ 63 - 2 ^ 31) 思路 这题的做法和 hdu 4027 类似 首先,应该想到这个题可以用线段树来维护区间的和,然后对于(2 ^ 63 - 2 ^ 31)这个数,即任意数的平方

小G的ACM之路 1192

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

HDU 5239 Doom(线段树)

题意:给出一个长度为n的序列,和m次查询,每次查询一个区间的和,但查询之后把区间内每个点的值平方一次,所有的结果模上9223372034707292160。 其实这题一点也不难。。。 一个数又平方又模的次数多了以后,会维持在一个固定的值不动。打表可以发现规律,但是仔细想想也是可以想明白的。如果x的素因子的集合包含模的素因子集合,那么经过足够多的次数之后,取模会直接为0;反之,据费马小定

Just One Last Coding~♬ 1040

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HDU 5239 Doom(线段树)

Doom Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 1547 Accepted Submission(s): 426 Problem Description THE END IS COMINGGGGGG! Mik

妍恐龙的博客....^~^眼熟我 471

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

hdu 5239 Doom(线段树)

Doom Time Limit: 12000/6000 MS (Java/Others)Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 1401Accepted Submission(s): 368 Problem Description THE END IS COMINGGGGGG!Mike h...

weixin_30339457的博客 131

hdu5239Doom 线段树+找规律

//给出n个数据 , 对于每次[l,r] //操作,s加上[l,r]区间的所有数 //之和,并且将[l,r]区间的所有数 //都平方 //输出s%9223372034707292160 //打表可以发现对于每个数在做一定操作 //后其值一定不变 //所以只需要维护一个标记就行 #include<cstdio> #include<cstring> #include<iostream> using n

ijbuhv的专栏 695

Doom HDU - 5239(线段树+思维)

THE END IS COMINGGGGGG! Mike has got stuck on a mystery machine. If he cannot solve this problem, he will go to his doom. This machine is consist of n cells, and a screen. The i-th cell contains a num...

starlet_kiss的博客 262

HDU 5239 Doom 线段树

题意: 有\(n(1 \leq n \leq 10^5)\)个数,和\(m(1 \leq m \leq 10^5)\)操作,和一个计算\(s\),一切运算都在模\(MOD\)进行的。 操作\(l, \, m\)表示先将区间\([l, r]\)的数字之和累加到\(s\)上,然后将区间的每个数平方。 输出每次操作后的\(s\)。 分析: 虽然原理不是特别懂,但是有这样一个事实: 任意一个数\(x\)平...

weixin_30488313的博客 80

HDU 5239 Doom 线段树+找规律

import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String args[]){ //Scanner cin=new Scanner(System.in); BigInteger a=BigInteger.valueOf(5); Big

became_a_wolf的专栏 356

hdu 5239 Doom - 线段树 +特殊取模

hdu 5239 Doom - 线段树 +特殊取模THE END IS COMINGGGGGG!Mike has got stuck on a mystery machine. If he cannot solve this problem, he will go to his doom.This machine is consist of ncells, and a screen. The i-th cell contains a number ai(1≤i≤n). The screen also con

ly59782的博客 521

hdu5239 Doom(线段树单点更新区间查询+数论)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5239 思路: 这题的mod是个很特殊的数。。对于任何数,连续乘以29次以上,取模就不再变化了。 这样题目就好做了,我只要通过区间查询,看当前区间里面的数中最小连乘次数是否超过29,如果超过29,就不再对点进行更新。 注意:由于mod很大,所以我两个数(mod-1)+(mod-1)时会爆

hahahaha 526

hdu - 5239 Doom(线段树+数论)

Doom Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 426    Accepted Submission(s): 96 Problem Description THE END IS COMINGGGGGG!

龙崎的专栏 1280

HDU5239 Doom(线段树,区间更新,区间平方)

Problem Description THE END IS COMINGGGGGG! Mike has got stuck on a mystery machine. If he cannot solve this problem, he will go to his doom. This machine is consist of n cells, and a sc

riba2534的博客 967

HDU 5239 Doom 【打表找规律 + 线段树区间更新中的单点更新】好题!

传送门 // 题意: 开始有一个计数器为0, 然后每次询问给出一个区间, 将l-r之间所有的数每一个都平方一下. 平方之前先将sum[l-r] 的和加到s上. 然后每次询问输出s, 注意每次修改操作都要mod 9223372034707292160. 思路: 看到提示”线段树区间更新中的单点更新”, 就已经猜出了每个点被更新的次数不会太多次吧? 答案也确实是这样的, 我们先打表, 注意这个lo...

Anxdada -- 我等风来也等你 403
上一篇: FZU 2201 序列操作 [线段树]
下一篇: CodeForces 128D Numbers [想法题/贪心]
GrassTreeFlower
博客等级 码龄11年 14粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值