Color 圆盘染色

题目大意:给你一个圆盘,等分成n个扇形,有m种颜色,每两个相邻的扇形不能颜色不能相同,求染色方案数。

注释:m,n<=$10^6$.

想法:这题是小圆盘染色的加强版(小圆盘染色?),想法和那道题类似,只不过是一个更一般的形式。同样的想法,我们采用一种分划(分划?猛戳看黄字)。给定一个起始扇形。显然,这道题我们的疑惑就在于最后一个扇形与起始扇形的颜色是否相同。所以,我们期望考虑倒数第二个扇形的颜色。倒数第二个扇形的颜色无非就是两种:1.和起始扇形颜色相同。2.和起始扇形颜色不同。这两种显然就是本题的一种分划。那么,我们分别考虑:我们记录 a [i] 表示有i个扇形时的染色方案数。

  如果倒数第二个扇形与起始扇形颜色相同,我们就暂时将起始扇形、倒数第一个扇形和倒数第二个扇形看成一个扇形(因为这个大扇形的左右两个小扇形的颜色是相同的,剩下i-3个扇形对倒数第1个扇形没有影响),此时的方案数为a[i-2],又因为倒数第一个扇形被两个相同颜色的扇形夹住了,所以此时有(m-1)*a[i-2]种方案。

  另一种情况:此时倒数第2个扇形与起始扇形颜色不相同。那么此时,即使将倒数第一个扇形去掉,剩下的扇形也是满足题意的,而且此时倒数第一个扇形有(m-2)种染色方法,所以此时有(m-2)*a[i-1],种染色方法。

  综上,我们可以得出:$a_i=(m-1)\cdot a_{i-2}+(m-2)\cdot a_{i-1}$.

下面,附上丑陋的代码......

#include <iostream>
#include <cstdio>
#define mod 20102010
using namespace std;
long long a[1000100];
int main()
{
long long m,n;
scanf("%lld%lld",&m,&n);
a[1]=m;
a[2]=(m-1)*m%mod;
a[3]=(m*(m-1))%mod*(m-2)%mod;
for(int i=4;i<=n;i++)
{
a[i]=(a[i-1]*(m-2)%mod+a[i-2]*(m-1)%mod)%mod;
}
printf("%lld\n",a[n]);
return 0;
}

小结:错误

  1.千万要搞清楚n,m的输入顺序。

  2.由于n,m的数据范围,两数相乘是容易爆int,所以,开long long;

color 圆盘染色的更多相关文章

  1. JDOJ3008 圆盘染色

    JDOJ3008 圆盘染色 https://neooj.com/oldoj/problem.php?id=3008 题目描述 将一个圆盘分为N (1 <= N <= 105)个扇形,每个扇 ...

  2. 【POJ 1112】Team Them Up!(二分图染色+DP)

    Description Your task is to divide a number of persons into two teams, in such a way, that: everyone ...

  3. 【POJ 2942】Knights of the Round Table(点双连通分量,二分图染色)

    圆桌会议必须满足:奇数个人参与,相邻的不能是敌人(敌人关系是无向边). 求无论如何都不能参加会议的骑士个数.只需求哪些骑士是可以参加的. 我们求原图的补图:只要不是敌人的两个人就连边. 在补图的一个奇 ...

  4. hdu 2444(染色法判断二分图+最大匹配)

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  5. 2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683

    本文原创于  2014-02-12 09:26. 今复习之用,有新体会,故重新编辑. 2014-02-12 09:26: 2-sat之第二斩!昨天看了半天论文(赵爽的和俉昱的),终于看明白了!好激动有 ...

  6. P1330 封锁阳光大学[搜索+染色]

    题目来源:洛谷 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图 ...

  7. HT for Web基于HTML5的图像操作(一)

    HT for Web独创的矢量图片设计架构,使其具有强大丰富的动态图形呈现能力,但从最近知乎热议的“Adobe Photoshop 是否已经过时?”的话题,大家能体会到很多情况下实际项目不可能完全采用 ...

  8. TYVJ P1403 [NOIP2010]关押罪犯

    TYVJ的编译器总是要搞点岔子出来,上次是double必须用f输出而不能用lf,这次又不知道为何CE 于是去了洛谷P1525测试,AC 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1 ...

  9. hdu 3478 Catch--二分图判断

    我觉得,给了初始点的话用bfs方便点,没有则dfs ||可能超片面 https://vjudge.net/contest/281085?tdsourcetag=s_pcqq_aiomsg#proble ...

随机推荐

  1. HighCharts中的Ajax请求的2D折线图

    HighCharts中的Ajax请求的2D折线图 设计源码: <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  2. Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL

    1.错误描述 org.hibernate.exception.SQLGrammarException: error executing work at org.hibernate.exception. ...

  3. Flex设置LinkButton的背景色

    1.设计思路    由于Flex中没有设置LinkButton的背景色的属性,现在得从两个方面入手:第一,直接通过调用样式方法画出LinkButton的背景色:第二,设置LinkButton的背景图片 ...

  4. Java中的List转换成JSON报错(四)

    1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/colle ...

  5. freemarker.template.TemplateException:Macro has no such argument:params

    1.错误描述 freemarker.template.TemplateException:Macro mainSelect has no such argument:params 2.错误原因 在宏定 ...

  6. Python Cookbook(第3版)中文版:15.21 诊断分段错误

    15.21 诊断分段错误¶ 问题¶ 解释器因为某个分段错误.总线错误.访问越界或其他致命错误而突然间奔溃. 你想获得Python堆栈信息,从而找出在发生错误的时候你的程序运行点. 解决方案¶ faul ...

  7. 举例MyBatis的常用的API及方法

    在使用MyBatis框架是,主要涉及以下几个API: 1.SqlSessionFactoryBuilder该对象根据MyBatis配置文件SqlMapConfig.xml构建SQLSessionFac ...

  8. mybatise插入返回主键ID

    之前遇到过一次解决了,结果这次又搞了半天,在这里记录一下吧. <insert id="insertUser" useGeneratedKeys="true" ...

  9. Python类变量和实例变量

    class TestClass(object):     val1 = 100  #类变量 def __init__(self):         self.val2 = 200  #实例变量     ...

  10. python条件控制

    条件控制 现在我们写这样一个程序:在程序里设定好你的年龄,然后启动程序让用户猜测,用户输入后,根据他的输入提示用户输入的是否正确,如果错误,提示是猜大了还是小了 my_age = 24 user_in ...