BZOJ:4869: [Shoi2017]相逢是问候
4869: [Shoi2017]相逢是问候
先说点正经的……
显然做了有限次(我只知道是有限次,而且不会大,别人说是log次?)修改以后会达到不动点,即以后怎么修改都不变了。
然后就随便做了。(3个log不知道是不是暴力啊)
但是需要拓展欧拉定理:
p与a不互质时,设c=b mod φ(p)(专门设出来是因为公式不能正常显示),如果b>=φ(p):$a^b ≡ a^{c+φ(p)}$(注意b<φ(p)的时候不能用)
要证明的话可以用数学归纳法证。
可是题目翻车了……
大家都质疑题目数据有问题

得知这一点,窝的瓜心是崩溃的。
这可是省选题,关系到六个省的oier的命运。
我认识的几位dalao就参加了这场省选,有的进队,有的从此AFO。
过几天我也要省选了,要是出了类似的差错被卡退役,西瓜可是不会同意的。
为退役的选手们惋惜,也只能祝他们高考加油了。
(也许过几天就轮到我了呢?
瓜之将死,其言也善
upd:后来bzoj上数据更正了呢
#include<cstdio>
#include<algorithm>
#define MN 100001
#define lp p<<1
#define rp (p<<1)|1
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
int n,m,MOD,c,w=,S[MN],W[MN],a[MN],P[MN],num=,t,l,r,sum[MN<<];
bool bo[MN<<],bi[MN];
inline void M(int &x){while(x>=MOD)x-=MOD;}
inline int mi(int x,int y,int MOD,bool &bi){
int mmh=;
bool fx=;
while (y){
if (y&) bi|=fx|(1LL*x*mmh>=MOD),mmh=1LL*mmh*x%MOD;
fx|=1LL*x*x>=MOD;x=1LL*x*x%MOD;y>>=;
}
return mmh;
}
inline int phi(int p){
int o=;
for (int i=;P[i]*P[i]<=p&&i<=num;i++)
if (p%P[i]==){
p/=P[i];o*=P[i]-;
while (p%P[i]==) p/=P[i],o*=P[i];
}
if (p-) o*=p-;
return o;
}
void work(int p){
S[w++]=p;
if (p==) return;
work(phi(p));
}
int Mavis(int a,int L){
int mmh=a%S[L];
bool bi=a>=S[L];
for (int k=L;k;k--) mmh=mi(c,mmh+(bi?S[k]:),S[k-],bi);
return mmh;
}
void cg(int p,int l,int r,int L,int R){
if (bo[p]) return;
if (l==r) {W[l]++;bo[p]=(W[l]==w-);sum[p]=Mavis(a[l],W[l]);return;}
int mid=l+r>>;
if (R<=mid) cg(lp,l,mid,L,R);else
if (L>mid) cg(rp,mid+,r,L,R);else
cg(lp,l,mid,L,mid),cg(rp,mid+,r,mid+,R);
bo[p]=bo[lp]&bo[rp];
M(sum[p]=sum[lp]+sum[rp]);
}
void build(int p,int l,int r){
bo[p]=;
if (l==r) sum[p]=a[l];else{
int mid=l+r>>;
build(lp,l,mid);build(rp,mid+,r);
M(sum[p]=sum[lp]+sum[rp]);
}
}
int ask(int p,int l,int r,int L,int R){
if (l>=L&&r<=R) return sum[p];
if (l>R||r<L) return ;
int mid=l+r>>;
return (ask(lp,l,mid,L,R)+ask(rp,mid+,r,L,R))%MOD;
}
int main(){
register int i,j,k;
n=read();m=read();MOD=read();c=read();
for (i=;i*i<=MOD;i++){
if (!bo[i]) P[++num]=i;
for (j=;j<=num&&i*P[j]*i*P[j]<=MOD;j++) if (bo[i*P[j]]=,i%P[j]==) break;
}
work(MOD);S[w++]=;
for (i=;i<=n;i++) a[i]=read(),W[i]=;
build(,,n);
while (m--) if (t=read(),l=read(),r=read(),t==) cg(,,n,l,r);else printf("%d\n",ask(,,n,l,r));
}
upd:后来我退役了呢
BZOJ:4869: [Shoi2017]相逢是问候的更多相关文章
- bzoj 4869: [Shoi2017]相逢是问候 [扩展欧拉定理 线段树]
4869: [Shoi2017]相逢是问候 题意:一个序列,支持区间\(a_i \leftarrow c^{a_i}\),区间求和.在模p意义下. 类似于开根操作,每次取phi在log次后就不变了. ...
- BZOJ4869:[SHOI2017]相逢是问候——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=4869 题面复制于洛谷:https://www.luogu.org/problemnew/show/P ...
- Bzoj4869: [Shoi2017]相逢是问候
题面 传送门 Sol 摆定理 \[ a^b\equiv \begin{cases} a^{b\%\phi(p)}~~~~~~~~~~~gcd(a,p)=1\\ a^b~~~~~~~~~~~~~~~~~ ...
- [SHOI2017]相逢是问候
Description 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,a ...
- bzoj4869: [Shoi2017]相逢是问候(欧拉函数+线段树)
这题是六省联考的...据说数据还出了点锅,心疼六省选手QAQ 首先要知道扩展欧拉定理... 可以发现每次区间操作都会使模数进行一次phi操作,而一个数最多取logp次phi就会变成1,这时后面的指数就 ...
- 【bzoj4869】[Shoi2017]相逢是问候 线段树+扩展欧拉定理
Description Informatikverbindetdichundmich. 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两 ...
- BZOJ4869 [Shoi2017]相逢是问候 【扩展欧拉定理 + 线段树】
题目链接 BZOJ4869 题解 这题调得我怀疑人生,,结果就是因为某些地方\(sb\)地忘了取模 前置题目:BZOJ3884 扩展欧拉定理: \[c^a \equiv c^{a \mod \varp ...
- 【bzoj4869】[Shoi2017]相逢是问候 扩展欧拉定理+并查集+树状数组
题目描述 Informatik verbindet dich und mich. 信息将你我连结. B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以分为两种:0 ...
- [BZOJ4869][六省联考2017]相逢是问候(线段树+扩展欧拉定理)
4869: [Shoi2017]相逢是问候 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 1313 Solved: 471[Submit][Stat ...
随机推荐
- 54、js初识
今天这篇将介绍javascript,学完javascript就可以使你的网页动起来. 一.JavaScript概述 1.JavaScript的历史 1992年Nombas开发出C-minus-min ...
- Scrapy爬虫实例——校花网
学习爬虫有一段时间了,今天使用Scrapy框架将校花网的图片爬取到本地.Scrapy爬虫框架相对于使用requests库进行网页的爬取,拥有更高的性能. Scrapy官方定义:Scrapy是用于抓取网 ...
- Spring之AOP二
在Spring之AOP一中使用动态代理将日志打印功能注入到目标对象中,其实这就是AOP实现的原理,不过上面只是Java的实现方式.AOP不管什么语言它的几个主要概念还是有必要了解一下的. 一.AOP概 ...
- HTTPS从认识到线上实战全记录
前言 关于HTTPS,基本上你想知道的都在这里了.本文原标题<HTTPS原理与实践>,下图是本文配套PPT的目录截图: [TOC] 原理篇 认识HTTPS 先说一下,本文可能有些地方由于描 ...
- Macaca环境搭建踩坑总结
1.使用命令 npm i macaca-android -g 安装一直不成功,使用Macaca doctor 一直没有显示出android C:\Users\ABC>npm i macaca- ...
- Q:同时安装了python2和python3的电脑下pip的使用
本人电脑设置的默认为python3.5的,由于需要,安装了pyhton2.7.之后需要为python2.7使用pip方式安装一个requests模块,但是,在命令行下执行pip install req ...
- IDLE3.6.3 Mac版不支持中文输入解决办法
最近安装了IDLE 3.6.3版本 但是在IDLE中要输入中文注释时发现虽然输入法切换到了中文,但输入的还是英文.然后我在IDLE外试了下,输入中文没问题,于是就确认应该是IDLE的问题. 网上查询到 ...
- linux odbc连接sql server2014
首先坑爹呀!由于配置Zabbix 用到这个,网上资料一顿搜,一顿报错,调各种参数,依然无法连接,我竟无言以对: 这个只是项目的一小部分,只提供成功案例,没做深入研究,可以让遇到的兄弟少走弯路: 建议第 ...
- Ubuntu16.04 IDE: 用Vim逐步打造一个IDE
目前打造完成的IDE主要有: terminator+Bundle+NERDtree+YCF(youcompleteme)+UltiSnips+新创建文件自动补充注释和作者,版权信息等 1,当任务比较多 ...
- 3.移植uboot-使板卡支持nor、nand
在上一章,我们添加了nor,nand启动后,uboot启动出如下图所示: 上面的Flash: *** failed *** 是属于uboot第二阶段函数board_init_r()里的代码, 代码如下 ...