首页 > 其他分享 >环形染色问题

环形染色问题

时间:2024-02-16 17:57:56浏览次数:28  
标签:颜色 个点 染色 环形 问题 公比 aligned 数是

一个大小为 \(n\) 的圆环(环上的点有编号)需要用 \(m\) 种颜色进行染色(每种颜色不必全都使用),要求相邻两个点的的颜色不同,有多少种染色方案?

为了不考虑边界问题,假定 \(n,m\ge2\)。
如果不考虑这是一个环,当成一条链,那么第 \(1\) 个点颜色任意,其他所有点都只需要满足和前面那个点颜色相同,所以方案数是 \(m(m-1)^{n-1}\)。
如果第 \(1\) 个点和第 \(n\) 个点颜色相同,那么就把这两个点当成同一个点,方案数是 \(a_{n-1}\)。
所以得到递推式:

\[\begin{aligned} a_n&=m(m-1)^{n-1}-a_{n-1}\\ a_n&=(m-1)(m-1)^{n-1}+(m-1)^{n-1}-a_{n-1}\\ a_n&=(m-1)^n+(m-1)^{n-1}-a_{n-1}\\ a_n-(m-1)^n&=(m-1)^{n-1}-a_{n-1}\\ \end{aligned} \]

不妨设 \(b_n=a_n-(m-1)^n\),那么 \(\{b_n\}\) 是公比为 \(-1\) 的等比数列。
当 \(n=2\) 时,\(a_2=m(m-1)\),\(b_2=a_2-(m-1)^2=m-1\)。
根据公比得到 \(b_n=b_2\times(-1)^{n-2}=(-1)^n(m-1)\)。
把 \(\{b_n\}\) 带入,得到 \(a_n=b_n+(m-1)^n=(m-1)^n+(-1)^n(m-1)\)。

如果要求每个颜色都要使用只要一次,答案就是 \(a_m-a_{m-1}\)。
如果圆心有颜色,直接钦定圆心颜色为 \(m\) 种中的一个,用外圈的 \(n\) 个点,剩余 \(m-1\) 种颜色进行乘法原理。

标签:颜色,个点,染色,环形,问题,公比,aligned,数是
From: https://www.cnblogs.com/bxjz/p/18017325/circular-staining

相关文章

  • 异步调用中链路信息TRACE丢失问题
    1、问题描述链路框架底层为jaegertracing,行内的北斗链路是对这个jaegertracing进行了一层包装框架中使用自定义注解@RvcAsync来执行异步任务,RvcAsync注解核心逻辑为使用CompletableFuture.runAsync()方法执行多线程任务,传入的第二个参数asyncTaskExecutor为自定义线程池。1Co......
  • jackson序列化问题
    在对对象进行jackson序列化的时候,有时候会出现序列化后的变量名称大小写错误的情况。测试的实体类TestEntity2如下:public class TestEntity2 {    private String aBcd;    private String qWER;    private String qWERty;    private String qWERty......
  • python类的实现中有关__setattr__原理问题
    python类的实现中有关__settar__原理问题具体解决思路问题代码段:classCustomAttributes:def__init__(self):self._attributes={}def__setattr__(self,name,value):#允许设置名为'_attributes'的属性,这是实现所必......
  • Tauri http/https混用导致的请求失败的问题
    vite方案因为在项目里是需要使用http请求的,如果进行发布就会发现他的内置协议是https,导致http的请求发不出方案使用插件https://github.com/tauri-apps/plugins-workspace/tree/v1/plugins/localhost注意,我发现会闪退,文档上的例子去掉setup就好了(不知道为啥)路径:src......
  • hdu 5113 Black And White(DFS染色)
    Problem-5113(hdu.edu.cn)hdu没法提交,我以为我账号又崩了...#include<iostream>#include<cstring>usingnamespacestd;intT,n,m,k,kase;intcolor[30],ans[10][10];boolDFS(intx,inty,intcur){if(x>n)returntrue;for(inti=1;i<=k;i++){......
  • 03 \| 换个角度解决问题:服务端推送技术
    作者:四火完成时间:总结时间:你好,我是四火。今天我们继续和HTTP“过不去”。在上一讲,我们讲到了HTTP在安全传输方面的局限,并介绍了怎样使用经过TLS加密的HTTPS连接来解决这样的弊端。今天,我要给你讲讲传统HTTP的另一个在交互模式上的局限,就是只能由客户端主动发起......
  • 龙哥的问题
    这一篇主要是讲一下怎么计算复杂度考虑贡献的思想不说了,太常见了如果我们要硬算\(phi(\frac{n}{k})\),其中\(k<\sqrtn\),感觉算上外层枚举\(n\)的约数那层循环,好像时间复杂度是\(O(\sqrtn\cdot\sqrtn)=O(n)\)但实际上我们在算枚举约数的那层循环一定不要这么算,我们一定要这么......
  • 【算法】【动态规划】过桥问题
    1 题目在一个夜黑风高的晚上,有n(n<=50)个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不大于两人通过,他们只有一个手电筒,所以每次过桥的两个人需要把手电筒带回来,i号小朋友过桥的时间为T[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是......
  • 二叉树遍历问题模板
    在二叉树遍历问题中,有三种常见的遍历方式:前序遍历、中序遍历和后序遍历。以下是这三种遍历方式的递归模板:1.前序遍历(PreorderTraversal):defpreorderTraversal(root):ifnotroot:return[]result=[]result.append(root.val)#处理当前节点......
  • 显示器跟游戏的设置拉伸问题设置
    好多游戏,如果你桌面设置里面拉伸比例不是百分百,游戏打开就会拉伸,过长导致画面显示不全.设置方法.右边的两种自定义拉伸打开即可.就会抵消屏幕的拉伸设置.屏幕的拉伸设置在这里.我自己是用2560*1600的.然后拉伸百分之200.......