做题记录4

news/2025/10/3 10:34:05/文章来源:https://www.cnblogs.com/dbywsc/p/19124150

CF577B.Modulo Sum

思路

求是否存在一段非空子序列的和模 \(m\) 的值为 \(0\) ,可以先等价地对每一个数字都模 \(m\) 。对于一个长度为 \(n\) 的序列,显然有 \(n\) 段前缀和,并且前缀和模 \(m\) 的值有 \([0, m)\)\(m\) 种。根据抽屉原理,当 \(n > m\) 时,一定有至少两段前缀和的值是相同的,而这两段前缀和相间得到的这一段连续子序列的和模 \(m\) 的值是 \(0\) ,符合要求。
也就是说,当 \(n > m\) 时一定是 YES

\(n \leq m\) 时,这个问题就转化为了一个 01背包,由于 \(m \leq 10^3\) ,因此可以直接计算。
\(f_{i, j}\) 表示从第 \(i\) 个数开始,能否通过选取一些数使得这些数的和模 \(m\) 的值为 \(j\) ,就有状态转移方程:

\[f_{i, j} |= f_{i - 1, j} \]

\[f_{i, (j + a_i) \mod m} |= f_{i - 1, j} \]

考虑边界,有:\(f_{i, a_i} = 1\)

最后只需要判断是否存在一个 \(f_{i, 0} = true\) 就可以了。

代码

void solve(void) {int n, m;std::cin >> n >> m;std::vector<int> a(n + 1);for(int i = 1; i <= n; i++) {std::cin >> a[i];a[i] %= m;}if(n > m) {std::cout << "YES\n";return;}std::vector<std::vector<int>> f(2020, std::vector<int>(2020));for(int i = 1; i <= n; i++) f[i][a[i]] = 1;for(int i = 1; i <= n; i++) {for(int j = 0; j < m; j++) {f[i][j] |= f[i - 1][j];f[i][(j + a[i]) % m] |= f[i - 1][j];}if(f[i][0]) {std::cout << "YES\n"; return;}}std::cout << "NO\n";
}

CF25D. Roads not only in Berland

思路

操作数显然是联通块的数量减一。接下来考虑如何构造出一种输出方式。

可以用并查集维护这张图,一个联通块可以删边当且仅当联通块是一个环,构成环的这条边是多余的。所以记录一下每个联通块多出来的多余边,并且记录每个联通块的根节点,之后就可以按照下面的方式输出:

环边的两个节点 联通块的根和下个联通块的根连一条新边

代码

struct DSU {std::vector<int> p, siz;DSU(int n): p(n + 1), siz(n + 1, 1) {std::iota(p.begin(), p.end(), 0);}int find(int x) {if(x == p[x]) return p[x];return p[x] = find(p[x]);}bool unite(int a, int b) {int pa = find(a), pb = find(b);if(pa == pb) return false;if(siz[pa] < siz[pb]) std::swap(pa, pb);p[pb] = pa;siz[pa] += siz[pb];return true;}bool same(int u, int v) {return find(u) == find(v);}int size(int u) {return siz[find(u)];}
};void solve(void) {int n; std::cin >> n;DSU dsu(n);std::vector<PII> del;for(int i = 1; i < n; i++) {int u, v; std::cin >> u >> v;if(!dsu.unite(u, v)) del.emplace_back(u, v);}std::vector<int> roots;for(int i = 1; i <= n; i++) {if(dsu.p[i] == i) {roots.push_back(i);}}std::cout << (int)roots.size() - 1 << '\n';for(int i = 0; i < (int)roots.size() - 1; i++) {int u = del[i].x, v = del[i].y;int a = roots[i], b = roots[i + 1];std::cout << u << ' ' << v << ' ' << a << ' ' << b << '\n';}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习unigui【35】dbgrid字段宽度自适应

学习unigui【35】dbgrid字段宽度自适应UniDBGrid1 -> ClientEvents -> ExtEvents [Ext.data.Store[store] ] add store.load fn:function store.load(sender, records, successful, eOpts) {sender.grid.columnM…

网站建设上传宝贝xamp怎样营销能有效获取客户

要用Go获取短信验证码&#xff0c;通常需要连接到一个短信服务提供商的API&#xff0c;并通过该API发送请求来获取验证码。由于不同的短信服务提供商可能具有不同的API和授权方式&#xff0c;我将以一个简单的示例介绍如何使用Go语言来获取短信验证码。 在这个示例中&#xff0…

lucene 8.7.0 版本中的倒排索引、数字、DocValues三种类型的查询性能对比 - 教程

lucene 8.7.0 版本中的倒排索引、数字、DocValues三种类型的查询性能对比 - 教程2025-10-03 10:24 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overfl…

500亿网站建设wordpress首页模块修改

题目描述 现有两门选修课&#xff0c;每门选修课都有一部分学生选修&#xff0c;每个学生都有选修课的成绩&#xff0c;需要你找出同时选修了两门选修课的学生&#xff0c;先按照班级进行划分&#xff0c;班级编号小的先输出&#xff0c;每个班级按照两门选修课成绩和的降序排序…

数哈多应用授权系统如何为Go语言编程开发者给予知识产权保护?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

数哈多应用授权系统如何为Go语言编程开发者给予知识产权保护?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站开发的公司电话微信h5手机网站

微信公众平台&#xff1a;https://mp.weixin.qq.com/ 第一次需要注册&#xff0c;有账号直接扫扫码登陆即可

2018企业网站优化应该怎么做做外贸主要看什么网站

信号处理函数可以正常返回&#xff0c;也可以调用其他函数返回到程序的主函数中&#xff0c;而不是从处理程序返回。 setjmp/longjmp 使用longjmp可以跳转到setjmp设置的位置 这两个函数原型如下 #include<setjmp.h> int setjmp(jmp_buf env); void longjmp(jmp_buf …

好听的音乐地址

好听的音乐地址https://www.youtube.com/watch?v=6T6Lj4Sdu6o&list=RD6T6Lj4Sdu6o&start_radio=1本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多…

雁塔区住房和城乡建设局网站中宁网站建设公司

随着家庭娱乐需求日益旺盛&#xff0c;越来越多的家庭消费者和游戏玩家开始追求大屏游戏带来的沉浸感。玩家在玩游戏的时候用大屏能获得更广阔的视野和更出色的视觉包围感&#xff0c;因此用大屏玩游戏已经成为了一种潮流。用酷开系统玩大屏游戏&#xff0c;过瘾又刺激&#xf…

服务器和网站维护太原注册公司网站

目录 一、安装XPath 二、XPath的基础语法 1.选取节点 三、使用XPath匹配数据 1.浏览器审查元素 2.具体实例 四、总结 一、安装XPath 控制台输入指令&#xff1a;pip install lxml 二、XPath的基础语法 XPath是一种在XML文档中查找信息的语言&#xff0c;可以使用它在HTM…

网站域名到期登不上是怎么回事想建书画网站怎么做的

第三章:处理机调度与死锁 处理机调度算法的目标 处理机调度算法的共同目标 资源利用率:CPU的利用率CPU有效工作时间/(CPU有效工作时间CPU空闲等待时间)公平性平衡性策略强制执行 批处理系统的目标 平均周转时间短系统吞吐量高处理机利用率高 分时系统的目标 响应时间快均…

旗讯OCR表格识别精准还原复杂表格,识别还原准确率95%+,还能结构化 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

二手车网站制作软件工程师面试常见问题

一、 MySQL建表&#xff0c;字段需设置为非空&#xff0c;需设置字段默认值。二、 MySQL建表&#xff0c;字段需NULL时&#xff0c;需设置字段默认值&#xff0c;默认值不为NULL。三、 MySQL建表&#xff0c;如果字段等价于外键&#xff0c;应在该字段加索引。四、 MySQL建表&a…

银河麒麟V10服务器桌面SP1、SP2、SP3国防版集采版国防集采版教育版

银河麒麟V10服务器桌面SP1、SP2、SP3国防版集采版国防集采版教育版 下载地址: kylin_gfb.zip 👍

戴尔网站建设规划旅游门户网站有哪些

2023年7月25日至26日&#xff0c;由中国信息通信研究院&#xff08;简称“中国信通院”&#xff09;、中国通信标准化协会主办的以“云领创新&#xff0c;算启新篇”为主题的“2023可信云大会”在北京成功举办。会上公布了多项前瞻领域的评估结果和2023年度最佳实践案例&#x…

上海备案证查询网站查询网站查询系统网站建设公司专业网站费用报价

1、 文档目标 解决分布式部署下其他机器如何连接RLMLicense管理器。 2、 问题场景 分布式部署下QAC要在其他机器上单独运行扫描&#xff0c;必须先连接RLMLicense管理器&#xff0c;如何连接&#xff1f; 3、软硬件环境 1、软件版本&#xff1a;HelixQAC23.04 2、机器环境…

凭祥网站建设php怎么做搭建网站

主题是拥抱开源 拥抱开源&#xff1a;开放是互联终端不断增长的主旨和核心——使技术世界变得越来越复杂&#xff0c;联系越来越紧密。在微软&#xff0c;我们专注于向客户提供任何信息支持&#xff0c;即使在任何设备或者在多个平台上。 未来是开放的&#xff0c;未来的云是开…

display ip routing-table故障判断及题目 - 详解

display ip routing-table故障判断及题目 - 详解2025-10-03 10:02 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display…

完整教程:华为eNSP环境安装和命令使用教程

完整教程:华为eNSP环境安装和命令使用教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…