首页 > 其他分享 >【XSY4371】star(构造)

【XSY4371】star(构造)

时间:2022-10-31 07:57:23浏览次数:38  
标签:XSY4371 star 递归 构造 cdots 序列 frac equiv

题意:

给定值域在 \([0,n-1]\) 的序列 \(a_1,\cdots,a_{m}\),要求构造值域在 \([0,n-1]\) 的序列 \(b_1,\cdots,b_{m}\) 和 \(c_1,\cdots,c_{m}\),使得 \(b_i\) 两两不同、\(c_i\) 两两不同、且 \(\forall i,b_i+c_i\equiv a_i\pmod n\)。

\(n\leq 10^5\)。

题解:

首先说明有解的充要条件:

  • 若 \(m<n\),则一定有解;
  • 若 \(m=n\),则有解当且仅当 \(\sum a_i\equiv 0\pmod n\)。

必要性显然。下面的构造性算法将会说明充分性:

考虑逐位构造并调整。假设 \(a\) 序列的前 \(i\) 位已经有了对应的 \(b,c\),现在需要构造 \(a_i\)。

对于 \(i<n\) 时,可以选出两个未在 \(b\) 中出现的数字 \(x,y\),构造 \((a_i,x,y)\):令 \(b_i=x,c_i=a_i-x\)。

此时若 \(c_i\) 未出现过则构造成功。若 \(c_i\) 已经出现过了,假设出现在了 \(c_j\),那么我们递归构造 \((a_j,y,b_j)\)。

整个过程如左图所示。

在这里插入图片描述

可以证明过程中不会出现循环情况:若出现了,如右图,则必有 \(\begin{cases}t_1+v_3\equiv a_{j_1}\equiv t_2+v_2\\t_2+v_4\equiv a_{j_2}\equiv t_3+v_3\\t_3+v_5\equiv a_{j_3}\equiv t_1+v_4\end{cases}\to v_2=v_5\),矛盾。

所以对于 \(i<n\) 的情况我们一定可以构造成功。而对于 \(i=n\) 的情况,发现只要满足 \(\sum a_i\equiv 0\pmod n\) 那么剩下的 \(b_n,c_n\) 一定满足要求。

我们先将 \(a_i\) 随机打乱。那么每次递归构造 \((a_i,x,y)\) 的时候,扔进来的 \(x\) 实际上可以看做是一个随机数,那么对应的 \(c_i=a_i-x\) 没有出现过的概率为 \(\frac{n-i+1}{n}\),于是对于 \(i\) 构造的期望递归次数为 \(\frac{n}{n-i+1}\)。那么总时间复杂度期望为 \(O(n\log n)\)。

标签:XSY4371,star,递归,构造,cdots,序列,frac,equiv
From: https://www.cnblogs.com/ez-lcw/p/16842985.html

相关文章

  • 【XSY4182】下一个(next)(欧拉回路,构造)
    题面下一个(next)题解我们可以这么转化问题:给每一条边定向,使得每一个点的出度至少为\(2\)。证明新问题是原问题的充分条件:定好向后,我们先给每个点随便选一条出边,显然这......
  • 【XSY3993】自动机(构造)
    题面自动机题解题意:让你构造一个不超过\(n+1\)个状态的自动机,使得\(1\simn\)的\(n!\)个排列中只有\(q\)个被该自动机接受。\(q=n!\)可以先特判掉。然后找......
  • 力扣 889. 根据前序和后序遍历构造二叉树
    889.根据前序和后序遍历构造二叉树给定两个整数数组,preorder 和 postorder ,其中 preorder 是一个具有 无重复 值的二叉树的前序遍历,postorder 是同一棵树的......
  • 力扣 105. 从前序与中序遍历序列构造二叉树
    105.从前序与中序遍历序列构造二叉树给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树......
  • 【XSY3905】字符串题(lyndon串,构造)
    题面字符串题题解设所有长度不超过\(n\)的串的集合为\(S\)。考虑找到一种方法,能够对一个lyndon串\(A\),直接求出\(A\)的下一个lyndon串。方法如下:先将\(A......
  • 【XSY2912】reo(构造)
    考虑先找到一个原树的根。对于第一种限制,\(b\)不能作为根。对于第二种限制,\(a\)不能作为根。找到可以作为根的一个点\(rt\),显然由于限制互不矛盾肯定能找到。对于第......
  • Demo51_关于构造器有参构造的使用
    //构造器:有参构造的使用packagecom.oop.demo2;publicclassperson_3_2{Stringname;intage;publicperson_3_2(){}publicperson_3_2(Stringna......
  • Demo51_关于构造器_偏复杂
    //关于构造器packagecom.oop.demo2;//空的类中有默认的方法,默认的构造器//一个类即使什么都不写,它也会存在一个方法(构造器)publicclassPerson_3{//1.使用new关键......
  • STARLIMS VSCode插件
    地址:https://github.com/mariuspopovici/starlimsvscode功能:EnterpriseDesigner(应用程序、数据源、服务器脚本和客户端脚本)的Explorer将STARLIMS代码的副本下载到......
  • Springboot错误:Unable to start embedded Tomcat server
    报错内容/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/java-XX:TieredStopAtLevel=1-noverify-Dspring.output.ansi.enabled=always-javaagent:/......