51NOD 1594:Gcd and Phi——题解】的更多相关文章

OTZ 又被吊打了...我当初学的都去哪了??? 思路:反演套路? 提交:\(1\)次 题解: 求\(\sum_{i=1}^{n}\sum_{j=1}^{n}\varphi(gcd(\varphi(i),\varphi(j)))\) 设\(c[i]=\sum_{j=1}^n[\varphi(j)==i]\) 有: \(\sum_{i=1}^{n}\sum_{j=1}^{n}\varphi(gcd(i,j))*c[i]*c[j]\) 欧拉反演一下,把\(gcd\)扔出来 \(\sum_{i=1}^…
题目链接 传送门 思路 如果这题是这样的: \[ F(n)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\phi(gcd(i,j)) \] 那么我们可能会想到下面方法进行反演: \[ \begin{aligned} F(n)=&\sum\limits_{k=1}^{n}\phi(k)\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[gcd(i,j)=k]&\\ =&\sum\limits_{k=1}^{n}…
题解 跟随小迪学姐的步伐,学习一下数论 小迪学姐太巨了! 这道题的式子很好推嘛 \(\sum_{i = 1}^{n} \sum_{j = 1}^{n} \sum_{d|\phi(i),\phi(j)} \phi(d) [gcd(\frac{\phi(i)}{d},\frac{\phi(j)}{d}) == 1]\) \(\sum_{i = 1}^{n} \sum_{j = 1}^{n} \sum_{d|\phi(i),\phi(j)} \phi(d) \sum_{t | \frac{\phi(i…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1594 参考及详细推导:http://www.cnblogs.com/rir1715/p/8584083.html 设\(cnt_i=\sum_{j=1}^n[\phi(j)==i]\),这个可以在\(O(n)\)处理出来. 我们用它把\(\phi(i)\phi(j)\)换元得: \(\sum_{i=1}^n\sum_{j=1}^n\phi(gcd(i,j))\times…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=2026 参考及推导:https://www.cnblogs.com/ivorysi/p/9157781.html (其公式有一处小问题,请注意.) 然后就没了……我觉得讲得挺详细了. 另外map跑得可能比哈希表还快可还行. #include<map> #include<cmath> #include<stack> #include<queu…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1227 懒得打公式了,看这位的吧:https://blog.csdn.net/fromatp/article/details/74999989 又一次将我的智商下限刷低的一道题,论我根本没注意到[gcd(i,j)==1]*j=phi(i)*i/2这个悲催的事实. 果然我数学活该学不好. #include<map> #include<cmath> #inclu…
题解 显然可以O(nlogn)计算 代码 //by 减维 #include<set> #include<map> #include<queue> #include<ctime> #include<cmath> #include<bitset> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #i…
51nod 1564 由于数据是随机的,可以证明,对于每一个数,向左或右找比它小的数,长度是logn级别的 考虑枚举最大值 注意,对于每一个最大值,如果直接用2个循环枚举左右端点的话,理论是lognlogn级别的,但是还是很容易被卡的,换成贪心,用2个指针指着左右端点,每一次移动我们往数大的那个方向移动 代码: //File Name: nod1564.cpp //Author: long //Mail: 736726758@qq.com //Created Time: 2016年10月10日…
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1575 万年巨坑终于填掉了…… 首先是煞笔西瓜的做题历程O_O. 原题要求$\sum_{i=1}^n\sum_{j=1}^i\sum_{k=1}^i [(i,j),(i,k)]$ 那么先推一波式子吧 balabala 我也忘记自己是怎么推的了(雾 总之最后推出来是这样的 $ ans=\sum_{i=1}^{n} f(\left\lfloor\frac{n}{i}…
现在感觉反演好多都是套路QAQ…… #include<bits/stdc++.h> using namespace std; ; typedef long long ll; int n,cnt,prime[N],phi[N],mu[N],vis[N]; ll ans,s[N],f[N]; void calcmu(){ memset(prime,,; memset(phi,,,sizeof(mu)); memset(s,,,sizeof(f)); mu[]=;phi[]=;memset(vis,…