AGC032 VP记录

news/2024/12/2 20:22:12/文章来源:https://www.cnblogs.com/sunrise1024/p/18582341

A 17:35 +0

B 39:51 +0

C 80:28 +4

A.Limited Insertion

简要题面:

最初有一个空序列,每次操作选定一个 \(i\) 并把 \(i\) 插入到位置 \(i\) ,给定最终序列,构造一种合法方案或者输出 -1 。

\(n \leq 100\)

做法:

简单思考发现每次操作出来的数一定从后往前对应了最终序列中的相同数。

这提示我们在操作的过程中我们可以实时知道当前序列中的数对应在最终序列的位置。

每次操作从后往前枚举操作决策即可。

时间复杂度 \(O(n^2)\)

B.Balanced Neighbors

简要题面:

给定一个整数 \(n\) ,构造一个 \(n\) 个点的简单无向联通图,使得每个点的邻点的点编号和相等。

$ 3\leq n \leq 100$

做法:

样例里给了 \(n=3\) 的构造,尝试手造 \(n=4\)

手造+打表 \(n \leq 7\) 的情况,发现都有一个合法图满足邻点编号和为 \(\frac{n(n+1)}{2} - n - [n\mod 2=0]\)

所以直接考虑对这个东西构造,容易发现断掉每个点的一条出边即可。

时间复杂度 \(n^2\)

C.Three Circuits

简要题面:

给定一个 \(n\) 个点 \(m\) 条边的简单无向联通图,判断这个图的所有边是否可以划分为三个不交的非空集合,使得每个集合内的边构成一个可以重复经过点的环。

\(n,m \leq 10^5\)

做法:

首先原图所有点的度数必须均为偶数。

接下来只需要考虑能否拉出来三个环。

这里提供两个解法,一个是 VP 时的奶龙解法,一个是更好的解法。

奶龙解法

直接跑 dfs ,每次拉出来一个不经过重复点的环,跑两遍以后看还有没有多余的边。

充分性易证,必要性完全没有。

容易发现以下图片中的图便是一个必要性的反例。

反例

解决这个问题也比较容易,直接随机选出边跑 10 次就行了!

时间复杂度 \(O(Tn \log n)\)\(T\) 为跑的次数,log 是因为删边比较麻烦所以用 set 维护导致的。

更好的解法

首先图内如果有一个节点度数大于等于 6 ,从这个点拉出来三个环就行了。

所以还不合法的图所有点的度数不超过 4 。

显然有至少三个度数为 4 的节点合法。

恰好两个的情况比较特殊,需要判是否拉出一个环出来会使得图不联通。

时间复杂度 \(O(n)\)

D.Rotation Sort

简要题面:

给定一个长度为 \(n\) 的排列 \(p\) 和两个整数 \(a,b\) ,每次操作可以消耗 \(a\) 的代价把某个数向后插入到任意位置或者消耗 \(b\) 的代价把某个数向前插入到任意位置,问把整个序列变为升序的最小代价。

\(n \leq 5000, 1\leq a,b \leq 10^9\)

解法:

容易发现每个数只会被操作一次,同时决策了每个数被操作的方向以后我们就不关心这个数原本的位置了,只需要保证每个数可以被操作到合法位置即可。

设计 dp ,令 \(f_{i,j}\) 表示前 \(i\) 个数中最后一个没有被操作的数为 \(j\) 的可以使这个前缀合法的最小代价。

转移是简单的,如果固定的数较小就往后移或者不动,否则就必须往前移。

时间复杂度 \(O(n^2)\)

E.Modulo Pairing

简要题面:

给定 \(n,m\) 与一个长度为 \(2n\) 的整数序列 \(a\) ,决策一种匹配,使得每个数正好与另一个数匹配,同时每对匹配的数的和 \(\mod m\) 的最大值最小。

\(n \leq 10^5, 1\leq m\leq 10^9, 0\leq a_i < m\)

做法:

非常厉害调整。

参考了 粉兔的题解 。

先把 \(a\) 排序。

如果把和小于 \(m\) 的匹配连蓝边,大于等于 \(m\) 的匹配连红边,最终的答案一定形如某个前缀中都是蓝边的匹配,且最大和最小依次匹配,后缀中都是红边且最大和最小依次匹配。

证明和匹配的形式粉兔的题解中有很清晰的图片。

知道了这个结论之后就可以二分边界点了,因为靠左的分界点答案更小,合法的分界点一定是一个后缀。

这意味着我们可以二分,时间复杂度 \(O(n\log n)\)

F.One Third

非常恐怖推式子,回家补。

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

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

相关文章

高级语言程序设计第十次作业

代码写的最长的一题,写了十五分钟,数据类型还写错了使用ftell与fseek的组合来计算字节数,跟上面的一题类似这题因为我没创建相关的文件所以输出是这样,但是创建了之后是可以成功写入的可以将输入内容复制通过c语言程序这个也是复制的一个用法同样通过ftell与fseek来计算字节…

H5-15 H5里面的CSS

1、CSS 简介使用CSS的目的就是让网页具有美观一致的页面 2、CSS概念CSS (Cascading Style Sheets)层叠样式表,又叫级联样式表,简称样式表CSS文件后缀名为 .cssCSS用于HTML文档中元素样式的定义 3、为什么需要CSS使用css的目的就是让网页具有美观一致的页面 4、语法CSS规则由…

实验5 继承和多态

实验任务三 源码1 #pragma once2 #include<iostream>3 #include<string>4 5 using std::string;6 using std::cout;7 using std::endl;8 9 //电子宠物类 10 class MachinePets { 11 private: 12 string nickname; 13 public: 14 MachinePets(const string&…

idea创建web项目并连接数据库

1.在idea中连接数据库在连接的数据库中,可以写SQL语句,创建数据库、表等。 2.我的项目结构---学生请假系统Dao层:写一个学生实体类 Servlet层:业务层具体的怎么实现相关操作 1)最开始加上这个之后就不用配置映射文件了 2)然后是这个就不用另外的建立连接了 3)在resouces…

chrome 替换network中的返回内容,用以跨步调试

在开发调试中,有时候,某个接口,或者文件返回内容有问题,但线上的文件没问题。这时候就可以通过更改network中返回内容来实现跨步调试了。 test.html<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta n…

天梯赛 L2-004 这是二叉搜索树吗? 数据结构

反思:使用指针前先分配内存。#include<bits/stdc++.h> using namespace std; typedef struct node {int data;struct node* left;struct node* right; }*T; queue<int>q1; queue<int>q2; queue<int>q3; T result; void built1(T &t,int x) {if(t=…

Qt nativeEvent 不触发/不执行/无效

在做触摸屏项目的时候,各种控件都需要实现监听/触发点击事件,通常是通过信号/槽、事件过滤器(eventFilter)、重写mousePressEvent。 发现在QSpinBox中点击编辑框时不会触发任何鼠标相关点击事件。查资料发现通过重写nativeEvent函数可以拿到鼠标相关事件,不过有一个坑需要注…

testnet 资产管理系统 侦察|扫描|信息收集|网络空间搜索

TestNet简介 TestNet资产管理系统旨在提供全面、高效的互联网资产管理与监控服务,构建详细的资产信息库。 该系统能够帮助企业安全团队或渗透测试人员对目标资产进行深入侦察和分析,提供攻击者视角的持续风险监测,协助用户实时掌握资产动态,识别并修复安全漏洞,从而有效收…

记录---前端实现画中画超简单,让网页飞出浏览器

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣Document Picture-in-Picture 介绍今天,我来介绍一个非常酷的前端功能:文档画中画 (Document Picture-in-Picture, 本文简称 PiP)。你有没有想过,网页上的任何内容能悬浮在桌面上?😏 🎬 视频流媒体的画中画功能你…

洛谷题单指南-线段树-P4513 小白逛公园

原题链接:https://www.luogu.com.cn/problem/P4513 题意解读:给定序列a[n],支持两种操作:1.查询区间[l,r]内的最大子段和 2.将a[x]修改成s,输出其中每一个查询操作的结果。 解题思路:区间问题依然想到线段树,问题主要在于线段树的节点要维护哪些信息: 最直接的,肯定要…

LeetCode 2413[最小偶倍数]

LeetCode 2413[最小偶倍数]题目 链接 LeetCode 2413[最小偶倍数] 详情实例提示题解 思路 判断奇偶性 奇数乘以2并返回 偶数直接返回 代码 class Solution { public:int smallestEvenMultiple(int n) {if (0 == (n % 2))return n;return 2 * n;} };本文来自博客园,作者:EricsT…

power BI

工作一:实现地图 1、先启用地图功能2、导入数据 获取数据更改数据类型检测:加载出现在右侧