Magic Bracelet(POJ 2888,Burnside 引理 + 矩阵快速幂优化 dp)

政府科技管理者如何提升科技成果评估的准确性与透明度?.docx 政府科技管理者如何提升科技成果评估的准确性与透明度? 立即下载

一、题目链接

Magic Bracelet

二、题目大意

给定 m m m 种不同颜色的魔法珠子,每种颜色的珠子的个数都足够多。

现在要从中挑选 n n n 个珠子,串成一个环形魔法手链。

魔法珠子之间存在 k k k 对排斥关系,互相排斥的两种颜色的珠子不能相邻,否则会发生爆炸。(同一种颜色的珠子之间也可能存在排斥)

请问一共可以制作出多少种不同的手链。

注意,如果两个手链经旋转后能够完全重合在一起,对应位置的珠子颜色完全相同,则视为同一种手链。

答案对 99739973 99739973 99739973 取模。

1 ≤ T ≤ 10 1 ≤ n ≤ 1 0 9 g c d ( n , 9973 ) = 1 1 ≤ m ≤ 10 0 ≤ k ≤ m ( m + 1 ) 2 1 ≤ a , b ≤ m 1 \leq T \leq 10 \quad 1 \leq n \leq 10^9 \quad gcd(n,9973)=1 \quad 1 \leq m \leq 10 \quad 0 \leq k \leq \frac{m(m+1)}{2} \quad 1 \leq a,b \leq m 1≤T≤101≤n≤109gcd(n,9973)=11≤m≤100≤k≤2m(m+1)​1≤a,b≤m.

三、分析

由于循环之间存在限制关系,故无法使用 P o ˊ l y a P\acute olya Poˊlya 定理,而只能使用 B u r n s i d e Burnside Burnside 引理.

旋转操作共有 n n n 种置换,考虑一个置换 P i P_i Pi​:顺时针旋转 i i i 个珠子( 1 ≤ i ≤ n 1 \leq i \leq n 1≤i≤n).

通过二元一次不定方程解得循环长度为 n g c d ( n , i ) \frac{n}{gcd(n,i)} gcd(n,i)n​,于是循环个数为 g c d ( n , i ) gcd(n,i) gcd(n,i).

因此置换 P i P_i Pi​ 的不动点个数等于长度为 g c d ( n , i ) gcd(n,i) gcd(n,i) 的环的合法方案数,记为 F ( g c d ( n , i ) ) F(gcd(n,i)) F(gcd(n,i)).

根据 B u r n s i d e Burnside Burnside 引理可得答案为 A N S = 1 n ∑ i = 1 n F ( g c d ( n , i ) ) \begin{aligned} ANS = \frac{1}{n}\sum_{i=1}^n{F(gcd(n,i))} \end{aligned} ANS=n1​i=1∑n​F(gcd(n,i))​.

由于 n n n 最大 1 0 9 10^9 109,直接枚举 i i i 是无法接受的. 而 g c d ( n , i ) gcd(n,i) gcd(n,i) 最多只有 1600 1600 1600 种,所以我们去枚举 g c d ( n , i ) gcd(n,i) gcd(n,i).

于是 A N S = 1 n ∑ d ∣ n φ ( n d ) F ( d ) \begin{aligned} ANS = \frac{1}{n}\sum_{d|n}\varphi(\frac{n}{d})F(d) \end{aligned} ANS=n1​d∣n∑​φ(dn​)F(d)​,其中 φ ( n d ) \varphi(\frac{n}{d}) φ(dn​) 可以先预处理出 1 0 5 10^5 105 以内的质数再 O ( n / d l n ( n / d ) ) O(\frac{\sqrt{n/d}}{ln(n/d)}) O(ln(n/d)n/d ​​) 求出.

考虑如何计算 F ( d ) F(d) F(d),记 c [ i ] [ j ] c[i][j] c[i][j] 表示颜色 i i i 和颜色 j j j 的珠子能否相邻, f x [ i ] [ j ] f_x[i][j] fx​[i][j] 为第一颗珠子的颜色为 x x x 且 确定了前 i i i 颗珠子的颜色 且 第 i i i 颗珠子颜色为 j j j 的方案数.

则有递推式 f x [ i ] [ j ] = ∑ c [ j ] [ k ] f x [ i − 1 ] [ k ] ( 2 ≤ i ≤ n 1 ≤ j , k ≤ m ) \begin{aligned} f_x[i][j] = \sum_{c[j][k]} f_x[i - 1][k] \quad (2 \leq i \leq n \quad 1 \leq j,k \leq m) \end{aligned} fx​[i][j]=c[j][k]∑​fx​[i−1][k](2≤i≤n1≤j,k≤m)​.

于是 F ( d ) = ∑ x ∑ c [ x ] [ j ] f x [ d ] [ j ] \begin{aligned} F(d) = \sum_{x}\sum_{c[x][j]} f_x[d][j] \end{aligned} F(d)=x∑​c[x][j]∑​fx​[d][j]​

直接 d p dp dp 的时间复杂度是 O ( n m 3 ) O(nm^3) O(nm3) 的,不难发现可以使用矩阵快速幂加速 d p dp dp 递推.

即

[ f 1 [ i ] [ 1 ] f 1 [ i ] [ 2 ] ⋯ f 1 [ i ] [ m ] f 2 [ i ] [ 1 ] f 2 [ i ] [ 2 ] ⋯ f 2 [ i ] [ m ] ⋮ ⋮ ⋮ f m [ i ] [ 1 ] f m [ i ] [ 2 ] ⋯ f m [ i ] [ m ] ] = [ f 1 [ i − 1 ] [ 1 ] f 1 [ i − 1 ] [ 2 ] ⋯ f 1 [ i − 1 ] [ m ] f 2 [ i − 1 ] [ 1 ] f 2 [ i − 1 ] [ 2 ] ⋯ f 2 [ i − 1 ] [ m ] ⋮ ⋮ ⋮ f m [ i − 1 ] [ 1 ] f m [ i − 1 ] [ 2 ] ⋯ f m [ i − 1 ] [ m ] ] [ c [ 1 ] [ 1 ] c [ 1 ] [ 2 ] ⋯ c [ 1 ] [ m ] c [ 2 ] [ 1 ] c [ 2 ] [ 2 ] ⋯ c [ 2 ] [ m ] ⋮ ⋮ ⋮ c [ m ] [ 1 ] c [ m ] [ 2 ] ⋯ c [ m ] [ m ] ] \left[ \begin{matrix} f_1[i][1] & f_1[i][2] & \cdots & f_1[i][m] \\ f_2[i][1] & f_2[i][2] & \cdots & f_2[i][m] \\ \vdots & \vdots & & \vdots \\ f_m[i][1] & f_m[i][2] & \cdots & f_m[i][m] \end{matrix} \right] = \left[ \begin{matrix} f_1[i-1][1] & f_1[i-1][2] & \cdots & f_1[i-1][m] \\ f_2[i-1][1] & f_2[i-1][2] & \cdots & f_2[i-1][m] \\ \vdots & \vdots & & \vdots \\ f_m[i-1][1] & f_m[i-1][2] & \cdots & f_m[i-1][m] \end{matrix} \right] \left[ \begin{matrix} c[1][1] & c[1][2] & \cdots & c[1][m] \\ c[2][1] & c[2][2] & \cdots & c[2][m] \\ \vdots & \vdots & & \vdots \\ c[m][1] & c[m][2] & \cdots & c[m][m] \end{matrix} \right] ⎣⎢⎢⎢⎡​f1​[i][1]f2​[i][1]⋮fm​[i][1]​f1​[i][2]f2​[i][2]⋮fm​[i][2]​⋯⋯⋯​f1​[i][m]f2​[i][m]⋮fm​[i][m]​⎦⎥⎥⎥⎤​=⎣⎢⎢⎢⎡​f1​[i−1][1]f2​[i−1][1]⋮fm​[i−1][1]​f1​[i−1][2]f2​[i−1][2]⋮fm​[i−1][2]​⋯⋯⋯​f1​[i−1][m]f2​[i−1][m]⋮fm​[i−1][m]​⎦⎥⎥⎥⎤​⎣⎢⎢⎢⎡​c[1][1]c[2][1]⋮c[m][1]​c[1][2]c[2][2]⋮c[m][2]​⋯⋯⋯​c[1][m]c[2][m]⋮c[m][m]​⎦⎥⎥⎥⎤​

于是

[ f 1 [ d ] [ 1 ] f 1 [ d ] [ 2 ] ⋯ f 1 [ d ] [ m ] f 2 [ d ] [ 1 ] f 2 [ d ] [ 2 ] ⋯ f 2 [ d ] [ m ] ⋮ ⋮ ⋮ f m [ d ] [ 1 ] f m [ d ] [ 2 ] ⋯ f m [ d ] [ m ] ] = [ c [ 1 ] [ 1 ] c [ 1 ] [ 2 ] ⋯ c [ 1 ] [ m ] c [ 2 ] [ 1 ] c [ 2 ] [ 2 ] ⋯ c [ 2 ] [ m ] ⋮ ⋮ ⋮ c [ m ] [ 1 ] c [ m ] [ 2 ] ⋯ c [ m ] [ m ] ] d − 1 \left[ \begin{matrix} f_1[d][1] & f_1[d][2] & \cdots & f_1[d][m] \\ f_2[d][1] & f_2[d][2] & \cdots & f_2[d][m] \\ \vdots & \vdots & & \vdots \\ f_m[d][1] & f_m[d][2] & \cdots & f_m[d][m] \end{matrix} \right] = \left[ \begin{matrix} c[1][1] & c[1][2] & \cdots & c[1][m] \\ c[2][1] & c[2][2] & \cdots & c[2][m] \\ \vdots & \vdots & & \vdots \\ c[m][1] & c[m][2] & \cdots & c[m][m] \end{matrix} \right]^{d-1} ⎣⎢⎢⎢⎡​f1​[d][1]f2​[d][1]⋮fm​[d][1]​f1​[d][2]f2​[d][2]⋮fm​[d][2]​⋯⋯⋯​f1​[d][m]f2​[d][m]⋮fm​[d][m]​⎦⎥⎥⎥⎤​=⎣⎢⎢⎢⎡​c[1][1]c[2][1]⋮c[m][1]​c[1][2]c[2][2]⋮c[m][2]​⋯⋯⋯​c[1][m]c[2][m]⋮c[m][m]​⎦⎥⎥⎥⎤​d−1

四、代码实现

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;

const int M = (int)1e5;
const int N = (int)1e5;
const int inf = 0x3f3f3f3f;
const double eps = 1e-8;
const int mod = (int)9973;

int n, m, k;
bool c[10][10];

struct Matrix
{
    int D[10][10];

    Matrix operator*(const Matrix& B)const
    {
        Matrix C;
        for(int i = 0; i < m; ++i)
        {
            for(int j = 0; j < m; ++j)
            {
                C.D[i][j] = 0;
                for(int k = 0; k < m; ++k)
                {
                    C.D[i][j] = (C.D[i][j] + D[i][k] * B.D[k][j]) % mod;
                }
            }
        }
        return C;
    }
};

Matrix quick(Matrix A, int b)
{
    Matrix S;
    if(b == 0)
    {
        for(int i = 0; i < m; ++i)
            for(int j = 0; j < m; ++j) S.D[i][j] = (i == j);
    }
    else
    {
        S = A; --b;
        while(b)
        {
            if(b & 1) S = S * A;
            A = A * A;
            b >>= 1;
        }
    }
    return S;
}

bool is_prime[M + 5];
int prime[M + 5], cnt;

void init()
{
    memset(is_prime, 1, sizeof(is_prime));
    is_prime[0] = is_prime[1] = 0;
    for(int i = 2; i <= M; ++i)
    {
        if(is_prime[i]) prime[++cnt] = i;
        for(int j = 1; j <= cnt && i * prime[j] <= M; ++j)
        {
            is_prime[i * prime[j]] = 0;
            if(i % prime[j] == 0) break;
        }
    }
}

int F(int d)
{
    int ans = 0;
    Matrix A;

    for(int i = 0; i < m; ++i)
    {
        for(int j = 0; j < m; ++j)
        {
            A.D[i][j] = c[i][j];
        }
    }
    A = quick(A, d - 1);
    for(int i = 0; i < m; ++i)
    {
        for(int j = 0; j < m; ++j)
        {
            if(c[i][j]) ans = (ans + A.D[i][j]) % mod;
        }
    }
    return ans;
}

int phi(int n)
{
    int ans = n;
    for(int i = 1; i <= cnt && 1ll * prime[i] * prime[i] <= n; ++i)
    {
        if(n % prime[i] == 0)
        {
            ans = ans / prime[i] * (prime[i] - 1);
            while(n % prime[i] == 0) n /= prime[i];
        }
    }
    if(n > 1) ans = ans / n * (n - 1);
    return ans;
}

int quick(int a, int b, int p = mod)
{
    a %= p;
    int s = 1;
    while(b)
    {
        if(b & 1) s = s * a % p;
        a = a * a % p;
        b >>= 1;
    }
    return s % p;
}

int inv(int n, int p = mod)
{
    return quick(n, p - 2, p);
}

void work()
{
    scanf("%d %d %d", &n, &m, &k);
    for(int i = 0; i < m; ++i) for(int j = 0; j < m; ++j) c[i][j] = 1;
    for(int i = 1, a, b; i <= k; ++i)
    {
        scanf("%d %d", &a, &b);
        --a, --b;
        c[a][b] = c[b][a] = 0;
    }

    int ans = 0;
    for(int d = 1; d * d <= n; ++d)
    {
        if(n % d) continue;
        ans = (ans + phi(n / d) % mod * F(d)) % mod;
        if(d != n / d) ans = (ans + phi(d) % mod * F(n / d)) % mod;
    }
    ans = ans * inv(n) % mod;
    printf("%d\n", ans);
}

int main()
{
//    freopen("input.txt", "r", stdin);
//    freopen("output.txt", "w", stdout);
    init();
    int T; scanf("%d", &T);
    while(T--) work();
//    work();
    return 0;
}
双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现) 内容概要:本文详细介绍了基于Simulink平台构建的双闭环PWM整流器VOC(虚拟磁链定向控制)与SVPWM(空间矢量脉宽调制)相结合的仿真模型,系统阐述了三相电压型PWM整流器在电压定向控制策略下的建模方法与控制实现。通过设计外环直流电压控制与内环电流控制的双闭环结构,实现了对整流器的高功率因数运行、能量双向流动及动态性能优化的精确调控。结合SVPWM调制技术,有效提升了直流侧电压利用率并显著降低输出电流谐波含量,增强了系统的整体效率与稳定性。该仿真模型适用于新能源发电、电动汽车充电系统、微电网等高性能电能变换应用场景,文档还配套提供了丰富的学习资源与技术支持渠道,便于深入研究与工程实践。; 适合人群:面向电气工程、自动化、电力电子及相关专业的高校学生、科研人员以及从事新能源、智能电网、电力传动等领域研发工作的工程师;尤其适合已具备自动控制理论、电力电子变换技术和MATLAB/Simulink仿真基础的专业人士进一步深化学习与应用。; 使用场景及目标:①深入理解PWM整流器的工作机理及其双闭环控制系统的架构设计;②掌握VOC控制与SVPWM调制的协同工作机制,提升系统动静态响应性能;③支撑科研课题、课程设计、毕业设计或实际工程项目中的整流器控制系统开发与验证;④作为高级电能变换技术的学习范例,促进对现代电力电子系统控制策略的综合理解与创新能力培养。; 阅读建议:建议结合文中提供的百度网盘链接与公众号资源,下载完整的Simulink仿真模型进行实操演练,在MATLAB环境中调整控制器参数并观察仿真结果,深入剖析控制逻辑与系统响应特性;同时可参考同系列资源如PI双闭环控制、电网不平衡工况下的控制策略等案例,开展对比分析与拓展研究,全面提升系统建模与控制设计的综合能力。 立即下载

相关推荐

【Kingbase人大金仓】授权文件更换

本文介绍了金仓数据库授权文件更换的步骤:1.通过ksql或客户端工具查询数据库版本;2.在官网下载对应版本的license.bat文件;3.替换前先备份原授权文件(使用tar命令压缩),再用新文件覆盖原文件。注意事项包括:版本号需严格对应,授权文件通常位于安装目录下,可使用find命令查找具体位置。操作需谨慎,建议先备份原文件以便恢复。

qq_34463511的博客 3458

Magic Bracelet-【群论】【Burnside引理】【矩阵快速幂】

那么我们可以枚举第1个点的颜色,输出f[n+1][k]即可,f[n+1][k]完全由f[n][]整体推出,除了去掉与1排斥的条件,都是相同的。由此我们得出第1个点属于第一个循环,第2个点属于第二个循环,直至第n个点属于第n个循环,第n+1个点属于第一个循环。也就是说,前n个点我们就可以确定这n个循环的状态,也就是整个圆的状态,只要我们求出满足题目排斥要求的n个点的排列方案数,那么整个圆也就被确定了。显然可以设f[i][j]为第i个点是j颜色的方案数,那么它由上一个点转移而来,转移方程为。......

jisuanji2606414的博客 841

ENVI-met新手必看:从零开始创建城市微气候模型(附详细步骤+底图制作技巧)

本文为ENVI-met新手提供从零开始创建城市微气候模型的详细指南,包括环境准备、参数配置、底图制作技巧和三维模型构建步骤。特别针对常见问题提供解决方案,帮助初学者快速掌握城市微气候模拟技术,提升建模效率。

weixin_29269441的博客 405

POJ-2888 Magic Bracelet (polya定理+dp矩阵快速幂)

题目:用m种颜色给长度为n的项链染色,其中k对颜色不能相邻,旋转相同看作同一种方案,问方案数,结果模9973 。 思路:对于一段上的方案数是,dp[i][j]=sigma(dp[i-1][k]) (j与k可以相邻);长度非常大的时候这是做不了的,看到这个形式就可以考虑一下矩阵快速幂了。然后应用polya计数。 #include&lt;cstdio&gt; #include&lt;cstrin...

XFire的博客 381

Transformer数学推导——Q38 旋转位置编码(RoPE)的复数形式 对注意力分数的几何影响分析

RoPE 的复数形式为自然语言处理中的位置编码提供了创新且有效的解决方案。通过深入的数学理论分析,明确了其对注意力分数的几何影响及在捕捉位置信息方面的优势。在 LLM 的实际应用中,RoPE 复数形式在多个任务和场景中展现出强大的性能,特别是在处理长序列文本时,能够有效捕捉长距离依赖、缓解位置编码局限性并提升处理效率。然而,RoPE 复数形式也面临计算复杂度高、超参数调整困难和位置信息平衡等挑战。通过合理的优化策略和与其他技术的结合,有望进一步提升其性能。

墨顿随笔 1419

199、影像技术 roadmap 规划:未来移动影像的技术趋势与芯片算力展望

本文探讨了未来移动影像技术的发展趋势与芯片算力规划。作者从实际案例出发,指出影像技术演进需平衡传感器、ISP、算力和功耗。文章分为三部分:1)传感器将从堆像素转向提升信息密度,重点关注双层晶体管结构、混合快门和多光谱技术;2)ISP架构将向可编程计算单元转型,强调神经网络加速、硬件化多帧融合和语义处理;3)芯片算力瓶颈在于数据搬运,需优化存算一体架构、专用DMA和统一内存。最后给出五点建议:避免盲目追高像素、重视持续功耗、平衡ISP灵活性、预留算力余量、加强传感器与ISP协同设计。作者强调,影像技术的突破在

sundong_81的博客 57

魔术手环(Magic Bracelet)

这一段时间都在研究加速度传感器,顺便写了一个基于加速度传感器的手势识别算法,已经上传到gitHub, 这里是链接路径。魔术手环是针对于这个算法的一个测试demo,有兴趣的话可以看看,欢迎各种拍砖。

lawliet的专栏 1005

Python爬虫实战:高效爬取中国版权登记数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的中国版权登记数据爬虫系统。我们将使用Playwright+Asyncio实现无头浏览器自动化,结合Redis分布式任务队列和MongoDB数据存储,打造一个能够应对反爬机制的企业级数据采集方案。文章包含完整代码实现、性能优化技巧以及法律合规建议,帮助开发者快速掌握大规模数据采集的核心技术。本文详细介绍了2024年使用Python最新技术栈构建中国版权登记数据爬虫的完整方案。基于Playwright的无头浏览器自动化。

2201_76125261的博客 1898

我花了三个小时写了一道题的六千字题解....(POJ 2888 Magic Bracelet)

我花了三个小时写了一道题的六千字题解....(POJ 2888 Magic Bracelet)

繁凡さん的博客 3494

实战|2026美团&大众点评餐饮数据抓取:Playwright/Selenium反爬全攻略

核心结论:2026年美团&大众点评的反爬核心是“多维度风控”,需组合使用“住宅IP+设备指纹伪装+真人行为模拟+动态验证处理”,Playwright是最优工具,Selenium仅作为补充。效率优化:单机爬取速度建议控制在“每小时500-800条”,避免高频请求触发风控;分布式爬取需确保每个节点使用独立住宅IP,且行为轨迹不一致。扩展方向集成WASM解密工具,破解2026年美团的Token加密;用AI识别动态点选验证,提升验证通过率;对接大数据平台,对抓取的餐饮数据进行可视化分析。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2461

基于物联网设计温室水培系统(NBIOT+华为云IOT)_338

本项目设计并实现了一套基于物联网的温室水培系统。系统以STM32F103RCT6单片机为核心控制器,结合SHT30温湿度传感器、SGP30二氧化碳传感器、BH1750光照传感器及液位检测传感器等硬件,实现对温室内环境参数的实时采集。系统支持自动和手动两种控制模式,能够根据传感器数据自动控制补光灯、通风风扇、遮光卷帘、降温水帘及营养液补充电机。通过NBIoT模块,系统可将采集的数据通过MQTT协议上传至华为云IOT平台,用户可通过Android手机APP或Windows上位机进行远程监控与控制。

413

POJ 2888 Magic Bracelet

Problem POJ Solution 由于有染色限制,那我们不方便直接用polya计数。不妨先从最朴素的DP考虑起,设f[i][j]表示染了前i个珠子,且第i个珠子的颜色为j的方案数,由于是环形的,你需要dp到n+1。为了避免重复计算,我们套用一下Burnside引理。 不妨称旋转i个的置换称为置换i。考虑在置换i下,循环节数为gcd(n,i)gcd(n,i)gcd(n,i),那么我们...

Rayment的博客 643

UltraScale系列底层结构(3)——URAM概述

在UltraScale+™ 器件中,除了我们在常规熟悉的BRAM资源以外,还额外提供了URAM(UltraRAM)资源。 UltraRAM 是一种单时钟同步操作的高密度存储器,每个 UltraRAM 块可存储 288 Kb 数据,配置为 4K x 72 位的存储单元,其容量是 Block RAM 的八倍。虽然 UltraRAM 内部使用单端口存储单元,但通过在一个时钟周期内顺序执行端口 A 和端口 B 的操作,实现了双端口功能。

apple_53311083的博客 2831

POJ2888 Magic Bracelet(Burnside引理+矩阵快速幂优化DP)

POJ2888 Magic Bracelet 原题地址:http://poj.org/problem?id=2888 题意: T组数据。 有n个珠子串成一个环,珠子共有m种,有k个要求说第x种和第y种珠子不能相邻。 我们认为两个可以通过旋转得到的环是同一种,问一共能串出多少本质不同的环。对9973取模。 数据范围 1 ≤ n ≤ 1e9, gcd(n, 9973) = 1,1 ≤ m

Bfk的博客 527

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

POJ2888 Magic Bracelet【Burnside引理 + DP(矩阵加速)求不动点】

题目描述: 大小为n,可用颜色数为m的一串珠子,其中有k对限制某两种颜色不能相邻。问在忽略中心旋转产生的重复下的不同的染色方案数。 n≤109,m≤10,k≤m(m−1)2n\le10^9,m\le10,k\le\frac {m(m-1)}2n≤109,m≤10,k≤2m(m−1)​ 题目分析: 如果没有限制就是裸的Polya,直接phi乘上颜色种数的几次幂求和。 但是有限制就会导致在循环iii步...

Master.Yi的博客 291

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【POJ2888】Magic Bracelet-Burnside引理+数论+DP矩阵优化

【POJ2888】Magic Bracelet-Burnside引理+数论+DP矩阵优化

Maxwei_wzj的OI世界 1759

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Magic Bracelet POJ - 2888 Burnside引理+数论+DP矩阵优化

题目链接Ginny’s birthday is coming soon. Harry Potter is preparing a birthday present for his new girlfriend. The present is a magic bracelet which consists of n magic beads. The are m kinds of different m

wood 686

POJ - 2888 Magic Bracelet——Polya+欧拉函数+dp+矩阵快速幂+费马小定理

题意: 给定n个珠子构成的环,每个珠子有m种染色方式,给定k个二元组(xi,yi),表示颜色xi不能和颜色yi相邻,问有这个环多少种本质不同的染色方案(两种染色方案视为相同当且仅当他们可以通过旋转变成相同的方案),最终结果取余9973。 (1&lt;=n&lt;=1e9 &amp;&amp; gcd(n, 9973) = 1), (1 &lt;= m &lt;= 10), (1 &lt;= k...

hao_zong_yin的博客 442

poj 2888 Magic Bracelet polya计数+矩阵统计路径数

题意:        用m种颜色涂n个小球组成的项链,其中k对颜色不能相邻,求一共有多少种方案。 分析:       polya计数,难点是对于一个置换p,怎样确定在p下等价的方案数。设p的循环节数为i,如果没有限制显然是m^i,有限制的话怎么办呢?考虑将每一种方案转化为路径,比如a->b->c->a,那么循环节数为i的方案数就是a到a加上b到b...长为i的不同路径数。. 代码: //

sepNINE的专栏 464

POJ 2888 Magic Bracelet (有限制的Burnside引理)

POJ 2154的加强,对相邻元素的颜色做出了限制,但是仍然用到了 循环个数 : gcd(i,n)  循环长度:n/gcd(i,n)的结论,另外需要利用一个特性为对于含gcd(i,n)个长度为n/gcd(i,n)的置换,从置换的某一位置起的gcd(i,n)个元素是分别属于不同的循环的,同一个循环内的颜色是相同的,因此我们对于一个这样的置换求解的方案数便为:用m种颜色染色 a1,a2,...agcd

新的开始... 789

poj-2888 Magic Bracelet

题意: 给出n个珠子的项链和m种珠子; 珠子之间有k对关系,这些珠子不能相邻; 无法通过旋转变成相同的项链视为本质不同; 求本质不同的项链个数,答案对9973取模; n 题解: 这显然是一个置换计数的问题; 上burnside引理还是选择poi? 上burnside引理,因为poi定理对颜色的限制要很宽泛才行! 先考虑一种置换姿势,旋转x个珠子; 那么就将项链分成了g

140142 1555

POJ 2888-Magic Bracelet(polya计数定理)

Magic Bracelet Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 6024 Accepted: 1922 DescriptionGinny’s birthday is coming soon. Harry Potter is preparing a birthday present for h

swust5120160705的博客 642

[POJ2888]Magic Bracelet(置换群+矩阵)

题目描述传送门题解将每一个颜色看成是一个点,若两个颜色不能同时选视为两个点之间无边,否则有边。这样的话,令f(i)f(i)表示在这个图中存在多少个长度为i的环 那么答案即为∑i=1nf(gcd(i,n))=∑d|nφ(nd)f(d)\sum\limits_{i=1}^nf(gcd(i,n))=\sum\limits_{d|n}\varphi({n\over d})f(d) 求f(i)f(i)的方

zyf2000 651

poj 2888 Magic Bracelet

burnside+欧拉函数+矩阵乘法

我要吃熊猫 798

[POJ2888] Magic Bracelet

[POJ2888]Magic Bracelet 题目描述 简要题意:给圆上个点染色,颜色有种,其中对颜色不能相邻,循环同构,多组数据,询问染色方案数。 Solution 大概就是一道挺显然的Burnside题(一般染色,循环同构都酱紫做)。 对于一个圆上的循环同构,显然有个置换,用Burnside引理求解答案: 所以我们可以枚举置换中的循环个数,令 为不考虑循环同构时...

xmr_pursue_dreams的博客 322
上一篇: 牛客小白月赛31【解题报告】
下一篇: 2021牛客寒假算法基础集训营1【解题报告】
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值