2024.12.30 周一

news/2025/1/4 11:36:11/文章来源:https://www.cnblogs.com/jkkk/p/18646069

2024.12.30 周一


Q1. 1100

Farmer John has a permutation $p_1, p_2, \ldots, p_n$, where every integer from $0$ to $n-1$ occurs exactly once. He gives Bessie an array $a$ of length $n$ and challenges her to construct $p$ based on $a$.

The array $a$ is constructed so that $a_i$ = $\texttt{MEX}(p_1, p_2, \ldots, p_i) - p_i$, where the $\texttt{MEX}$ of an array is the minimum non-negative integer that does not appear in that array. For example, $\texttt{MEX}(1, 2, 3) = 0$ and $\texttt{MEX}(3, 1, 0) = 2$.

Help Bessie construct any valid permutation $p$ that satisfies $a$. The input is given in such a way that at least one valid $p$ exists. If there are multiple possible $p$, it is enough to print one of them.

Input
It is guaranteed that there is at least one valid $p$ for the given data.


------------------------独自思考分割线------------------------

  • MEX函数的三种思考方向:加数会变/不变,反向考虑去数能够 $O(1)$ 找到值。


A1.

  1. 对MEX函数向集合加数只需要考虑2个方向:MEX变/不变。一种方案是先考虑不变,不合法再考虑变。
  2. 第一次写这道题是在12.11,一直T16,当时是先考虑变,这样的话找更新值的时候会T。
  3. 这样做是过了,但是很难证明是对的。
  4. 正解时从后向前构造,这样有制约关系,就一定是对的。

------------------------代码分割线------------------------

A1.

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << fixed << setprecision(6);int T = 1;cin >> T;while (T--)_();return 0;
}void _()
{int n;cin >> n;vector<int> a(n + 1);for (int i = 1; i <= n; i++)cin >> a[i];vector<int> st(n + 1);int mex = 0;auto find = [&](){while (st[mex])mex++;};for (int i = 1; i <= n; i++){int p = mex - a[i];if (p >= 0 && p < n && !st[p])st[p] = 1;else{p = mex;st[p] = 1;find();}// bug2(i, mex);cout << p << ' ';}cout << endl;
}

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

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

相关文章

Sola的2024年度总结

前言 2024 这一年对我来说确实意义非凡,很想写点东西来记录一下这一年我的经历,算是第一次写年度总结了。 简短的记录一下我这一年。 现在?未来? 回忆起大一下最后一节体育课,体育老师让每个人想一个词来描述这个上半年,我给出的答案是 : 迷茫 。 现在来看,这个答案贯穿…

洛谷 P11487 「Cfz Round 5」Gnirts 10——题解

洛谷P11487「Cfz Round 5」Gnirts 10传送锚点摸鱼环节 「Cfz Round 5」Gnirts 10 题目背景 English statement. You must submit your code at the Chinese version of the statement.In Memory of \(\text{F}\rule{66.8px}{6.8px}\). 题目描述 题面还是简单一点好。给定 \(n, …

基于高德地图API在Python中实现地图功能的方法

本文介绍在高德开放平台中,申请、获取地图API的Key的方法;同时通过简单的Python代码,调取API信息,对所得Key的可用性加以验证~本文介绍在高德开放平台中,申请、获取地图API的Key的方法;同时通过简单的Python代码,调取API信息,对所得Key的可用性加以验证。首先,我们进入…

活动对象----active object

一.preface 近期学习QPC框架,其核心之一就是 actvie-object,活动对象的出现是为了解决并发(阻塞、数据竞争)问题。笔者这里做一篇笔记,方便日后回顾。 二.What is "active object"活动对象的组成框架代码如下点击查看代码 typedef struct Active Active; typedef …

新的一年,我决定拆解一个蓝牙接收器

哈哈,容我介绍一下,如果大家对电子感兴趣,可以看一下下面的图片,会经常更新优秀的原创文章。再次感谢每一个努力的电子爱好者。今天我们来拆解一个蓝牙接收器,首先我们需要有一个直观的印象。下图就是我们这次需要拆解的对象。我再想这么小的接收器,电路是怎么放进去得呢…

jfianl 如何定时某个时间点执行一个任务

如果我们需要在某个点执行一个任务,可以用使用以下方法,首先在操作之间先明白思路 参考技术来源:https://jfinal.com/doc/9-2 第一步,先安装包,因为 这是第三方包: <dependency> <groupId>it.sauronsoftware.cron4j</groupId> <artifactId>cr…

Window平台下Visual Studio版本和Qt构建kit 以及OpenCV的对应关系

1、VS版本、MSVC版本、工具集的对应关系 参考https://www.cnblogs.com/lidabo/p/183977552、Qt中的构建kit和MSVC的对应关系 qt中使用对应版本的kit必须安装对应版本的VS才能使用3、OpenCV的VC17文件夹和VS版本的对应关系 OpenCV中的VC17文件夹就是指用的VS2022编译的库,visua…

题解:AT_abc386_d [ABC386D] Diagonal Separation

分析题面,发现题目求的是是否存在一个白点被 \((1, 1)\) 和任意一个黑点围成的矩形内。 先将所有黑点按 \(x\) 坐标排序。 枚举所有的白点。 找到所有横坐标不比该白点横坐标小的所有黑点的纵坐标的最大值所属点。如果该点的纵坐标小于该白点的纵坐标:(蓝点代表题目中的白点…

【Miscellaneous】一道高质量的杂项题,涉及暴破、Cloakify-python2、零宽、emoji-AES等知识点

引言 下半年很忙,好久不做题,趁2025元旦放假整理一道高质量的题目,怀念一下繁忙的2024年。 题目 考虑到某公司的不分享精神或许会有版权之类的争端,文件链接以后就不放了。 名称:happymd5 提示:有好多奇奇怪怪的MD5值,这是用来干什么的呢。 Writeup(WP)题目附件cipher…

2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n 和 m,以及一个正整数 k。 如果 nums1 数组中的元素 nums1[i] 能被

2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n 和 m,以及一个正整数 k。 如果 nums1 数组中的元素 nums1[i] 能被 nums2 数组中的元素 nums2[j] 乘以 k 除尽,则称 (i, j) 为一个优质数对(其中 0 <= i <= n - 1,0 <= j …

高光谱图像选择波段的研究(转载)

高光谱图像选择波段的研究博文: 高光谱图像选择波段的研究 高光谱波段选择 LY-林雨    2016-08-25 12:08:45 发布免责声明:本文仅代表个人观点,如有错误,请读者自己鉴别;如果本文不小心含有别人的原创内容,请联系我删除;本人心血制作,若转载请注明出处 本文是根据 魏…

Webstorm 关闭 拼写错误

问题描述:cmd+,唤醒 设置把这个勾去掉就行