首先还是类似于无标号无向图计数那样,考虑点的置换带动边的置换,一定构成单射,根据 Burnside 引理: \[|X / G| = \frac{1}{|G|}\sum\limits_{g \in G} |X ^ g| \] 于是我们只需要考虑每个(点)置换下边置换的不动点(要求使得每个点度数为偶数)即可,有如下观察: 对于两个点循环置换 \(C_1, C_2\) 边在 \(C_1\) 导出子图中的边依然置换到导出子图内,对于其他循环置换同理:对于 \(C_1, C_2\) 之间的边,置换后任然在…
洛谷题面传送门 神仙题 %%%%%%%%%%%%%%%%%%%% 题解搬运人来了 首先看到本质不同(无标号)的图计数咱们可以想到 Burnside 引理,具体来说,我们枚举一个排列 \(p\),并统计有多少张图中的点集在置换 \(p\) 的作用下能够保持不变,记这个数目为 \(c(p)\),那么答案就是 \(\dfrac{1}{n!}\sum\limits_{p}c(p)\).由于此题 \(n\) 高达 \(50\),因此暴力枚举 \(p\) 显然是不合理的,不过注意到合法的图的数量并不取决于…
洛谷题目传送门 分数其实就是一个幌子,实际上就是求互质数对的个数(除开一个特例\((1,1)\)).因为保证了\(a<b\),所以我们把要求的东西拆开看,不就是\(\sum_{i=2}^n\phi(i)\)吗? 关于通过筛素数线性求欧拉函数的一点思路总结在蒟蒻的blog里 剩下的就是记一个前缀和了. #include<cstdio> #define R register const int N=1000001; int pr[N],phi[N]; long long ans[N]; bo…
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 输入格式: 一行两个整数,l.r. 输出格式: 一行一个整数表示答案. 输入输出样例 输入样例#1: 233 2333 输出样例#1: 1056499 输入样例#2: 2333333333 2333666666 输出样例#2: 153096296 说明 对于30%的数据,. 对于60%的数据,.…
正解:欧拉函数 解题报告: 传送门$QwQ$ 首先显然十分套路地变下形是趴 $\begin{align*}&=\sum_{i=1}^n\sum_{j=1}^n gcd(i,j)\\&=\sum_{i=1}^n\sum_{j=1}^n\sum_{d=1}^{min(i,j)} [gcd(i,j)==d]\cdot d\\&=\sum_{d=1}^{n}d\cdot \sum_{i=1}^n\sum_{j=1}^n [gcd(i,j)==d]\\\end{align*}$ 然后就欧拉函…
题意 在所以置换下,本质不同的各个极大连通子图均含有欧拉闭迹的\(n\)阶图个数 做法 务必先做完这题再看此题解,因为会省略大部分分析了 仍是从边入手,隔外限制:各个点度数是偶数 某个因子内\((m=a_i)\) 如果\(m\)是奇数,等价类的边集构成了若干个环,对度数的奇偶性不发生影响 是偶数,边\((1,1+\frac{m}{2})\)所处的等价类对各个点奇偶性都会改变,其他等价类不变 两个因子\((m_1=a_i,m_2=a_j,i\neq j)\), \(d=(m_1,m_2)\)个等价…
我们枚举所有gcd \(k\),求所有\(gcd=k\)的数对,记作\(f(k)\),那么\(ans=\sum_{i=1}^{n}(f(i)-1)*i\).为什么减1呢,观察题目,发现\(j=i+1\),所以自己与自己的数对是不算的. \(f(k)\)怎么求? 若\(a,b\)互质,则\(gcd(ak,bk)=k\). 我们枚举\(a,b\)中较大的那个,记作\(i\),那么另一个数就有\(φ(i)\)种可能,显然,\(1≤i≤n/k\),所以\(f(k)=\sum_{i=1}^{n/k}φ(i…
https://www.luogu.org/problemnew/show/P3768 \(F(n)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}ijgcd(i,j)\) 首先加入方括号并枚举g,提gcd的g: \(\sum\limits_{g=1}^{n}g\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}ij[gcd(i,j)==g]\) 后面的方括号里的g也可以提出来,注意前面有两个id,所以: \(\sum\lim…
https://www.luogu.org/problem/P1170 #include<bits/stdc++.h> using namespace std; ],b[],c[],d[],n; int main() { cin>>n; ; i<=n; i++) { int a,b,c,d; cin>>a>>b>>c>>d; if(a==c||b==d) //特判,排除兔和人在同行或同列的情况,防止__gcd函数出错 ) cou…
P1341 无序字母对 题目提供者yeszy 标签 福建省历届夏令营 难度 提高+/省选- 最新讨论 题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一个正整数n. 以下n行每行两个字母,表示这两个字母需要相邻. 输出格式: 输出满足要求的字符串. 如果没有满足要求的字符串,请输出"No Solution". 如果有多种方案,请输出前面的…
正解:线段树合并 解题报告: 传送门! 这题也是有很多解法,eg:splay,treap,... 然而我都不会我会学的QAQ! 反正今天就只讲下线段树合并怎么做QAQ 首先看到这样子的说第k重要的是什么,然后又不是问某个区间内,那就肯定是权值线段树做嘛 然后考虑到连桥,那显然就是并茶几维护连通性,然后如果不在一个块的连起来了就线段树合并一下就好了嘛 然后就麻油辣!overr! 大概就这些趴,细节什么的瞎扯一点晚上写QAQ #include<bits/stdc++.h> using namesp…
Treap 的合并 首先感谢 @Capella 的DeBug 其次,这是由一个 & 号引发的血案 注意对于所有修改操作都要 & Treap的合并, 启发式合并,对于每一个节点都 insert ,注意垃圾回收 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define ll long lo…
题目传送门 社交网络 题目描述 在社交网络(social network)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有n个人,人与人之间有不同程度的关系.我 们将这个关系网络对应到一个n个结点的无向图上,两个不同的人若互相认识,则在他们对应的结点之间连接一条无向边,并附上一个正数权值c,c越小,表示两 个人之间的关系越密切. 我们可以用对应结点之间的最短路长度来衡量两个人s和t之间的关系密切程度,注意到最短路径上的其他结点为s和t的联系提供了某种便利…
题目大意 给你一个\(n\)个点\(m\)条边的无向图(可能有重边),对于这个图的边集的子集(一共有\(2^m\)个),如果其导出的子图的每个联通块内都存在欧拉回路,我们就把答案加上这个子图的边数的平方,答案对\({10}^9+7\)取模. \(n,m\leq 200000\) 题解 先求出这个图的DFS树. 记\(c\)为这个图的联通块个数. 通过观察发现,如果非树边任意选,那么确定非树边之后树边只有一种选择方案(从下往上做一遍树形DP可以得到方案). 所以选择方案是\(2^{m-n+c}\)…
题面 传送门 题解 为啥全世界除了我都会\(exLucas\)啊--然而我连中国剩余定理都不会orz 不知道\(exLucas\)是什么的可以去看看yx巨巨的这篇博客->这里 好了现在我们就解决了计算组合数的问题了,接下来问题就在于怎么计算了 首先如果是强制大于等于很简单,设条件分别为\(x_i\geq A_i\),那么方案数就是\({m-\sum(A_i-1)-1\choose n-1}\),用隔板法就能证明 然而现在前面一部分是小于等于,这好办,我们把它化成\(x_i\geq A_i+1\)…
与HDU2841大同小异. 设左下角的点为(1,1),如果(1,1)->(x,y)和(1,1)->(x',y')向量平行,那只有在前面的能被看见.然后就是求x-1.y-1不互质的数对个数. 而x或y等于1可以另外讨论一下,就是当n不等于1时就有两个,n等于1就特判一下. 那么就用欧拉函数计数了:枚举x-1,累加小于x-1与x-1互质的个数,即合法的y-1的个数:结果还要*2,因为还有一半对称的y-1>x-1的情况:此外x-1=y-1多算了一次,减去1即可. #include<cst…
P2568 GCD 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入样例#1: 4 输出样例#1: 4 说明 对于样例\((2,2),(2,4),(3,3),(4,2)\) \(1<=N<=10^7\) 来源:bzoj2818 本题数据为洛谷自造数据,使用CYaRon耗时5分钟完成数据制作. Solution 方法1:莫比乌斯反演,方法和yy的gcd一样 方法2:…
题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入格式 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数. 输出格式 输出包含M行,每行为Yes或No,即依次为每一个询问的结果. 当然这是一道很裸的板子题,但是却牵扯到了一个非常有用的东西: 素数筛法 首先,我们知道素数筛法主要就是以下几种 第一:无脑筛 其实就是从2到n遍历一遍,没什么可讲的,顶多把n优化成sqr…
Description 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) Input&Output Input 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数. Output 输出包含M行,每行为Yes或No,即依次为每一个询问的结果. Solution 欧拉筛法的优势在于,在当前i mod 当前素数为0时就退出,保证了每个合数一定只被它的最小素因子筛掉,从而在O(n)时间内…
题目 首先我们先把题目分析一下. emmmm,这应该是一个找规律,应该可以打表,然后我们再分析一下图片,发现如果这个点可以被看到,那它的横坐标和纵坐标应该互质,而互质的条件就是它的横坐标和纵坐标的最大公约数为一,那这题的意思就变成了,在一个n * n的方格内寻找所有点的横坐标和纵坐标互质的点的个数. 但是这样复杂度肯定是过不去的.打表时间花费也是很多的,所以我们需要找到加快速度的方法,就是用欧拉函数来加快速度,所以我们就要实现大的优化,我们先明确欧拉函数是个什么东西. 欧拉函数 \(φ(x)\)…
P4917 天守阁的地板 题目背景 在下克上异变中,博丽灵梦为了找到异变的源头,一路打到了天守阁 异变主谋鬼人正邪为了迎击,将天守阁反复颠倒过来,而年久失修的天守阁也因此掉下了很多块地板 异变结束后,恢复了正常大小的小碗回到了天守阁,想要修复这里的地板,她需要知道自己要采购的地板数量(一个惊人的数字),于是,她找到了精通oi的你来帮忙 题目描述 为了使万宝槌能发挥出全部魔力,小碗会将买来的地板铺满一个任意边长的正方形(地板有图案,因此不允许旋转,当然,地板不允许重叠)来达到最大共鸣 现在,她能够…
嗯.... 埃氏筛和欧拉筛的思想都是相似的: 如果一个数是素数,那么它的所有倍数都不是素数.... 这里主要介绍一下欧拉筛的思路:(欧拉筛的复杂度大约在O(n)左右... 定义一个prime数组,这个数组被称为“素数表”,里面的数都为素数:然后用一个vis数组,如果一个数不是素数,则标记为1. 然后把i从2到n进行枚举,如果它没被访问过,则将其加入素数表中:然后for循环素数表,如果i % prime[j] == 0,则break即可, 因为prime[j]作为i的一个质因数,在某一种情况下,它…
题目链接 做过\(n\)遍这种题了... 答案就是\(\sum_{i=1}^{n}\sum_{j=1}^{n/i}[\varphi(j)*i]\) 线筛欧拉函数求前缀和直接算就行. #include <cstdio> const int MAXN = 2000010; int v[MAXN], prime[MAXN], cnt, n; long long ans, phi[MAXN]; int main(){ scanf("%d", &n); phi[1] = 1;…
P3383 [模板]线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数. 输出格式: 输出包含M行,每行为Yes或No,即依次为每一个询问的结果. 输入输出样例 输入样例#1: 复制 100 5 2 3 4 91 97 输出样例#1: 复制 Yes Yes No No Yes 说明…
https://www.luogu.org/problemnew/show/P2158 好像以前有个妹子收割铲也是欧拉函数. 因为格点直线上的点,dx与dy的gcd相同,画个图就觉得是欧拉函数.但是要注意对称轴还有左下角那个破点! #include<bits/stdc++.h> using namespace std; #define ll long long const int MAXN=40000+5; int phi[MAXN]; int pri[MAXN],pritop; bool n…
https://www.luogu.org/problemnew/show/P1390 求 $\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m} gcd(i,j) $ 不会,看题解: 类似求gcd为p的求法: $ f(n) = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m} gcd(i,j) =\sum\limits_{i=1}^{N} d \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}…
我们一般写的埃氏筛消耗的时间都是欧拉筛的三倍,但是欧拉筛并不好想(对于我这种蒟蒻) 虽然 -- 我 -- 也可以背过模板,但是写个不会的欧拉筛不如写个简单易懂的埃氏筛 于是就有了优化 这个优化还是比较厉害的,能把埃氏筛的消耗的时间提的跟欧拉筛差不多 以下内容需要先学会埃氏筛 学会的埃氏筛就明白它的原理了吧 #include<bits/stdc++.h> using namespace std; int n, m ,Is_p[10000001]; int main() { cin >>…
分析 考虑使用欧拉函数的计算公式化简原式,因为有: \[lcm(i_1,i_2,...,i_k)=p_1^{q_{1\ max}} \times p_2^{q_{2\ max}} \times ... \times p_m^{q_{m\ max}}\] 其实就是分解质因数,丢到那个式子里: \[\varphi(lcm(i_1,i_2,...,i_k))=\prod (p_i-1)p_i^{q_{i\ max}-1}\] 容易发现可以分开讨论每个质数,计算每个\(p_i^j\)在多少种\(i_1…
https://www.luogu.org/problem/P2158 #include<bits/stdc++.h> #define int long long using namespace std; int n,ans; int Star_Platinum(int n) { //求欧拉函数 int sum=n; ; i*i<=n; i++) ) { sum-=sum/i; ) n/=i; } ) sum-=sum/n; return sum; } signed main() { s…
题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量.现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对R取模后的答案即可.R是一个质数.//codevs这里有坑,R是合数 输入输出格式 输入格式: 第一行为两个整数T,R.R<=10^9+10,T<=10000,表示该组中测试数据数目,R为模 后面T行,每行一对整数N,M,…