TC SRM567 DIV2 T3 MountainsEasy

MATLAB项目,模拟曲柄滑块机构的运动学和动力学.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

前言

TC百题计划,走起!

题目描述

今有一图青山绿水,山神安山NN座。重峦叠嶂,峰峰起伏如此:

For 0 <= i < N:
    For 0 <= x < W:
        For 0 <= y <= Y[i] - |x - X[i]|:
            pix[x, y] := 'X'

即是:

..X...
.XXXX.
XXXXXX

如是,山峰坐标多变莫测。今予你山水画一幅,请求山峰坐标的不同序列,答案对109+9取模。

Example

{“X.”,
“XX”}
2
Returns: 5
Here one of the mountains is completely covered by the other. The five possible sequences are:
(0, 1), (0, 1)
(0, 1), (0, 0)
(0, 1), (1, 0)
(0, 0), (0, 1)
(1, 0), (0, 1)

数据范围

  • 画布长宽皆至五十
  • 1≤N≤501≤N≤50

分析

PART 1 找山峰

通过给出的图,我们可以先确定有一些地方是一定是有山峰的,假设为peakspeaks个位置,那么如何去算这个peakspeaks呢?
容易发现,一个点如果是山峰,当且仅当这个点是这一列最高点并且两边的最高点都不高于它。
这样就可以用非常简单的方法先求出peakspeaks。

PART 2 转化问题

我们设一个共有tottot个格子是山,总共有N0N0座山,还有NN座山山峰的位置不确定(N即是N0−peaksN0−peaks,注意这里的记法与题目给出的有所不同)。那么问题就转化成了我们给这tottot个格子从11~tot编号,有N0N0个相同的物品,一个格子可以放多个物品。有peakspeaks个格子至少要放一个。放完后,我们把每个物品放到盒子的编号提出来变成一个序列,求这个序列的种数。
刚刚应该注意到非常重要也是非常关键的一点,我们结合这个样例,因为盒子的序号顺序有差异的序列也算是不同的,因此,事实上可以把这N0N0个物品看作是不相同的,然后求它们放在盒子里的方案数。
问题已经到了这一步了,就可以开始思考容斥的做法了。

PART 3 容斥

按照套路,我们设g(x)g(x)为恰好有xx个有限定的盒子没有满足限定(即这x个盒子里没放一个物品)。
那么要求的答案就是totN0−g(1)−g(2)−...−g(picks)totN0−g(1)−g(2)−...−g(picks),即,总共的方案数是N0N0个物品,每个物品有都有tottot个盒子可以放,再减去恰好是11个盒子不满足条件,2个盒子不满足条件,…,pickspicks个盒子不满足条件的方案数。
当然g(x)g(x)不好求,那么我们可以设一个f(x)f(x)表示至少有xx个有限定的盒子没有满足限定。那么容易得出f(x)=(picksx)×(tot−x)N0,即,先选出xx个盒子不放任何东西,这样还剩下tot−x个盒子,也就是这N0N0个物品的选择。
再来看一看f(x)f(x)与g(x)g(x)的关系:f(x)=∑picksk=x(kx)g(k)f(x)=∑k=xpicks(kx)g(k),即,对于恰好kk个限定盒不满足的情况,这k个位置的任意xx组合都会在f(x)中被计算g(k)g(k)次。
这样答案就可以这样表示:totN0−f(1)+f(2)−f(3)+...+(−1)picksf(picks)totN0−f(1)+f(2)−f(3)+...+(−1)picksf(picks),即:

∑i=0peaks(peaksi)×(−1)i×(tot−i)N0∑i=0peaks(peaksi)×(−1)i×(tot−i)N0

(感谢cly_none大佬指教)

参考程序

//tc is healthy, just do it
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MOD = 1000000009;
const int ArSize = 55;
int fac[ArSize], inv[ArSize];

class MountainsEasy {
private:
    int H, W;
    void init() {   /*预处理出50以内的阶乘及其逆元,后面算组合数会用到*/
        int i;
        for (fac[0] = i = 1; i <= 50; i++) fac[i] = (LL)i * fac[i - 1] % MOD;
        inv[50] = fast_pow(fac[50], MOD - 2);
        for (i = 49; i >= 0; i--) inv[i] = (LL)(i + 1) * inv[i + 1] % MOD;
    }
    int fast_pow(int bs, int ex) {  // 快速幂
        int res = 1;
        for (; ex > 0; ex >>= 1, bs = (LL)bs * bs % MOD) if (ex & 1) res = (LL)res * bs % MOD;
        return res;
    }
    int C(int n, int r) {   // 组合数
        return (LL)fac[n] * inv[r] % MOD * inv[n - r] % MOD;
    }
public:
    int countPlacements( vector <string> picture, int N );
};

int MountainsEasy::countPlacements(vector <string> picture, int N) {
    H = picture.size(), W = picture[0].length();
    int x, y, N0 = N;
    for (x = 0; x < W && picture[H - 1][x] == '.'; x++);
    if (x == W) return 0;
    else {
        int tot = 0;
        // 找确定的山峰个数
        for (; x < W; x++) {
            for (y = 0; y < H && picture[y][x] == '.'; y++);
            if (y == H) continue;
            if (!y || 
                (!x && (x + 1 == W || picture[y - 1][x + 1] == '.')) ||
                 (x + 1 == W && (!x || picture[y - 1][x - 1] == '.')) || 
                 (x && x + 1 < W && picture[y - 1][x - 1] == '.' && picture[y - 1][x + 1] == '.')
            )
                --N;
            tot += H - y;
        }
        if (N < 0) return 0;
        init();
        int peaks = N0 - N;
        LL res = 0;
        // 容斥部分,极其精简吧
        for (int i = 0; i <= peaks; i++)
            if (i & 1) res = (res + MOD - (LL)C(peaks, i) * fast_pow(tot - i, N0) % MOD) % MOD;
            else res = (res + (LL)C(peaks, i) * fast_pow(tot - i, N0) % MOD) % MOD;
        return (int)res;
    }
}

总结

首先这个原题的英文题面废话很多,很长,转化之后就很简单的一个意思。不过转化到物品不同这一性质其实不容易,因为之前抽象出来的问题描述的不是很好…(我的锅…)但是cly大佬还是一眼就看出来了,个人认为自己的抽象能力还有待提升。解决了计数,找山峰其实也是很一个很毒瘤的模拟题,一开始写的很麻烦,改来改去改了三次才想到这个简单的思路。总而言之,这题考验的还是你的抽象能力,是否能发现问题最本质的性质,无论是在求山峰还是算方案的时候都是很需要这种能力的。我认为这是道好题!

基于MATLAB的Abel反演和Fowler–Milne诊断研究对HyperFill TWGMAW-P进行了电波形分析。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

aerosonde-fc-hybrid-uav-sim-main.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

topcoder SRM 567 Div2 1000

1000:MountainsEasy 题意: 给你一个山的横切图。。。已知这个图中有n座山,然后问你所有山的排列种数。。。 分析: emmm,你们自己去看 代码: int fac[ArSize], inv[ArSize]; class MountainsEasy { private: int H, W; void init() {...

nympho的博客 366

YOLO26算法左侧目标识别+训练好的模型+504张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 83 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9950** mAP50-95 | 0.9950 Precision | 0.9989 Recall | 1.0000 train/box_loss | 0.2388 train/cls_loss | 0.1435 val/box_loss | 0.1671 val/cls_loss | 0.1126 【训练过程分析】 自从开始这次 YOLO26 算法训练以来,我始终盯着那条 loss 曲线,就像盯着一个长跑运动员的冲刺曲线一样。最初几轮训练,loss 拉得很快,那段时间真的挺让人揪心的,生怕一不小心就错过了最好的时机。但到了中期,loss 曲线进入了漫长的平台期,就像马拉松中的长距离赛段,大家都保持着匀速前进。到了后期,loss 平稳下降,mAP50 和 mAP50-95 两个指标都稳定在了 0.9950,这个阶段就像是冲刺阶段,每一次的训练都能感受到模型在平稳而坚定地进步。在训练到第 83 轮时,所有的 loss 指标都趋于稳定,这意味着模型已经在我们的训练数据上收敛得很好。但在这整个过程中,我还是感受到了一些挑战,尤其是在平台期的那几轮,看着曲线徘徊不前,那种焦虑和不确定感真的磨得人没脾气。不过,最后的曲线走势还是让我们松了... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

TopCoder SRM 567 Div2 1000 countPlacements

神tm这题有毒,模数是1e9+9不是1e9+7坑死我了 容易发现有些格子是必须作为山顶的,其余格子是不是山顶都是无所谓的。一个格子只要满足上方三个都不是’X’就必须作为一个山顶,因为没有别的山顶可以覆盖它了。可以统计出必须为山顶的格子有 sss 个,其它’X’的格子有 sXsXsX个。 套用排列组合经典的小球问题,就相当于将 NNN 个不同的小球放入 sXsXsX 个盒子里,可以为空,其中 s...

ymzqwq的博客 299

ACS6116 - 高级控制模块的任务集。该任务重点是模拟和控制猎鹰9号火箭着陆,采用受限和不受约束的MPC技术。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

GA-PSO优化-RNN-MPC.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

SRM 567 div2

250pt....   500pt   题意:给n和m,a,b满足(1 &lt;= a &lt;= n, 1 &lt;= b &lt;= m),SSR(a, b) = (sqrt(a) + sqrt(b))^2为整数,其实就是sqrt(a*b)为整数。 总体思路是:从1...n枚举a,看m中有多少个和a组合可以构成平方数的。 先把a因式分解,a = k1p1*k2p2*...*kxpx ...

weixin_34235371的博客 182

三轴机床 NURBS 轨迹规划与 NSGA-II 多目标优化.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

【带状电容器计算用于电容式触摸传感器应用】半数值模型的电容式触摸传感器集成于金属基材涂层中研究(Matlab代码实现)

内容概要:本文针对集成于金属基材涂层中的电容式触摸传感器,提出了一种用于带状电容器电容计算的半数值模型,并基于Matlab平台实现了仿真分析。该模型结合解析方法与数值计算,采用有限差分法求解二维泊松方程,精确模拟传感器在金属背景下的电场分布,有效克服了金属基底对电容信号的屏蔽与干扰问题,显著提升了触摸检测的灵敏度与稳定性。研究系统探讨了传感器的几何结构、介电层材料特性、电极尺寸及间距等关键参数对电容响应的影响机制,建立了完整的建模流程与仿真框架,为高性能、高抗干扰能力的电容式触控器件在智能家居、工业控制面板及复杂电磁环境下的实际应用提供了理论支撑与技术路径。; 适合人群:具备电磁场与电磁波、数值计算方法基础,熟悉Matlab编程,从事传感器设计、人机交互技术开发、电子器件仿真及相关领域研究的科研人员、工程师及研究生。; 使用场景及目标:①面向金属表面集成的电容式触摸传感器进行高精度建模与性能优化;②为智能家电、工业设备等人机接口的触控模块提供抗干扰设计与仿真验证方案;③支撑相关科研课题的理论分析、算法开发与原型系统验证。; 阅读建议:学习者应结合提供的Matlab代码深入理解半数值建模的具体实现过程,重点掌握有限差分法在电场求解中的应用技巧,并可通过调整传感器结构参数与材料属性开展对比仿真,进而探究各因素对灵敏度的影响规律,全面提升对电容式传感机制的理解与工程化设计能力。

【通信测试自动化】基于可执行上下文的接口测试生成:通信行业高复杂度API质量保障方案设计

内容概要:本文探讨了接口测试自动化在通信行业的演进路径,从传统确定性脚本向“可执行上下文”驱动的智能化测试转型。面对接口数量激增、迭代周期缩短和测试数据复杂性的挑战,文章提出“可执行上下文”概念,强调测试成功不仅依赖API规范,还需融合真实测试数据、调用链依赖、业务断言逻辑和隐性规则。通过Skills拆解、RAG注入和Agentic编排三大核心技巧,构建结构化上下文资产,实现AI辅助生成高可执行性测试用例,并引入自愈断言机制提升测试鲁棒性。最终指出未来趋势是“治理下的自治”,即在保障安全与合规的前提下,推进自动化向多步骤工作流和语义感知扩展。; 适合人群:具备一定软件测试或自动化开发经验,从事通信行业系统测试、质量保障或接口自动化平台建设的研发与测试人员,尤其是关注AI在测试中应用的工程师和技术管理者。; 使用场景及目标:①解决通信系统中接口测试因数据不真实、依赖复杂导致的用例失效问题;②利用RAG与Skills方法提升AI生成测试用例的准确性与可审计性;③通过自愈断言和上下文复用增强测试稳定性与维护效率;④构建面向5G、O-RAN、BSS等复杂系统的可持续演进的自动化测试体系。; 阅读建议:此资源以工程实践为导向,结合代码示例深入剖析上下文驱动的测试生成机制,建议读者结合自身系统特点,重点借鉴上下文资产积累与RAG规则注入的方法,并在可控环境中试点Agentic测试与自愈断言,逐步实现从脚本自动化到上下文智能的跃迁。

用C#实现面向对象编程之继承和多态概念的示例程序

这是文章《面向对象编程之继承和多态》的配套示例程序。在学习面向对象编程时都学习到三个概念:封装、继承、多态。封装已经讲解过,可以翻一下本博客的发表记录。所谓的继承,就是父类已经实现的属性、方法等,子类也跟着有,无需重复实现。所谓的多态,就是父类只定义的属性、方法等的名称、数据类型、参数,具体由子类实现。

【数据库技术】MySQL事务ACID与隔离级别解析:InnoDB与MyISAM存储引擎对比及适用场景设计

内容概要:本文系统讲解MySQL事务与存储引擎的核心知识点,重点围绕事务的ACID特性、并发问题与隔离级别(包括脏读、不可重复读、幻读)、MySQL默认的可重复读(RR)隔离级别如何通过MVCC和间隙锁避免幻读,以及InnoDB与MyISAM存储引擎在事务支持、锁机制、外键、全文索引等方面的对比。同时介绍了MEMORY存储引擎的特点及其适用场景,并结合实际面试高频问题进行深入剖析,帮助读者全面掌握MySQL在事务处理和存储引擎选择方面的关键技术细节。; 适合人群:准备后端开发面试、或希望深入理解MySQL核心机制的开发者,尤其是有一定数据库基础、工作1-3年的研发人员。; 使用场景及目标:①理解事务四大特性(ACID)的底层实现原理,如undo log、redo log、MVCC等;②掌握不同隔离级别之间的区别及MySQL默认RR级别的特殊性;③能够根据业务需求合理选择InnoDB与MyISAM存储引擎;④应对MySQL相关技术面试中的高频问题。; 阅读建议:此资料兼具理论深度与实战指导价值,建议结合MySQL官方文档和实际环境动手验证事务行为与锁机制表现,尤其关注RR级别下快照读与当前读的行为差异,以及行锁失效场景的模拟,以加深理解和记忆。

SpringSecurity-思维导图

SpringSecurity-思维导图

优快云首页 发布文章 优快云同步助手 阻尼器磁流变阻尼器MR Damper非线性(阻尼、滞回)特性研究(Matlab代码实现) 46 100 摘要:会在推荐、列表等场景外露,帮助读者

内容概要:本文系统整理了一套面向科研仿真的Matlab/Simulink资源合集,涵盖电力电子、控制理论、信号处理、电力系统、智能优化算法、机器学习、图像处理、路径规划、通信技术、雷达追踪、车间调度等多个前沿科研领域。重点资源包括三相PWM整流器双闭环控制、磁流变阻尼器非线性特性建模、双有源桥(DAB)DC-DC变换器优化控制、电网不平衡下的功率平衡策略、卡尔曼滤波状态估计、多类型路径规划与调度算法等,多数为顶级EI期刊成果复现,配套仿真模型、原理说明、参考文献及代码,具备较强的学术参考价值与工程实践意义。; 适合人群:适用于从事电气工程、自动化、控制科学与工程、信号与信息处理、计算机、机械电子等方向的硕士/博士研究生及科研人员,要求具备Matlab/Simulink基础操作能力及相关专业背景;也适合高校教师指导课程设计、毕业设计或科研项目开发。; 使用场景及目标:①辅助高水平论文研究与期刊成果复现;②支撑课程设计、毕业设计与科研项目开发;③深入理解先进控制策略(如VOC、SVPWM、模糊PID、滑模控制)与系统建模方法;④结合YALMIP等优化工具开展算法设计与验证;⑤拓展智能优化、机器学习、路径规划等跨学科研究能力。; 阅读建议:建议按照资源目录顺序系统浏览,优先关注标注“顶级EI复现”的高价值模型,结合公众号“荔枝科研社”提供的网盘资料与技术文档进行仿真实践,通过动手调试加深对算法逻辑与系统动态特性的理解,提升科研建模与创新能力。

制造企业AI智能体平台规划及场景应用方案.pptx

制造企业AI智能体平台规划及场景应用方案.pptx

智慧交通治理AI大模型多场景协同决策与自适应设计方案.pptx

智慧交通治理AI大模型多场景协同决策与自适应设计方案.pptx

永磁同步电机全速域无位置传感器控制simulink仿真

内容概要:本文围绕永磁同步电机(PMSM)全速域无位置传感器控制展开研究,重点对比分析了三种滑模速度控制策略——传统滑模控制(SMC)、超扭滑模控制(STSMC)与快速终端滑模控制(FTSMC)——在离散化仿真环境下的性能表现,并结合高阶滑模磁链观测器实现无传感器运行。理论分析表明,STSMC通过双增益机制将不连续控制作用嵌入积分项,有效抑制抖振并保持控制信号的连续性;FTSMC则利用非线性终端吸引子实现系统状态的有限时间收敛,且控制律不含切换项。文章系统阐述了各控制器的理论推导、参数整定方法及离散化实现过程,所构建的仿真模型支持从有感控制到无感控制的一键切换,以及控制器与观测器类型的灵活配置,所有算法均通过开发板集成测试验证。仿真结果表明,STSMC在动态响应与抖振抑制的综合性能上表现最优,FTSMC在稳态精度方面更具优势,而传统SMC存在明显的抖振问题。; 适合人群:具备一定电机控制理论基础和Simulink/Matlab仿真能力的电气工程、自动化及相关专业的研究生、科研人员及从事电机驱动系统开发的工程师。; 使用场景及目标:①深入理解无位置传感器控制中滑模控制策略的设计原理与实现方法;②掌握STSMC、FTSMC等先进滑模算法在PMSM控制系统中的应用技巧;③为高性能电机控制系统的仿真建模与工程实践提供技术参考和解决方案。; 阅读建议:建议读者结合文中提供的仿真模型进行实操演练,重点关注控制器参数整定与离散化实现细节,对比不同控制策略的仿真结果,深入理解其在实际系统中的适用条件与优化方向。

增强型PID-自适应-前馈-神经网络控制研究(Matlab代码实现)

内容概要:本文系统研究了“增强型PID-自适应-前馈-神经网络控制”复合控制策略,结合Matlab代码与Simulink仿真模型,深入探讨了传统PID控制与智能控制算法的深度融合方法。该策略通过引入自适应机制和前馈补偿,结合BP神经网络进行非线性系统建模与参数优化,并融合扩展卡尔曼滤波(EKF)等状态估计技术,提升控制系统在复杂动态环境下的响应速度、鲁棒性和控制精度。研究涵盖双闭环控制架构设计、神经网络训练流程、EKF状态融合等关键技术环节,适用于电机控制、电力电子变换器、无人机、微电网等高阶非线性系统的建模与仿真。配套资源丰富,包含多个可复现的Simulink模型、Matlab代码及参考文献,尤其支持高水平EI期刊成果的复现与验证。; 适合人群:具备自动控制理论基础和Matlab/Simulink仿真能力,从事控制工程、电气自动化、电力电子或智能系统研发的研究生、科研人员及工作1-3年以上的工程技术人员; 使用场景及目标:①深入研究先进PID控制策略在非线性系统中的优化应用;②实现神经网络与经典控制算法的协同设计与联合仿真;③开展状态估计、参数辨识与智能控制策略的实验验证;④复现并拓展高水平学术论文中的控制方法,支撑科研创新与项目开发; 阅读建议:建议结合提供的Matlab代码与Simulink仿真模型进行实践操作,重点剖析控制结构设计逻辑、神经网络训练过程及EKF状态估计的实现细节,按照文档说明逐步调试与优化,以全面掌握复合控制系统的建模、仿真与性能评估方法。

上一篇: CF 439E Devu and Birthday Celebration
下一篇: HDU3065 病毒侵袭持续中
「已注销」
博客等级 码龄9年 13粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值