当前位置: 首页 > news >正文

【AGC005D】~K Perm Counting(计数抽象成图)

容斥原理。

求出f(m) ,f(m)指代至少有m个位置不合法的方案数。

怎么求?

注意到位置为id,权值为v ,不合法的情况,当且仅当 v = id+k或 v= id-k

因此,我们把每一个位置和权值抽象成点 ,不合法的情况之间连一条边,可以构成二分图。

借用大佬的图。

由此可知,当选了n条边,就恰好n个位置不合法,限制条件是:连的边不能相邻,

把二分图展开成k条链,进行dp。

还是借用大佬ez_lcw的图

由此总共有2n 个点 k 条链,链与链之间无边 互不干涉。

dp(i,j,pd)表示考虑到第i号点, 连了j条边,是否有连接i 到 i-1号点。

转移方程

dp(i,j,0) = dp(i-1,j,0)+dp(i-1,j,1)

dp(i,j,1) = dp(i-1,j-1,0)

则可得f(m) = (n-m)!\times (dp(2n,m,0) + dp(2n,m,1)) 

简单的乘法原理罢了。

ans = \sum _{i = 0} f(m)*(-1)^1

#include<bits/stdc++.h>
using namespace std;
long long n,k;
long long fac[4010];
long long dp[4010][4010][2];
int mod = 1e9+7;
int pd[4999];//判断是否为链头 0 表示是头 头不能连接上一个 
int main(){freopen("neverk.in","r",stdin);freopen("neverk.out","w",stdout);cin>>n>>k;fac[0] = 1;for(int i = 1;i <= n;i++){fac[i] = (fac[i-1]*(long long)i)%mod;}int tot = 0;for(int i=1;i<=k;i++){for(int t=0;t<2;t++){for(int j=i;j<=n;j+=k){tot++;if(i!=j) pd[tot]=1;}}}dp[0][0][0] = 1;for(int i = 1;i <= 2*n;i++){for(int j = 0;j <= n;j++){dp[i][j][0] = (dp[i-1][j][0] + dp[i-1][j][1])%mod;if(j&&pd[i]) dp[i][j][1] = dp[i-1][j-1][0];}}long long cnt = 0;for(int i = 0;i <= n;i++){//cout<<fac[n-i]<<" "<<dp[2*n][i][0]+dp[2*n][i][1]<<endl;long long t = fac[n-i]*(dp[2*n][i][0]+dp[2*n][i][1]);t%=mod;//cout<<t<<endl;if(i%2 == 0){cnt = (cnt +t)%mod;}else{cnt = (cnt - t + mod)%mod;}}cout<<cnt;return 0;
}

相关文章:

【AGC005D】~K Perm Counting(计数抽象成图)

容斥原理。 求出f(m) &#xff0c;f(m)指代至少有m个位置不合法的方案数。 怎么求&#xff1f; 注意到位置为id&#xff0c;权值为v ,不合法的情况&#xff0c;当且仅当 v idk或 v id-k 因此&#xff0c;我们把每一个位置和权值抽象成点 &#xff0c;不合法的情况之间连一…...

【React】setState (useState) 是怎么记住上一个状态值的?

在 React 中&#xff0c;setState 通过 React 内部的状态管理机制来记住上一个状态值。即使每次组件重新渲染时&#xff0c;函数组件会被重新执行&#xff0c;React 仍能通过其内部的状态管理系统保持和追踪组件的状态变化。下面详细解释其工作原理&#xff1a; 1. setState 的…...

Vue3 使用CryptoJS加密

为什么要加密&#xff1f; 现在的互联网世界充满了各种各样的信息&#xff0c;有些信息非常重要&#xff0c;比如密码、个人信息等。如果我们把这些信息直接发送到服务器&#xff0c;别人可能会截取到&#xff0c;然后偷走我们的信息。为了避免这种情况发生&#xff0c;我们需…...

Feign的使用

一、Feign 介绍 Feign 是一个声明式的 HTTP 客户端&#xff0c;它使得编写 HTTP 客户端变得更加简单。在微服务架构中&#xff0c;使用 Feign 可以轻松地调用其他服务。Feign 内置了 Ribbon 实现负载均衡。 二、Feign 的使用步骤 引入依赖&#xff1a; 在项目的 pom.xml 文件…...

前端反接保护:实用方案解析与探讨

前端反接保护通常采用肖特基二极管方案或PMOS/NMOS方案&#xff0c;本文另外介绍一种理想二极管方案。 1、肖特基二极管方案 由于肖特基二极管具有正向导通电压&#xff0c;只能用于小电流场合&#xff0c;甚至于直接使用普通的整流二极管。比如1A电流&#xff0c;设D1的正向…...

【C++】第五节:内存管理

1、C/C内存分布 看下面一段代码 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)malloc(s…...

【Java SE】方法 和 递归 的应用

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 方法的含义 1.1 例子 1.2 方法的概念 2. 方法的定义 3. 实参和形参 3.1 实参和形参的关系 4. 方法的重载 5. 递归 5.1 递归练习 6. 小结 1. 方法的…...

JVS低代码轻应用是什么?是如何拼装的?这篇文章讲的非常详细

1.1JVS轻应用是什么&#xff1f; 轻应用与传统应用的开发过程区别 传统开发&#xff08;原生开发&#xff09;采用的方式&#xff1a;①需求了解 ②产品原型③UI设计④建库建表⑤前端还原⑥后端开发⑦前后端联调⑧功能测试⑨部署上线轻应用开发方式&#xff08;配置化拼装&…...

K210(openMV)与STM32 通信教程

目录 前言&#xff1a; 一、K210 串口部分教程 二、STM32部分 前言&#xff1a; 很多打比赛的同学&#xff0c;通常只是用K210 或者openMV来进行视觉部分的信息采集&#xff0c;传输数据给STM32&#xff08;或者其他主控那边&#xff09;进行对分析&#xff0c;对小车或者舵…...

【HarmonyOS】HMRouter使用详解(三)生命周期

生命周期&#xff08;Lifecycle&#xff09; 使用HMRouter的页面跳转时&#xff0c;想实现和Navigation一样的生命周期时&#xff0c;需要通过新建生命周期类来实现对页面对某一个生命周期的监控。 新建Lifecycle类 通过继承IHMLifecycle接口实现生命周期接口的方法重写。 通过…...

Docker 教程三 (Ubuntu Docker安装)

Ubuntu Docker 安装 Docker Engine-Community 支持以下的 Ubuntu 版本&#xff1a; Xenial 16.04 (LTS)Bionic 18.04 (LTS)Cosmic 18.10Disco 19.04 其他更新的版本…… Docker Engine - Community 支持上 x86_64&#xff08;或 amd64&#xff09;armhf&#xff0c;arm64&am…...

Redis:持久化

Redis&#xff1a;持久化 持久化RDBdump.rdb优缺点 AOF文件同步重写机制 混合持久化 持久化 虽然Redis是一个内存级别的数据库&#xff0c;但是Redis也是有持久化的能力的。当系统崩溃时&#xff0c;Redis就会被强制退出&#xff0c;此时内存中的数据就会丢失。为了能够在下次…...

精准监控,高效运营 —— 商品信息实时分析为商家带来新机遇

在现代商业环境中&#xff0c;精准监控和高效运营是商家成功的关键。通过实时分析商品信息&#xff0c;商家可以洞察市场趋势、优化库存管理、提升销售策略&#xff0c;从而抓住新的商业机遇。本文将介绍如何利用Python和一些流行的数据分析工具来实现商品信息的实时分析&#…...

Nginx应用配置实战

Nginx通用部署 Nginx常见参数介绍 Nginx 配置文件中的指令和参数决定了它的行为。下面详细介绍一些常见的 Nginx 参数&#xff0c;以帮助你更好地理解和配置 Nginx。 1. worker_processes worker_processes auto;作用&#xff1a;设置 Nginx 处理请求的工作进程数量。auto …...

html实现倒计时

参考网址 <!DOCTYPE html> <html> <head><title>倒计时示例</title> </head> <body><h1 id"titleCountDown"></h1><div id"countdown"></div><script>// 目标日期var targetDat…...

HTMLCSS练习

1) 效果如下 2) 代码如下 2.1) HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" conte…...

LeetCode讲解篇之377. 组合总和 Ⅳ

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 总和为target的元素组合个数 可以由 总和为target - nums[j]的元素组合个数 转换而来&#xff0c;其中j为nums所有元素的下标 而总和target - nums[j]的元素组合个数 可以由 总和为target - nums[j] - nums[k]的…...

Midjourney中文版:创意无限,艺术之旅由此启程

Midjourney中文版——一个将你的文字想象转化为视觉艺术的神奇平台。无需繁琐的绘画技巧&#xff0c;只需简单的文字描述&#xff0c;你就能开启一场前所未有的艺术之旅。 Midjourney AI超强绘画 (原生态系统&#xff09;用户端&#xff1a;Ai Loadinghttps://www.mjdiscord.c…...

安装R和RStudio:开始你的数据分析之旅

数据分析是当今世界中一个非常热门的领域&#xff0c;而R语言是进行数据分析的强大工具之一。R是一种编程语言和软件环境&#xff0c;用于统计计算和图形表示。RStudio是一个集成开发环境&#xff08;IDE&#xff09;&#xff0c;它为R语言提供了一个更加友好和高效的工作环境。…...

如何使用python连接数据库?

数据分析离不开数据库&#xff0c;如何使用python连接数据库呢&#xff1f;听我娓娓道来哈 该笔记参考了PyMySQL官方文档和《python数据采集》关于数据存储的部分&#xff0c;欢迎大家去阅读原著&#xff0c;相信会理解的更加透彻。 补充&#xff1a;文末增加Oracle数据库的连…...

Blender 3MF插件终极指南:如何在Blender中实现3D打印文件的完美导入导出

Blender 3MF插件终极指南&#xff1a;如何在Blender中实现3D打印文件的完美导入导出 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 想要在Blender中高效处理3D打印文件吗…...

将自动化脚本打包成自己的app

在移动自动化领域&#xff0c;将编写好的 JS 脚本打包为独立 APK&#xff0c;能保护核心脚本逻辑、定制专属app。本文将从原理、准备、脚本编写、打包配置到测试发布&#xff0c;全方位详解自动化脚本打包成专属 APP 的完整流程。一、定制 APP 核心原理冰狐定制 APP 功能本质是…...

用于免训练手术视频分割的记忆增强SAM2(MA-SAM2)

学影像 手术视频 基础模型增强 ──────────────────────────────────────── 1. 标题 英文:Memory-Augmented SAM2 for Training-Free Surgical Video Segmentation 中文:用于免训练手术视频分割的记忆增强SAM2(MA-SAM2) 2. 作者…...

pycharm接入AI大模型测试脚本费用说明

费用说明 阿里云通义千问提供: 新用户免费额度:注册即送一定额度的免费 tokens 按量付费:用多少付多少&#xff0c;无最低消费 价格透明:详见 官方定价 示例成本(以 qwen-plus 为例) 解析-个 100页 PDF≈ 50,000 tokens ≈0.4 生成 100 个问答对≈20,000 tokens ≈0.16 下一步 …...

Arm SME指令集:多向量整数运算与矩阵加速详解

1. SME指令集与多向量整数运算概述在现代处理器架构中&#xff0c;SIMD&#xff08;单指令多数据&#xff09;技术已经成为提升计算性能的关键手段。作为Armv9架构的重要扩展&#xff0c;SME&#xff08;Scalable Matrix Extension&#xff09;指令集专门针对矩阵运算进行了深度…...

避坑指南:从ADS导入DXF到Altium Designer时,如何解决封装丢失和铺铜失败的常见问题

从ADS到Altium Designer的工程迁移&#xff1a;封装与铺铜问题的深度解决方案 在射频与微波电路设计领域&#xff0c;工程师常常面临一个典型困境&#xff1a;如何在ADS&#xff08;Advanced Design System&#xff09;中完成高频仿真后&#xff0c;将设计无缝迁移到Altium Des…...

当EtherCAT遇上串口调试:在STM32F401RET6上如何兼顾实时通信与日志输出

当EtherCAT遇上串口调试&#xff1a;在STM32F401RET6上如何兼顾实时通信与日志输出 工业自动化领域对实时性要求极高&#xff0c;EtherCAT作为高性能工业以太网协议&#xff0c;其从站开发往往需要在资源受限的微控制器上实现。STM32F401RET6凭借其Cortex-M4内核和丰富的外设资…...

JPEG2000在Matlab中的实现源码

JPEG2000在Matlab中的实现源码 【下载地址】JPEG2000在Matlab中的实现源码 JPEG2000在Matlab中的实现源码欢迎来到JPEG2000的Matlab实现资源页面 项目地址: https://gitcode.com/open-source-toolkit/0665cd 欢迎来到JPEG2000的Matlab实现资源页面。本资源旨在提供一套完…...

HTML代码加密工具源码_在线网页加密解密_防复制源码

概述 在前端开发与网页设计中&#xff0c;保护原创代码不被轻易复制或篡改是许多开发者的核心诉求。无论是为了隐藏核心逻辑&#xff0c;还是防止样式被恶意盗用&#xff0c;一款高效、安全的加密工具都显得尤为重要。为此&#xff0c;幽络源源码网特别整理并分享这款HTML代码…...

别再死磕官网了!用Docker Compose 5分钟搞定Weaviate向量数据库本地部署

5分钟极速部署Weaviate&#xff1a;Docker Compose避坑指南 当开发者第一次接触Weaviate时&#xff0c;往往会被官网复杂的配置选项和冗长的文档吓退。作为一款开源的向量数据库&#xff0c;Weaviate确实提供了强大的语义搜索和AI原生功能&#xff0c;但官方安装流程却像迷宫一…...