尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:P10136 [USACO24JAN] Cowlendar S

题解:P10136 [USACO24JAN] Cowlendar S
📅 发布时间:2026/6/21 2:40:59
鸽巢原理,比较思维

早上打模拟赛败在你上面,下午改题改了半天,晚上又在 Ad-hoc 题单里相见,那我就写篇题解纪念。

题目链接

思路

一般这种取模题三个套路:

  1. 取模余数相同 \(\rightarrow\) 作差之后值为模数的倍数;
  2. 取模后减小范围或判断整除;
  3. \(a \leq b\) 时,\(a \bmod b \leq \frac{a}{2}\)。

这个题是想让我们找出一定范围内的数字 \(k\) 对整个序列取模后的所有余数不超过 3 个,明显是用第一条。

然后我们就可以先把这些数字(前提是同余)两两作差,判断所有差值的因子是否合法即可。时间复杂度 \(O(n^3 \sqrt{V})\),\(V\) 是值域。

但是 \(n \leq 10^4\) 且 \(1 \leq a_i \leq 4 \times 10^9\),我们上面的做法还是太暴力了,我们不可能在值域上动手脚,只能考虑怎么枚举更少的数找出同余的数对。

注意到不同余数上限只有 3,同时 \(n\) 基本上大于这个数,于是我们想到了鸽巢原理。

不知道鸽巢原理是啥也没关系,我们这么去理解:给出一些形状大小都相同的彩球,我们知道彩球的颜色数小于彩球的数量,把它们都放到一个箱子里,问题要从中至少摸几个球才能保证摸出两个颜色相同的球。这很简单,只要次数超过颜色数即可。

运用到这个题上,在余数只有三个的前提下,我们就能想到随便拿出 4 个数字,就一定能保证它们模 \(k\) 后一定有两个数字同余,然后用上面的方法就可以求出答案。

但是注意我们上面所说的都是建立在所有数字均不相等的情况,所以我们要先去重再计算。

你说数列小于 3 怎么办?数字个数都没有 3 个怎么模出来 4 个余数,特判一下就行。

时间复杂度:\(O(n \sqrt{V})\),\(V\) 是值域,可以通过本题。

代码

枚举因子这里应该还能优化,但是我懒就这样吧。

#include <bits/stdc++.h>
#define int long long
using namespace std;const int MN = 1e4 + 3;
int n, a[MN], m, ans;
set<int> st;bool check(int x) {set<int> ts;for (int i = 1; i <= n; i++) {ts.insert(a[i] % x);if (ts.size() > 3) return false;}return true;
}signed main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n;for (int i = 1; i <= n; i++) cin >> a[i];sort(a + 1, a + n + 1);n = unique(a + 1, a + n + 1) - a - 1;m = a[1] / 4;if (n <= 3) return cout << (1 + m) * m / 2, 0;for (int i = 1; i <= 4; i++) {for (int j = i + 1; j <= 4; j++) {int cur = abs(a[j] - a[i]);for (int x = 1; x * x <= cur && x <= m; x++) {if (cur % x) continue;if (check(x)) st.insert(x);int tx = cur / x;if (tx <= m && check(tx)) st.insert(tx);}}}for (int x : st) ans += x;cout << ans;return 0;
}

相关新闻

  • 学习如何创建 Mono 实例
  • 2025年超融合产品推荐排行榜
  • pandas介绍

最新新闻

  • 跨境独立站从0到1全教程:选型、部署、引流、选品
  • 2026梧州漏水检测维修本地口碑防水商家榜单:厨卫/阳台/屋面/地下室渗漏水维修,持证施工+明码实价,防水补漏公司TOP5推荐 - 即刻修防水
  • 国内高校毕业生最适用的AI论文写作工具有哪些?
  • 2026年质量好的大电流耐火母线电缆/中压大电流柔性母线电缆/大电流密集型母线槽/铠装大电缆柔性母线电缆推荐厂家精选 - 行业平台推荐
  • 2026年北京彩石瓦直销厂家找哪家,老房屋顶改造/长城隔热铝瓦/彩石瓦/自建房屋顶用瓦/翻修屋顶,彩石瓦安装施工队推荐 - 品牌推荐师
  • 上海音响改装门店抉择:上海冉声汽车音响定制方案全解析,宝马原厂音响升级/奔驰音响改装,音响改装门店哪个好 - 音响改装门店分享

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号