TC SRM681 DIV2 T3 XorLists

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

题意

有一个序列AA,矩阵S表示AA中的元素两两的异或值。即Si,j=AixorAj,0≤i,j≤N,NN为序列的元素个数。你的任务是对于给定的S,求出满足条件的AA的个数,满足对于∀Ai,都有0≤Ai≤M0≤Ai≤M。答案对109+7109+7取模。

约定

1≤N≤10,0≤M≤1091≤N≤10,0≤M≤109

分析

PART 1 XOR

首先明白异或运算的一个性质:

  • 若axorb=caxorb=c,则b=axorcb=axorc

即它的运算过程是可逆的。这个很显然。
所以,也就是说,我们如果知道了这个序列的第一个数,那么剩下的数都可以用矩阵里的信息运算出来。
那么序列AA可行的方案数也就是序列A中第一个数A0A0可行的方案数。由于1≤Ai≤M,M≤1091≤Ai≤M,M≤109,所以实际上方案数是绝对不会超过MM的,即,模数是个废物。

PART 2 计数

我们枚举第一个数的可能情况即可。
首先考虑如果没有M的限制时,方案数是无限种的。(好像说了和没说没什么区别)
我们考虑有MM的限制时,首先我们要满足第一个数。我们可以枚举第一个数的二进制位,若当前位前的所有位都和M的对应位相同,那么当前位的选择是受MM的对应位限制的,否则可以随意选择01。我们可以在枚举到当前位的同时记录一个状态:第一个数的前几位是否全部与M的对应位相同,这样就比较好决定当前的决策。接下来我们需要其他N−1N−1个数也满足MM的限制。那么我们只需要在对第一个数处理的同时,我们每确定一个当前位的选择,就通过矩阵S计算出其他数对应位是什么,并且,类似对第一个数的处理,我们也可以把其他数的这种状态记录下来。因为NN较小,这个用状态压缩即可。

这玩意似乎叫数位DP,你可以照着网上的板子写一个记忆化;或者循环形式也可以。这两种实现的代码后面都会贴出。

参考程序

1 我的记忆化实现

//tc is healthy, just do it
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 15;
const int MAX_B = 32;
const int MAX_S = 1100;

class XorLists {
public:
    int countLists( vector <int> s, int m );
private:
    int N, M;
    int dfs(int pos, int stat);
};

int S[MAX_N][MAX_N], DP[MAX_B][MAX_S];

int XorLists::countLists(vector <int> s, int m) {
    int i, j, k;
    N = floor(sqrt(s.size())), M = m;
//  首先检查是否有解,第一遍:检查S[i][i]是否为0,即自己异或自己是否为0
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) S[i][j] = s[i * N + j];
        if (S[i][i]) return 0;      // judge a[i] xor a[i]
    }
//  第二遍:检查所有A[i]xorA[j]xorA[j]xorA[k]是否等于A[i]xorA[k]
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
            for (k = 0; k < N; k++)     // judge whether a[i] ^ a[j] ^ a[j] ^ a[k] == a[i] ^ a[k]
                if (S[i][j] ^ S[j][k] ^ S[i][k]) return 0;
    memset(DP, 0xff, sizeof(DP));
    return dfs(31, (1 << N) - 1);   // 由于M在int内,直接从最高位开始也没有关系
}

int XorLists::dfs(int pos, int stat) {
//  pos为当前位,stat表示受限制的状态。一开始时我们可以认为所有数都是受限制的,即最高位同M都为0,所以状态为111...1,这样方便我们后面的转移
    if (pos < 0) return 1;  // pos小于0说明所有位已经枚举完(当然是一种合法方案),那么返回1
    if (DP[pos][stat] > 0) return DP[pos][stat];
    int & now = DP[pos][stat];
    int nxtnum, m_pos = M >> pos & 1, lim = stat & 1 ? m_pos : 1, i, j, nxtstat;
//  m_pos表示M的当前位,lim位当前位的限制,nxtstat表示下一个限制状态
    for (i = now = 0; i <= lim; i++) {  // i枚举当前位的选择
        nxtstat = stat & 1 & i == m_pos;    // 先加入第一个数的状态
        bool fail = false;  // fail表示该状态是否合法
        for (j = 1; j < N; j++)
            if (stat >> j & 1) {    // 如果某个数受限制,我们就要考虑一下它当前是否合法;若它已经不受限制了则可以不管它
                nxtnum = S[0][j] >> pos & 1 ^ i;    // 算出这个数的当前位
                if (nxtnum > m_pos) { fail = true; break; }
                if (nxtnum == m_pos) nxtstat |= 1 << j;     // 更新下一个限制状态
            }
        if (!fail) now += dfs(pos - 1, nxtstat);    // 累加
    }
    return now;
}

2 CHY大佬的循环实现

emmmm这个代码我不是很会解释,大家自己看吧。

#include <bits/stdc++.h>
using namespace std;

class XorLists {
public:
    int countLists( vector <int> s, int m );
};
const int MAXN = 10, MAXLOG = 32;
int n;
int dp[MAXLOG][2][1 << MAXN];
int XorLists::countLists(vector <int> s, int m) {
    n = 0;
    for(;n * n < s.size(); n++);
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            for(int k = 0; k < n; k++)
                if((s[i * n + j] ^ s[j * n + k]) != s[i * n + k])
                    return 0;
    memset(dp, 0, sizeof(dp));
    dp[31][0][(1 << n) - 1] = 1;
    for(int i = 31; i > 0; i--)
        for(int j = 0; j <= 1; j++)
            for(int k = 0; k < 1 << n; k++) {
                if(dp[i][j][k] == 0) continue;
                for(int i1 = 0; i1 <= 1; i1++) {
                    int b = 0;
                    for(int l = 0; l < n; l++)
                        if((k >> l) & 1)
                        if((((m >> (i - 1)) & 1) == 0) && (((s[l] >> (i - 1)) & 1 ^ i1) == 1)) {
                            b = 1;
                            break;
                        }
                    if(b == 1) continue;
                    int t = k;
                    for(int l = 0; l < n; l++)
                        if((k >> l) & 1)
                        if((((m >> (i - 1)) & 1) == 1) && (((s[l] >> (i - 1)) & 1 ^ i1) == 0)) t -= 1 << l;
                    dp[i - 1][i1][t] += dp[i][j][k];
                }
            }
    int ans = 0;
    for(int i = 0; i <= 1; i++)
        for(int j = 0; j < 1 << n; j++) ans += dp[0][i][j];
    return ans;
}

总结

本题重点在于对位运算性质的掌握,如果熟练了就能很快分析出来。碰到这种情况,不妨直接拿来几个数分析分析。这题只要发现了第一个数确定后面数也确定这个性质,整个题就没什么难度了。虽然数位DP没有接触过,但自己想出来一个记忆化的形式还是不太难的。并且这题还考到了状态压缩的技巧,还是比较综合的。

基于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 681 Div. 2 Problem 500 - ExplodingRobots (枚举)

RT

一只冰熊 716

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 指标都趋于稳定,这意味着模型已经在我们的训练数据上收敛得很好。但在这整个过程中,我还是感受到了一些挑战,尤其是在平台期的那几轮,看着曲线徘徊不前,那种焦虑和不确定感真的磨得人没脾气。不过,最后的曲线走势还是让我们松了... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

单链表 -> 双向链表 [XorList]

from: http://forum.byr.edu.cn/wForum/disparticle.php?boardName=ACM_ICPC&ID=34153&pos=6 楼主&12楼I just changed one line code. 给定一个单链表,结点包括一个整数和next指针,给定一个指向头的指针和一个指向尾的指针,修改链表,使得可以前向和后向访问链表,要求不能增加别的

TRACEKK的专栏 974

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

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

GA-PSO优化-RNN-MPC.zip

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

cf #681 Div. 2 A B C

A题 题目链接 题目大意 幼儿园有n个小朋友,4n个座位(从1号开始,4n号结束),我们需要帮助小朋友排座位,不符合要求的座位安排: 1.gcd(a,b)=1 (任意两个小朋友的座位号的最大公约数不能等于1) 2.a%b=0或b%a=0(任意两个小朋友的座位号不能被对方整除) 输入 第一行为正整数t(1≤t≤100)——测试用例数。 每个测试用例包含一行包含整数n(1≤n≤100)——孩子的数量。 输出 输出t行,它包含从1到4n的n个不同的整数——孩子们在相应的测试用例中应该占据的椅子的数量。如果有多

m0_47328850的博客 259

三轴机床 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状态估计的实现细节,按照文档说明逐步调试与优化,以全面掌握复合控制系统的建模、仿真与性能评估方法。

上一篇: ZOJ 3649 Social Net
下一篇: Blocked websites CodeChef - WSITES01
「已注销」
博客等级 码龄9年 13粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值