题解:P11277 世界沉睡童话

news/2024/11/15 8:58:27/文章来源:https://www.cnblogs.com/wryyy-233/p/18547294

比较简单的构造。

注意到题面给出 \(a_i\le 2n-1\) 的条件,考虑这个有什么用,你会发现从 \(n\)\(2n-1\)\(n\) 个数都是两两互不为约数,所以当我们构造出序列后,这些数可以用来填补空位。

\(k\) 的上界是 \(\frac{n(n-1)}{2}\),显然在全部都为同一个数的时候取到,显然有 \(x\) 个数相同的时候,这 \(x\) 个数至少产生 \(\frac{x(x-1)}{2}\) 的贡献,那我们是否可以利用这个性质来构造出一个合法序列呢?当然是可以的。

首先给出这样一个性质,当我们取到的数为 \(y\) 的时候,只由一些 \(y\) 和一些 \(dy\)\(d\) 为常数)组成的可重集 \(S\),和只由一些 \(y\) 组成的可重集 \(T\),若 \(|S|=|T|\),那么这两个产生的贡献是相等的,可以通过找规律或者灵光一现知道这件事。证明的话就是两种集合内部都是任意两种元素都可以自由握手的,所以方案数在集合大小相等时显然相等。

我们接着想,自由握手是相等的,那么再加入一个不能自由握手的元素呢?以 \(y,2y,3y\) 为例子,分别有 \(x_1,x_2\)\(y,2y\),总和为 \(x\),如果加入 \(1\)\(3y\),最终产生的贡献就会是 \(\frac{x(x-1)}{2}+x_1\),总和不变的情况下,将 \(x_1\) 取遍 \([0,n)\) 的话我们可以做到贡献取遍 \([\frac{x(x-1)}{2},\frac{(x+1)x}{2})\),那么由不同的 \(x\) 以及 \(x_1\) 取值,以及是否加入 \(3y\),贡献就可以取遍 \([0,\frac{n(n-1)}{2}]\),空位直接由 \(n\)\(2n-1\) 中没被取的填上。

具体地就是找到最大的满足 \(\frac{x(x-1)}{2}\le k\)\(x\),然后按上述构造法构造。

为了不产生额外的贡献,我们最优的取法显然是取 \(\lfloor\frac{2n-1}{3}\rfloor\) 作为 \(y\),这样是它倍数的数一般只有 \(2\) 个,可以做到与其他数不产生贡献。为什么是一般,因为显然在一种最特殊的情况下 \(n=3\) 时,\(y\) 取到 \(1\),这时就不成立,要特判一下。

实现有点细节,但不多。

#include <bits/stdc++.h>
#include <bits/extc++.h>
#define ll long long
#define ull unsigned long long
#define m_p make_pair
#define m_t make_tuple
#define N 250010
#define inf 0x3f3f3f3f3f3f3f3f
using namespace std;
using namespace __gnu_pbds;
signed main()
{// auto __IN__ = freopen(".in", "r", stdin);// auto __OUT__ = freopen(".out", "w", stdout);ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);ll n, k, val, l, r, mid, ans = 0, d, p;cin >> n >> k;if(n==3&&k==2){cout << "1 2 3";return 0;}l = 0;r = n;while (l <= r){mid = l + r >> 1;if (mid * (mid - 1) / 2ll <= k){ans = mid;l = mid + 1;}elser = mid - 1;}val = (n * 2 - 1) / 3;if (val == 1 && n == 3)++val;d = k - ans * (ans - 1) / 2ll;// cerr << d << "\n";if (ans < 2)ans = 0;for (int i = 1; i <= d; i++)cout << val << " ";for (int i = 1; i <= ans - d; i++)cout << val * 2 << " ";p = n;if (ans < n && ans && ans * (ans - 1) / 2ll != k){--n;cout << val * 3 << " ";}for (int i = ans + 1; i <= n; i++){if (k && (p == val * 3 || p == val * 2 || p == val))++p;cout << p << " ";++p;}return 0;
}

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

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

相关文章

一个asp网站的mdb数据库修改,如何在Access数据库中修改ASP网站的数据

Access数据库是一种常用的桌面数据库,常用于小型网站的数据管理。以下是具体步骤:打开Access数据库:打开Microsoft Access应用程序。 导入或打开现有的Access数据库文件(.mdb或.accdb)。导航到数据表:在Access主界面中,选择“表”视图。 找到需要修改的数据表,双击打开…

如何修改我的网站页面,如何在网站后台或代码编辑器中修改网站页面内容

修改网站页面内容可以更新信息和提升用户体验。以下是修改网站页面内容的步骤:登录网站后台:打开浏览器,输入网站的后台地址,例如 http://yourdomain.com/admin。 输入管理员账号和密码,点击“登录”。进入内容管理:登录后,点击顶部菜单栏中的“内容”或“文章”。 选择…

修改网站上的页面,如何优化网页设计与功能

修改网站上的页面不仅仅是更改文本或图片,更重要的是优化用户体验和网站性能。以下是一些关键步骤:分析用户需求:通过用户调研或数据分析了解用户偏好,据此调整页面布局和内容。 提高加载速度:优化图片大小,减少HTTP请求,使用CDN加速等方法提升页面加载速度。 响应式设计…

ETL之kettle 医疗行业高级陪伴群 第一课

1、里程碑 很高兴的和可爱的小伙伴们一起宣布,我们的医疗特工队正式成立了。确切的说是ETL医疗高级陪伴群于2024-11-14日12时22分正式成立。 2、此群的前身 回忆过去我刚开始接触kettle时资料甚少,遇到问题啃英文官方文档,遇到不懂的英文靠Ai翻译,慢慢的能够驾驭kettle,能…

案例分享-导致MySQL崩溃的SQL语句

你小子一条SQL竟然让MySQL崩溃,让我来看看怎么个事背景 周一刚上班一个开发小哥火急火燎的过来找我,黑龙江某客户私有化环境的服务过一阵就报数据库连接失败,不知道是什么原因导致的,我以为是客户调整了网络,但是客户说并没有做任何调整,我使用ping测试也看不出什么问题,…

利用腾讯元器,将公众号变身为强大的.NET AI智能体

前言 经常有粉丝朋友在公众号后台私信提问,因为个人平时比较少看公众号后台的私信所以没法及时回复。最近发现腾讯推出了一个可以创建和使用各种智能体的平台(帮助小白也能快速使用AI):腾讯元器,正好自己每天也在公众号更新.NET相关的文章(到目前为止.NET相关的文章应该有…

解密prompt系列42. LLM通往动态复杂思维链之路

想要更优的Inference Time Scaling曲线,前提是模型本身是一个很强的Generator,已经拥有足够的生成合理推理过程的能力,同时还拥有很强的Verifier模型来对推理节点进行打分决策,并且二者可以在少人类监督的条件下不断迭代优化。这一章我们先聊聊如何让大模型"自学"…

记 QEMU 虚拟磁盘设备移动文件抛异常但实际移动成功

本文记录我所在的团队的一个简单的 WPF 应用程序在某个用户设备上跑出来的诡异行为。这个程序会从网上下载资源,下载的时候先下载到临时文件,再通过移动重命名的方式放到正确的路径。偶尔会出现下载成功,但是移动过程失败,但远程过去看却发现实际移动成功了我使用 Get-WmiO…

一些摘录与思考

void「【即使只有一些精神病患者,也会妨碍大家工作。所以对这些麻烦的人,就需要赶紧把他们的症状治好,尽早恢复而成为团队的力量。但是让他们接受治疗的话,会损失劳动力的吧。那就不太好了。会掉业绩的。所以应该让他们去做那种可以边工作边接受的治疗。 而且,如果治疗做过…

[题解](更新中)2024/11/14 模拟赛 A~B

汉诺塔(hanoi) 题面是在说,你可以用两只手作为临时存储来玩汉诺塔,当且仅当拿起一个圆盘时,操作次数\(+1\)。 我们不妨将盘子两两分组,组内盘子看作一个大盘子,拿起它的花费是\(+2\),然后根据\(n\)的奇偶性来讨论(\(f(i)\)表示\(i\)盘经典汉诺塔问题的答案):\(n\)是偶…

如何彻底禁止 macOS Sonoma 自动更新,去除更新标记和通知

如何彻底禁止 macOS Sonoma 自动更新,去除更新标记和通知如何彻底禁止 macOS Sonoma 自动更新,去除更新标记和通知 请访问原文链接:https://sysin.org/blog/disable-macos-update/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org本文与 macOS Ventura 操作基本…