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. RFM模型+SOM聚类︱离群值筛选问题

        笔者寄语:一般情况下离群值不应该直接删除,应该进行筛选,然后进行专门的离群值分析.笔者在这进行一下思考,在聚类基础之上的一种离群点检验. 基于聚类的离群点检测的步骤如下:数据标准化--聚类-- ...

  2. Java中的a++和++a的区别

    1.a++和++a的区别 a++表示先将a放在表达式中运算,然后再加1: ++a表示先将a加1,然后再放在表达式中运算 2.实例 (1)Java代码 /** * @Title:JiaJia.java ...

  3. STM32F4 输入输出(GPIO)模式理解

    stm32的GPIO的配置模式有好几种,包括: 1. 模拟输入: 2. 浮空输入: 3. 上拉输入: 4. 下拉输入: 5. 开漏输出: 6. 推挽输出: 7. 复用开漏输出: 8. 复用推挽输出   ...

  4. Invalid property 'driver_class' of bean class

    1.错误描述 INFO:2015-05-01 13:06:07[localhost-startStop-1] - Initializing c3p0-0.9.2.1 [built 20-March-2 ...

  5. 如何在BIOS中设置RAID?

    随着价格的下降和相应主板的支持,目前SATA硬盘已经逐渐成为主流.但由于受芯片组和操作系统的影响,不少用户对SATA硬盘的使用及安装系统掌握不足,今天小编就给大家介绍一下SATA硬盘的日常应用技巧,希 ...

  6. 【BZOJ1911】【APIO2010】特别行动队(斜率优化,动态规划)

    [BZOJ1911][APIO2010]特别行动队 题面 Description 你有一支由 n 名预备役士兵组成的部队,士兵从 1 到 n 编号, 要将他们拆分成若干特别行动队调入战场.出于默契的考 ...

  7. 【BZOJ3110】K大数查询(整体二分)

    [BZOJ3110]K大数查询(整体二分) 题面 BZOJ 题解 看了很久整体二分 一直不知道哪里写错了 ... 又把树状数组当成线段树区间加法来用了.. 整体二分还是要想清楚在干什么: 我们考虑第\ ...

  8. redis的常用公共方法

    实用redis已经有一段时间了,今天刚好有空记录一下所用到的方法,欢迎指正 首先我封装了一些字段信息 #region 字段 /// <summary> /// Redis服务器地址 /// ...

  9. mysql url 连接配置的一个小坑。 工作中不会遇到。 学习的时候会

    <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> & ...

  10. office 2013补丁包更新

    总是有客户发现使用office 2013 下的插件有问题,这个问题出现在低版本上,所以要给office 2013打上补丁,打上后,运行插件ok,出现的bug解决掉了.那么给office打补丁包就成了解 ...