4869: [Shoi2017]相逢是问候 题意:一个序列,支持区间\(a_i \leftarrow c^{a_i}\),区间求和.在模p意义下. 类似于开根操作,每次取phi在log次后就不变了. 不互质怎么办? 我才知道, \[ n^x \equiv n^{x \mod \varphi(p)\ +\ \varphi(p)} \pmod p,\ x \ge \varphi(p) \] 不要求互质,只要求\(x \ge \varphi(p)\) 然后就很好做了...线段树维护每个点的操作次数和和…
题目描述 Informatik verbindet dich und mich. 信息将你我连结. B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每一个数ai替换为c^ai,即c的ai次方,其中c是输入的一个常数,也就是执行赋值ai=c^ai1 l r求第l个到第r个数的和,也就是输出:sigma(ai),l<=i<=rai因为这个结果可能会很大,所以你只需要输出结果mod…
题目链接 BZOJ4869 题解 这题调得我怀疑人生,,结果就是因为某些地方\(sb\)地忘了取模 前置题目:BZOJ3884 扩展欧拉定理: \[c^a \equiv c^{a \mod \varphi(p) + [a \ge p]p} \pmod p\] 我们发现当我们进行\(0\)操作,就相当于在\(a\)底部添加一层\(c\) 当我们进行得足够多的时候,\(\varphi(p)\)就会取到\(1\),从而不再变化 所以每个位置操作次数其实是有限的,为\(O(logp)\)次 为何是\(O…
这题是六省联考的...据说数据还出了点锅,心疼六省选手QAQ 首先要知道扩展欧拉定理... 可以发现每次区间操作都会使模数进行一次phi操作,而一个数最多取logp次phi就会变成1,这时后面的指数就没有用了,以后这个数的答案就不会变化了,也就是说一个数最多只会进行log次修改,那么我们就可以用线段树维护,如果某棵子数的最小操作次数达到了使模数变成1的次数我们就不需要修改了. 但是我们发现快速幂还有一个log,如果不优化的话三个log很有可能TLE.这个时候就有新操作了,底数是一定的c,指数最大…
题意 https://loj.ac/problem/2142 思路 一个数如果要作为指数,那么它不能直接对模数取模,这是常识: 诸如 \(c^{c^{c^{c..}}}\) 的函数递增飞快,不是高精度可以描述的,这也是常识. 所以,此题要用到很多数论知识. 欧拉函数 定义 \(\varphi(n)\) 为 \([1,n]\) 中与 \(n\) 互质的正整数个数(包括 \(1\)). 通式 \(\displaystyle \varphi(n)=n\prod_{p|n}(1-{1\over p})\…
题面 传送门 Sol 摆定理 \[ a^b\equiv \begin{cases} a^{b\%\phi(p)}~~~~~~~~~~~gcd(a,p)=1\\ a^b~~~~~~~~~~~~~~~~~~gcd(a,p)\neq1,b<\phi(p)\\ a^{b\%\phi(p)+\phi(p)}~~~~gcd(a,p)\neq1,b\geq\phi(p) \end{cases}~~~~~~~(mod~p) \] 处理出\(p\)每次取\(\varphi\)取到\(1\)为止的\(\varphi…
[BZOJ4869]相逢是问候(线段树,欧拉定理) 题面 BZOJ 题解 根据欧拉定理递归计算(类似上帝与集合的正确用法) 所以我们可以用线段树维护区间最少的被更新的多少次 如果超过了\(\varphi\)的限制 就不用再计算了 如果需要计算就每次暴力算 这样的复杂度\(O(nlog^2)\) #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<…
4869: [Shoi2017]相逢是问候 先说点正经的…… 显然做了有限次(我只知道是有限次,而且不会大,别人说是log次?)修改以后会达到不动点,即以后怎么修改都不变了. 然后就随便做了.(3个log不知道是不是暴力啊) 但是需要拓展欧拉定理: p与a不互质时,设c=b mod φ(p)(专门设出来是因为公式不能正常显示),如果b>=φ(p):$a^b ≡ a^{c+φ(p)}$(注意b<φ(p)的时候不能用) 要证明的话可以用数学归纳法证. 可是题目翻车了…… 大家都质疑题目数据有问题…
Description Informatikverbindetdichundmich. 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每一个数ai替换为c^ai,即c的ai次方,其中c是 输入的一个常数,也就是执行赋值ai=c^ai1 l r求第l个到第r个数的和,也就是输出:sigma(ai),l<=i<=rai因为 这个结果可能会很大,所以你只需要输出结…
相逢是问候 Time Limit: 40 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description Informatikverbindetdichundmich. 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每一个数ai替换为c^ai,即c的ai次方,其中c是 输入的一个常数,也就是执行赋值…
巨难!!! 去年六省联考唯一的一道黑牌题,我今天一天从早到晚,把它从暴力15分怼到了90分,极端接近正解了. bzoj上A了,但是洛谷和loj上面就不行.伪正解会T,奇奇怪怪的类正解会WA.. 那么,网上的题解多得很,我就不细说了. 着重说一下我的理解感受和坑点. 1.不愧是黑牌题,显得十分的繁杂(并不). 首先要用到扩展欧拉定理,φ(),还有线段树辅助,快速幂,大量奇奇怪怪的小细节.....要人命啊. 2.根据之前那题上帝集合,我们可以得知当一个数被操作很多很多很多很多次之后就不变了,成为一个…
http://www.lydsy.com/JudgeOnline/problem.php?id=4869 题面复制于洛谷:https://www.luogu.org/problemnew/show/P3747#sub 参考洛谷的前两篇(也是仅有的两篇)题解. 首先我们要知道一个公式: 这又被叫做扩展欧拉定理,证明我们并不关心. 有了扩展欧拉定理,我们就能够避免高精度从而求出对于任意一个数的0操作之后变成什么数了. (递归或者迭代选一个,递归好理解,迭代有助于理解下面的题解,而且常数小) 我们又有…
原题为2017六省联考的D1T3 给出一个序列,m次操作,模数p和参数c 操作分为两种: 1.将[l,r]区间内的每个数x变为\(c^x\) 2.求[l,r]区间内数的和%p 首先,我们要了解一些数论姿势: 1.扩展欧拉定理 //我们熟知的费马小定理用于p是质数,欧拉定理用于a,p互质,而这道题都不满足这个限制 当\((b>=\phi(p))\)时,\(a^b=a^{b\mod \phi(p) + \phi(p)}\) 2.(其实不算数论姿势)一个数最多经过log此\(\phi\)就会变成1 所…
Description 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每一个数ai替换为c^ai,即c的ai次方,其中c是 输入的一个常数,也就是执行赋值ai=c^ai1 l r求第l个到第r个数的和,也就是输出:sigma(ai),l<=i<=rai因为 这个结果可能会很大,所以你只需要输出结果mod p的值即可. Input 第一行有三个整数n,m,p,…
Portal-->bzoj4869 Solution 这道题的话..长得就是线段树的样子qwq 如果做过的话..可能会联想到bzoj3211(没写博qwq晚点再说吧哈哈..) 首先大胆猜一波结论:这题跟3211一样也是修改到了一定程度就不会再有变化了!那然后写起来就是线段树暴力修改然后如果整个区间达到了修改上限的话那就不走了 然而这个上限是啥呢.. ​ 这里还是要用到扩展欧拉定理 \[ a^b\equiv \begin{cases} &a^{b\%\varphi(p)} &\gcd(…
链接:E.简单数据结构1 题意: 给一个长为n的序列,m次操作,每次操作: 1.区间加 2.对于区间,查询 ,一直到- 请注意每次的模数不同.   题解:扩展欧拉定理降幂 对一个数p取log(p)次的欧拉函数等于1,故可将操作2的复杂度降到log(p),可以直接求解.用树状数组的小技巧,可以在log的时间直接求出当前的a[i].具体见代码. #include <bits/stdc++.h> using namespace std; ; const int INF = 0x3f3f3f3f; ;…
4869: [Shoi2017]相逢是问候 Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 1313  Solved: 471[Submit][Status][Discuss] Description Informatikverbindetdichundmich. 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每…
4869: [Shoi2017]相逢是问候 Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 1205  Solved: 409[Submit][Status][Discuss] Description Informatikverbindetdichundmich. 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每…
线段树 by yyb Type1 维护特殊信息 1.[洛谷1438]无聊的数列 维护一个数列,两种操作 1.给一段区间加上一个等差数列 2.单点询问值 维护等差数列 不难发现,等差数列可以写成\(ad+b\)的形式 因为具有可加性 所以维护一下这个类似于斜率的东西 每次下放的时候把数列拆分成两段,\(d\)值公差不变 而变化的只有后面的常数项 至于如何只在一段区间内维护等差数列 相当于在当前\([l,n]\)位置维护这一段公差为\(d\)的等差数列 再在\([r+1,n]\)维护一个负公差就行了…
由扩展欧拉定理,a^(a^(a^(……^x)))%p中x作为指数的模数应该是φ(φ(φ(φ(……p)))),而p取log次φ就会变为1,也即每个位置一旦被修改一定次数后就会变为定值.线段树维护区间剩余修改次数的最大值,暴力修改即可. 可以预处理出每个位置进行k次操作后的值.直接计算是log^3的,会被卡常.考虑类似bsgs的分块,将指数拆成<10000和10000m两部分,预处理后即可O(1)查询,避免每次快速幂. 注意当指数<φ(p)不能加φ(p). #include<iostream…
题意 给出一个长度为 \(n\) 的序列 \(\{a_i\}\) 以及一个数 \(p\) ,现在有 \(m\) 次操作,每次操作将 \([l, r]\) 区间内的 \(a_i\) 变成 \(c^{a_i}\) . 或者询问 \([l, r]\) 之间所有 \(a_i\) 的和对 \(p\) 取模的结果 . \(n, m \le 5 \times 10^4, p \le 2^{14}\) 题解 考虑欧拉降幂(扩展欧拉定理),不会的可以看 这篇博客 . 然后对于这些不断叠加的指数,有如下式子 \[…
Description BZOJ传送门 Solution 这题涉及到指数嵌套堆叠,可能可以用欧拉函数解决. 试想一个数\(a_i\)经过\(k\)次操作后会变成什么? \[ k个c\;\; \begin{cases} {c^{c^{a_i}}} \end{cases} \] 我们有扩展欧拉定理,\(a,x,p\)为任意正整数: \[ a^x \equiv \begin{cases} a^{x\;mod\;\varphi(p)+\varphi(p)}&x\ge\varphi(p)\\ a^x&…
http://www.lydsy.com/JudgeOnline/problem.php?id=4869 欧拉降幂+线段树,每个数最多降log次,模数就会降为1 #include<cmath> #include<cstdio> #include<iostream> using namespace std; #define N 50001 int n,m,p,c; int a[N]; ]; ]; ],phi[]; int ans; bool flag; void read…
[题目]D. Power Tower [题意]给定长度为n的正整数序列和模数m,q次询问区间[l,r]累乘幂%m的答案.n,q<=10^5,m,ai<=10^9. [算法]扩展欧拉定理 [题解]扩展欧拉定理的形式: $$a^b\equiv a^{b\%\varphi(p)+\varphi(p)} \ \ mod \ \ p \ \ (b\geq \varphi(p))$$ 特别注意当b<φ(p)且(a,p)≠1时不变. 假如现在是三个累乘幂a^(b^c),那么根据扩展欧拉定理: $$a^…
传送门 题解 扩展欧拉定理. 线段树维护,已经全改到底了的节点就不管,不然暴力修改下去. //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<vector> #include<cstdio> #include<queue> #include<cmath> +; #define Fo…
P3747 [六省联考2017]相逢是问候 题目描述 \(\text {Informatik verbindet dich und mich.}\) 信息将你我连结. \(B\) 君希望以维护一个长度为 \(n\) 的数组,这个数组的下标为从 \(1\) 到 \(n\) 的正整数. 一共有 \(m\) 个操作,可以分为两种: \(0\) \(l\) \(r\) 表示将第 \(l\) 个到第 \(r\) 个数\(( a_l,a_{l+1},...a_r )\)中的每一个数\(a_i\)替换为 \(…
Description 支持以下两个操作: 将第 \(l\) 个数到第 \(r\) 个数 \(a_l,a_{l+1},\dots a_r\) 中的每个数 \(a_i\) 替换为 \(c^{a_i}\). \(c\) 是给定的常数. 求第 \(l\) 个数到第 \(r\) 个数的和,对 \(p\) 取模. \(N\leq 50000,p\leq 10^8\) Solution 首先有一道这题的弱化版:计算\(2^{2^{2^{\dots}}}\%p\) 的值. 扩展欧拉定理的板子.\[a^b\eq…
Priests of the Quetzalcoatl cult want to build a tower to represent a power of their god. Tower is usually made of power-charged rocks. It is built with the help of rare magic by levitating the current top of tower and adding rocks at its bottom. If…
题目链接 题意 给定一个长度为 n 的序列 a , 给定一个正整数 c 每次修改操作是把一段区间内的数 \(x_i\) 修改为 \(c^{x_i}\) 询问区间和模 p 的结果 Sol 修改是把一个数变成 \(c^x\) , 我们很容易想到降幂公式 , 这里由于 p 不一定与 c 互质 , 那么我们就使用扩展欧拉公式 , 也就是: \[a^{x}=\begin{cases} a^{x} \;\;,\;\;x<\varphi(p) \\ a^{x\mod\varphi(p)+\varphi(p)}…
黑白图像直方图 发布时间: 2017年7月9日 18:30   最后更新: 2017年7月10日 21:08   时间限制: 1000ms   内存限制: 128M 描述 在一个矩形的灰度图像上,每个像素点或者是黑色的或者是白色的.黑色像素点用1表示,白色像素点用0表示.现在要求你编写一个程序,计算每列上黑色像素点的个数并输出.如下图所示是一个6∗8的黑板图像. 1 1 0 0 1 1 1 1  0 1 1 0 1 0 1 0  1 1 1 1 0 1 1 0  0 1 1 0 0 1 0 0 …