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

[AGC043D] Merge Triplets

题目传送门

很有意思的计数题

解法

考虑经过操作后得到的排列的性质


性质1:
p r e ( i ) pre(i) pre(i):前i个位置的最大值,则不会出现超过3个的连续位置的 p r e pre pre相同
必要性
考虑反证,若有超过 3 3 3个的连续位置的 p r e pre pre相同,那么至少有连续有连续三次选择了比第一次选择要小的数,那么至少一个块的长度为 4 4 4,题目中规定块长为 3 3 3,因此不合法
充分性
发现没有充分性,比如: { 2 , 1 , 4 , 3 , 6 , 5 } \{2,1,4,3,6,5\} {2,1,4,3,6,5},手玩模拟一下就会发现有问题
性质2
若排列总长为 3 N 3N 3N, i i i个的连续位置的 p r e pre pre相同的个数为 c n t i cnt_i cnti,那么 c n t 2 ≤ N − c n t 3 cnt_2\le N-cnt_3 cnt2Ncnt3
必要性
对于 c n t 2 cnt_2 cnt2 c n t 3 cnt_3 cnt3来说,他们对应的块内的大小关系是一定的,所以可得 c n t 2 + c n t 3 ≤ N cnt_2+cnt_3\le N cnt2+cnt3N,移项就行了
我们可以化简:
c n t 2 ≤ N − c n t 3 ⇒ 3 c n t 2 ≤ 3 N − 3 c n t 3 ⇒ 3 c n t 2 ≤ ( c n t 1 + 2 c n t 2 + 3 c n t 3 ) − 3 c n t 3 ⇒ 移项得 c n t 2 ≤ c n t 1 \begin{aligned} &cnt_2\le N-cnt_3\\ \Rightarrow&3cnt_2\le 3N-3cnt_3\\ \Rightarrow&3cnt_2\le (cnt_1+2cnt_2+3cnt_3)-3cnt_3\\ \Rightarrow^{移项得}&cnt_2\le cnt_1 \end{aligned} 移项得cnt2Ncnt33cnt23N3cnt33cnt2(cnt1+2cnt2+3cnt3)3cnt3cnt2cnt1

最后我们发现性质1性质2加起来就有了充分性


状态设计:

f i , j : 前 i 个数, c n t 1 − c n t 2 = j 的方案数 f_{i,j}:前i个数,cnt_1-cnt_2=j的方案数 fi,j:i个数,cnt1cnt2=j的方案数
显然 a n s = ∑ k = 0 3 n f 3 n , k ans=\sum_{k=0}^{3n} f_{3n,k} ans=k=03nf3n,k

状态转移:

考虑从小到大放数,对放 1 / 2 / 3 1/2/3 1/2/3个数分别考虑
f i , j → f i + 1 , j + 1 f i , j → f i + 2 , j − 1 ∗ ( i − 1 ) f i , j → f i + 3 , j ∗ ( i − 1 ) ∗ ( i − 2 ) \begin{aligned} &f_{i,j}\to f_{i+1,j+1}\\ &f_{i,j}\to f_{i+2,j-1}*(i-1)\\ &f_{i,j}\to f_{i+3,j}*(i-1)*(i-2) \end{aligned} fi,jfi+1j+1fi,jfi+2,j1(i1)fi,jfi+3j(i1)(i2)
就好了

code:

#include<bits/stdc++.h>
using namespace std;
const int N = 2e3 + 7, M = N * 3;
typedef long long ll;
int n,mod,ans;
int f[M][M<<1];
int ad(int x,int y){ return (1ll*x+1ll*y)%mod; }
void work(int i,int j){f[i+1][j+1+M]=ad(f[i+1][j+1+M],f[i][j+M]);f[i+2][j-1+M]=ad(f[i+2][j-1+M],1ll*f[i][j+M]*(i+1)%mod);f[i+3][j+M]=ad(f[i+3][j+M],1ll*f[i][j+M]*(i+1)%mod*(i+2)%mod);
}
int main() {scanf("%d%d",&n,&mod); n=n*3;f[0][M]=1;for(int i=0;i<n;i++) for(int j=-i;j<=i;j++) work(i,j);for(int i=0;i<=n;i++) ans=ad(ans,f[n][i+M]);printf("%d\n",ans);
}

TXL

相关文章:

[AGC043D] Merge Triplets

题目传送门 引 很有意思的计数题 解法 考虑经过操作后得到的排列的性质 性质1&#xff1a; 设 p r e ( i ) pre(i) pre(i):前i个位置的最大值&#xff0c;则不会出现超过3个的连续位置的 p r e pre pre相同 必要性&#xff1a; 考虑反证&#xff0c;若有超过 3 3 3个的连续…...

2023年人工智能开源项目前20名

推荐&#xff1a;使用 NSDT场景编辑器快速搭建3D应用场景 1. Tensorflow 2. Hugging Face Transformers 3. Opencv 4. Pytorch 5. Keras 6. Stable Diffusion 7. Deepfacelab 8. Detectron2 9. Apache Mxnet 10. Fastai 11. Open Assistant 12. Mindsdb 13. Dall E…...

ThinkPHP 集成 jwt 技术 token 验证

ThinkPHP 集成 jwt 技术 token 验证 一、思路流程二、安装 firebase/php-jwt三、封装token类四、创建中间件&#xff0c;检验Token校验时效性五、配置路由中间件六、写几个测试方法&#xff0c;通过postman去验证 一、思路流程 客户端使用用户名和密码请求登录服务端收到请求&…...

gerrit 如何提交进行review

前言 本文主要介绍如何使用gerrit进行review。 下述所有流程都是参考&#xff1a; https://gerrit-review.googlesource.com/Documentation/intro-gerrit-walkthrough.html 先给一个commit后但是还没有push上去的一个办法&#xff1a; git reset --hard HEAD^可以多次reset.…...

罗勇军 →《算法竞赛·快冲300题》每日一题:“游泳” ← DFS+剪枝

【题目来源】http://oj.ecustacm.cn/problem.php?id1753http://oj.ecustacm.cn/viewnews.php?id1023【题目描述】 游泳池可以等分为n行n列的小区域&#xff0c;每个区域的温度不同。 小明现在在要从游泳池的左上角(1, 1)游到右下角(n, n)&#xff0c;小明只能向上下左右四个方…...

【教程】PyTorch Timer计时器

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] OpenCV的Timer计时器可以看这篇&#xff1a;Python Timer和TimerFPS计时工具类 Timer作用说明&#xff1a;统计某一段代码的运行耗时。 直接上代码&#xff0c;开箱即用。 import time import torch import os …...

因果推断(六)基于微软框架dowhy的因果推断

因果推断&#xff08;六&#xff09;基于微软框架dowhy的因果推断 DoWhy 基于因果推断的两大框架构建&#xff1a;「图模型」与「潜在结果模型」。具体来说&#xff0c;其使用基于图的准则与 do-积分来对假设进行建模并识别出非参数化的因果效应&#xff1b;而在估计阶段则主要…...

探索隧道ip如何助力爬虫应用

在数据驱动的世界中&#xff0c;网络爬虫已成为获取大量信息的重要工具。然而&#xff0c;爬虫在抓取数据时可能会遇到一些挑战&#xff0c;如IP封禁、访问限制等。隧道ip&#xff08;TunnelingProxy&#xff09;作为一种强大的解决方案&#xff0c;可以帮助爬虫应用更高效地获…...

题目:2629.复合函数

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;2629. 复合函数 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 倒序遍历计算。 解题代码&#xff1a; /*** param {Function[]} functions* return {Function}*/ var compose function(…...

【实训项目】精点考研

1.设计摘要 如果说高考是一次能够改变命运的考试&#xff0c;那么考研应该是另外一次。为什么那么多人都要考研呢&#xff1f;从中国教育在线官方公布是考研动机调查来看&#xff0c;大家扎堆考研的原因大概集中在这6个方面&#xff1a;本科就业压力大&#xff0c;提升竞争力、…...

软件测试Pytest实现接口自动化应该如何在用例执行后打印日志到日志目录生成日志文件?

Pytest可以使用内置的logging模块来实现接口自动化测试用例执行后打印日志到日志目录以生成日志文件。以下是实现步骤&#xff1a; 1、在pytest配置文件&#xff08;conftest.py&#xff09;中&#xff0c;定义一个日志输出路径&#xff0c;并设置logging模块。 import loggi…...

深入理解作用域、作用域链和闭包

​ &#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4da; 前言 &#x1f4d8; 1. 词法作用域 &#x1f4d6; 1.2 示例 &#x1f4d6; 1.3 词法作用域的…...

7款适合3D建模和渲染的GPU推荐

选择一款完美的 GPU 并不是一件容易的事&#xff1b;您不仅必须确保有特定数量的线程和内核来处理图像&#xff0c;而且还应该有足够的 RAM。 这是因为 3D 渲染是一个活跃的工作过程&#xff0c;因为您必须坐在 PC 前并持续与软件交互。为了在 3D 场景中积极工作&#xff0c;您…...

边缘计算物联网网关在机械加工行业的应用及作用分享

随着工业4.0的推进&#xff0c;物联网技术正在逐渐渗透到各个行业领域。机械加工行业作为制造业的基础领域之一&#xff0c;其生产过程的自动化、智能化水平直接影响到产品质量和生产效率。边缘计算物联网网关作为物联网技术的重要组成部分&#xff0c;在机械加工行业中发挥着越…...

(笔记六)利用opencv进行图像滤波

&#xff08;1&#xff09;自定义卷积核图像滤波 import numpy as np import matplotlib.pyplot as plt import cv2 as cvimg_path r"D:\data\test6-6.png" img cv.imread(img_path)# 图像滤波 ker np.ones((6, 6), np.float32)/36 # 构建滤波器&#xff08;卷积…...

WPF C# .NET7 基础学习

学习视频地址&#xff1a;https://www.bilibili.com/video/BV1hx4y1G7C6?p3&vd_source986db470823ebc16fe0b3d235addf050 开发工具&#xff1a;Visual Studio 2022 Community 基础框架&#xff1a;.Net 6.0 下载创建过程略 .Net和.Framework 区别是Net是依赖项&#xff…...

QT里使用sqlite的问题,好多坑

1. 我使用sqlite&#xff0c;开发机上好好的&#xff0c;测试机上却不行。后来发现是缺少驱动&#xff08;Driver not loaded Driver not loaded&#xff09;&#xff0c;代码检查了又检查&#xff0c;发现应该是缺少dll文件&#xff08;系统不提示&#xff0c;是自己使用 QMes…...

openGauss学习笔记-59 openGauss 数据库管理-相关概念介绍

文章目录 openGauss学习笔记-59 openGauss 数据库管理-相关概念介绍59.1 数据库59.2 表空间59.3 模式59.4 用户和角色59.5 事务管理 openGauss学习笔记-59 openGauss 数据库管理-相关概念介绍 59.1 数据库 数据库用于管理各类数据对象&#xff0c;与其他数据库隔离。创建数据…...

Nginx安装与部署

文章目录 一,说明二,下载三,Windows下安装1,安装2,启动3,验证 四,Linux下安装1,安装2,启动3,验证 五,Nginx配置 一,说明 Nginx是一款高性能Web和反向代理服务器,提供内存少,高并发,负载均衡和反向代理服务,支持windos和linux系统 二,下载 打开浏览器,输入地址: https://ngin…...

Linux中Tomcat发布war包后无法正常访问非静态资源

事故现象 在CentOS8中安装完WEB环境&#xff0c;首次部署WEB项目DEMO案例&#xff0c;发现可以静态的网页内容&#xff0c; 但是无法向后台发送异步请求&#xff0c;全部出现404问题&#xff0c;导致数据库数据无法渲染到界面上。 原因分析 CentOS请求中提示用来获取资源的连…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...