SCAU18730 涂色问题

article/2025/9/11 23:14:13

思路:补集思想,快速幂

从正面想的话有点难度,从容斥定理的角度想了一会,发现重复的部分不会容斥。。。

我们从反面看,出现相邻相同数的方案=总方案数-未出现相邻相同数的方案

总方案,每个位置有m种选择,即m^n

未出现相邻相同数的方案,第一个位置m种选择,第二个位置m-1种选择(不与位置1重复),第三个位置m-1种选择(不与位置2重复)……,方案数为(m-1)^{n-1}*m

然后关于次方的问题,如果我们用乘法一个个数去乘,会tle(1e12的范围)

我们用一手快速幂,将乘方的复杂度降到logn就能过了(不知道快速幂的小伙伴可以百度学一手)

#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <map>
#include <vector>
#include <queue>
#include <set>
using namespace std;
#define _for(i,a,b) for(int i=(a) ;i<=(b) ;i++)
#define _rep(i,a,b) for(int i=(a) ;i>=(b) ;i--)
#define mst(v,s) memset(v,s,sizeof(v))
#define pb push_back
#define IOS ios::sync_with_stdio(false)
#define int long long
typedef long long ll;
const int mod=1e9+7;
int n,m;
ll qsm(ll a,ll b)
{ll ans=1,temp=a;while( b ){if( b&1 ) ans = (ans * temp)%mod;temp = (temp * temp)%mod;b>>=1;}return ans;
}
signed main()
{
//    /!!!
//    freopen("data.txt","r",stdin);//!!!IOS;cin>>n>>m;cout<<(qsm(m,n) - m*qsm(m-1,n-1)%mod+mod)%mod<<endl;
}

 


http://chatgpt.dhexx.cn/article/4ENywRKg.shtml

相关文章

涂色问题

前言 一、处理策略 二、典例剖析 例1给一个各边不等的凸五边形的各边涂色&#xff0c;每边可以涂红、黄、蓝三种颜色中的一种&#xff0c;但是不允许相邻的边有相同的颜色&#xff0c;则不同的染色方法共有多少种&#xff1f; 分析&#xff1a;将凸五边形的各边依次编号为①②③…

日撸 Java 三百行(35 天: 涂色问题)

注意&#xff1a;这里是JAVA自学与了解的同步笔记与记录&#xff0c;如有问题欢迎指正说明 目录 一、关于涂色问题 二、代码实现思路 三、代码实现过程 1、初始化 2、核心代码&#xff08;DFS部分&#xff09; 3、染色合理性判断 四、数据模拟 总结 一、关于涂色问题 …

cnpm 安装yarn

cnpm 安装yarn 一句命令搞定 cnpm install -g yarn --registryhttps://registry.npm.taobao.org再配置下源 yarn config set registry https://registry.npm.taobao.org -gyarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g下面是官网提供的两…

npm和cnpm安装配置

在安装目录D:\programIntall\nodejs 新建node_global和node_cache 两个文件夹 npm config set prefix "D:\programIntall\nodejs\node_global"npm config set cache "D:\programIntall\nodejs\node_cache"在系统环境变量中添加NODE_PATH 在系统环境变量 P…

mac安装cnpm安装失败

参考了网上一篇博客 完成的安装。写下来纯属方便自己以后好找 也方便更多人看到。 官网安装node npm install -g cnpm --registryhttps://registry.npm.taobao.org 如果报一堆warn说明安装失败 依次输入 npm set registry https://registry.npm.taobao.org npm set dist…

git修改历史提交(commit)信息

我们在开发中使用git经常会遇到想要修改之前commit的提交信息&#xff0c;这里记录下怎么使用git修改之前已经提交的信息。一、修改最近一次commit的信息 首先通过git log查看commit信息。 我这里一共有6次commit记录。 最新的commit信息为“Merge branch ‘master’ of https:…

win7更改计算机属性,win7修改系统属性OEM信息的方法

win7修改系统属性OEM信息的方法分析给大家&#xff0c;我们都知道更改电脑属性里面OEM信息&#xff0c;让电脑更加个性化&#xff0c;OEM就是代工的意思&#xff0c;OEM版一般是Windows赋予合作伙伴在生产电脑是可以预装的系统。但是很多用户不知道如何修改OEM属性信息。本文系…

git 修改远端 commit 信息

git 修改远端 commit 信息 git rebase -i HEAD~x( x 代表最近几条commit )&#xff0c;执行之后将出现以下界面上面的 pick 后面即远端的 commit 信息&#xff0c;最下面的是最后的 commit修改指定 commit 的 pick 为 edit ,然后 wq 保存退出根据提示信息执行 git commit --am…

linux 更改cpu信息,奸商要疯狂,新软件任意修改英特尔CPU信息

昨日&#xff0c;网上出现一款名为“英特尔处理器信息更新”软件&#xff0c;支持任意修改英特尔CPU信息&#xff0c;例如内部型号和频率&#xff0c;支持写入到主板BIOS&#xff0c;无需更改注册表&#xff0c;这次&#xff0c;广大用户以后买新机器要注意&#xff0c;奸商们不…

Mysql数据库和数据表的创建和信息更改的常用指令

文章目录 数据库和数据表的创建和信息更改后续小实验做准备一. 关于数据库和数据表的其它操作1&#xff09;数据库①创建数据库②显示目前所有的数据库③数据库重命名2.1 先创建新库&#xff1a;2.2 使用RENAME TABLE 命令修改表名&#xff0c;将表移动到新的库里&#xff1a;2…

如何修改PPT文档的原标题和作者信息

1.将鼠标放在PPT上可以看到原作者和标题的信息 2.右键PPT&#xff0c;选择属性 3.进入属性面板&#xff0c;点击详细信息选项卡&#xff0c;进入详细信息&#xff0c;可以看到作者和标题一栏。鼠标左键单击作者栏位或标题一栏&#xff0c;形成可编辑状态&#xff0c;直接修改…

win10计算机信息更改图,win10修改版本信息的简单方法【图文教程】

在某些特殊情况下&#xff0c;我们需要修改win10系统的版本信息&#xff0c;一般系统版本信息是本身就设置好的&#xff0c;能不能随意修改&#xff1f;大部分用户心理都没底&#xff0c;其实Win10系统版本号是可以任意修改&#xff0c;知识要掌握对的方法&#xff0c;如果你有…

web前端 | 博客(八)用户信息修改功能

用户信息修改功能 当点击用户后面的按钮时&#xff0c;要跳转到用户信息修改页面。而修改和添加实际上是同一个页面。 要区分跳转后是添加操作还是修改操作&#xff0c;在于携带的参数。 如果是添加操作&#xff0c;那就直接跳转过去&#xff1b;如果是修改操作&#xff0c;那…

SSM框架下对信息执行修改操作时的信息弹窗回显以及对信息修改后对数据库的更新问题

SSM框架下对信息执行修改操作时的信息弹窗回显以及对信息修改后的同步问题 概括主要说一下前端的实现 概括 今天在做实训作业时&#xff0c;有个对数据信息进行修改的操作&#xff0c;要求点击修改按钮后弹出修改框&#xff0c;栏目中需要显示出旧的数据信息&#xff0c;当将输…

svn修改提交日志信息

参考&#xff1a;唐小码个人博客 一、svn修改提交的msg信息和作者信息 鼠标右键找到show log> 选择要修改的日志行&#xff0c;第一个是修改作者信息&#xff0c;第二个是修改日志信息 二、svn修改提交的日期信息 修改日期信息的话&#xff0c;你得先有svn服务器的权限&…

【JSP】用户信息界面操作 ---- 用户信息修改

文章目录 用户信息界面操作 ---- 用户信息修改Ⅰ.修改userinfo.jsp 实现修改页面跳转Ⅱ.创建 userUpdate.jsp 修改页面Ⅲ.完善 dbHelper类&#xff0c;添加用户修改方法Ⅳ.创建 upDataServlet&#xff0c;实现用户信息修改功能Ⅴ.效果展示 用户信息界面操作 ---- 用户信息修改 …

windows本地git账户信息修改

git账户发生变化&#xff0c;比如密码修改或者项目种账户进行替换本地账户如何修改和切换&#xff1f; 1、进入控制面板 2、点击 用户账户 3、点击管理“管理Windows凭据”&#xff0c;进入凭据管理界面 4、选择需要修改的git账户对应的地址&#xff0c;点击右侧的箭头&#x…

Android设备信息修改器,如何更改android手机的设备号信息

工具/原料 手机信息修改器 手机已root Xposed框架 方法/步骤 首先我们看在没使用手机信息修改器(琢石模拟器)的情况下&#xff0c;手机的串号是多少&#xff0c;可以看到这个机器的串号是空的。 打开手机信息修改器(琢石模拟器)&#xff0c;进入虚拟环境中&#xff0c;一键生成…

Git系列之修改历史提交信息

文章の目录 1、查看 git 提交记录2、修改最近两个或者两次上的commit信息3、扩展&#xff1a;修改上一次git commit 提交的信息参考写在最后 1、查看 git 提交记录 git log2、修改最近两个或者两次上的commit信息 比如我这里有三次提交 使用命令&#xff1a; git rebase -i…

ssh服务器banner信息,几种情况下的banner信息修改

一.telnet 当telnet建立连接時&#xff0c;修改主机会出现的提示信息 1.先编辑一個要显示的信息 # vi /etc/telnet.msg this is a telnet message! 2.在/etc/inetd.conf中的telentd后加上-b 选项&#xff0c;指定包含信息的文件 telnetd stream tcp nowait root /usr/lbin/teln…