首页 > 其他分享 >做题记录

做题记录

时间:2023-10-15 22:37:18浏览次数:34  
标签:dots 验证 pmod sum 记录 cases equiv

Two Missing Numbers

Source

Statement

通信题。有一个长度为 \(n\) 的序列 \(a\ (0\le a_i<2^{64})\),满足其中恰好两种数出现次数为 \(1\),其余数字出现次数为 \(2\)。该序列被任意分成两半,分两次喂给你的程序。第一次运行你会得到序列的前半段,你需要输出两个 \(\mathtt{uint64}\);第二次运行你会得到序列的后半段以及第一次输出的两个整数,你需要输出两个 \(\mathtt{uint64}\) 表示那两个出现次数为 \(1\) 的数。

Solution

首先把已经出现 \(2\) 次的数字扔了。现在相当于分两次获得集合 \(S,T\),需要找到 \(S\oplus T\),记这个结果为 \(\{x,y\}\)。

考虑神秘哈希,记 \(P=18446744073709551557\),即 \([0,2^{64})\) 中的最大质数。考虑建立一个简单的单射 \(f:[0,2^{64})\cap a\to[0,P)\cap\mathbb{Z}\)。一个简单的想法是 \(f(x)=x\operatorname{xor} M\),其中 \(M\) 是一个自己脸滚键盘得到的常数。因为 \(2^{64}-P=59\),所以可以认为 \(f(a_i)\ge P\) 的概率很小(如果非常不幸出现了,可以再滚一个 \(M\) 提交)。

第一次运行,我们计算 \(\displaystyle a_1=\sum_{x\in S}f(x)\bmod P,\ b_1=\prod_{x\in S}f(x)\bmod P\),第二次运行类似地计算 \(a_2,b_2\)。接下来,依次尝试一下几种情形:

  • \(x\in T\land y\in T\):

    可以得到:

    \[\begin{cases} f(x)+f(y)\equiv a_2-a_1\pmod P \\ f(x)\cdot f(y)\equiv b_2/b_1\pmod P \end{cases} \]

    直接韦达定理解二次方程(需要 Cipolla 开根)。然后映射回去,验证答案。

  • \(x\in T\land y\in S\):

    可以得到:

    \[\begin{cases} f(x)-f(y)\equiv a_2-a_1\pmod P \\ f(x)/f(y)\equiv a_2/a_1\pmod P \end{cases} \]

    是一个一次方程,直接解。然后映射回去,验证答案。

  • \(x\in S\land y\in S\):

    可以得到:

    \[\begin{cases} f(x)+f(y)\equiv a_1-a_2\pmod P \\ f(x)\cdot f(y)\equiv b_1/b_2\pmod P \end{cases} \]

    也是二次方程,直接解。然后映射回去,验证不了,不验证了。

由题目限制可知至少解出一个解。为什么要按照上面的顺序依次尝试呢?因为解这个方程时只知道 \(T\),所以按照验证难度从易到难尝试错误率更小。

Sets May Be Good

Source

Statement

给定 \(n\ (n\le 1000)\) 个点无向图 \(G=(V,E)\)。求导出子图边数为偶数的点集数量。

Solution

考虑一个 \(n\) 元二次多项式 \(\displaystyle F(x_1,\dots,x_n):=\sum_{i\neq j,\ (i,j)\in E}x_ix_j+\sum_{(i,i)\in E}x_i\)。题目相当于求 \(n\) 元组 \((x_1,\dots,x_n)\in \{0,1\}^n\) 使得 \(F(x_1,\dots,x_n)\bmod 2=0\)。

直接计算 \(=0\) 的方案有些困难,所以可以考虑计算 \(=0\) 和等于 \(=1\) 的方案数差值。

考虑拆开 \(F\):\(F(x_1,\dots,x_2)=x_1L(x_2,\dots,x_n)+Q(x_2,\dots,x_n)\)。

如果 \(L(x_2,\dots,x_n)=1\),那么对于每一种 \(x_2,\dots,x_n\) 方案,\(x_1\) 选与不选恰好对应两种最终 \(F\) 值不同的方案,所以对差值的共线为 \(0\)。

那么只剩下 \(L(x_2,\dots,x_n)=0\) 的情形。注意到 \(L(x_2,\dots,x_n)\) 是一个一次的多项式,所以可以移项得到 \(x_2\) 关于 \(x_3,\dots,x_n\) 的表达式。将这个表达式回带到 \(Q\) 得到 \(Q'(x_3,\dots,x_n)\)。那么我们就是要求 \(Q'(x_3,\dots,x_n)=k\ (k\in\{0,1\})\) 的方案数,这是一个形式相同子问题,递归计算即可。

时间复杂度 \(O(n)\)(吐槽数据范围)。

HoMaMaOvO 0:06 过了,天知道怎么做到的。

标签:dots,验证,pmod,sum,记录,cases,equiv
From: https://www.cnblogs.com/ExplodingKonjac/p/17766348.html

相关文章

  • JAVA - 记录
    有时,数据就是数据,而面向对象程序设计提供的数据隐藏有些碍事,考虑一个类,这个类描述平面上的一个点,有下x和y坐标packagecom.demo;publicclassPonint{privatefinaldoublex;privatefinaldoubley;publicPonint(doublex,doubley){this.x=x......
  • 造题记录:如何出强制在线题
    今天造了一个数据结构题,具体题面是什么就不说了,题目名称是sosomst。输入格式是,第一行\(n,typ\),接下来两行的点权,然后是一棵树。输出\(n-1\)行的数字,树边强制在线。以下是我生成这题数据的方法。std.cpp肯定是自己写了,但是先不要实现强制在线。将std.cpp编译为可执行文件......
  • SQL Server数据库多种方式查找重复记录
    示例:表stuinfo,有三个字段recno(自增),stuid,stuname 建该表的Sql语句如下: CREATETABLE[StuInfo]([recno][int]IDENTITY(1,1)NOTNULL,[stuid][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,[stuname][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL)ON[PRIMAR......
  • 记录一下基于jeecg-boot3.0的待办消息移植记录
      因为之前没有记录,所以还要看代码进行寻找,比较费劲,所以今天记录一下:1、后端SysAnnouncementController下面函数增加待办的几个显示内容给前端用 具体代码如下:/** *@功能:补充用户数据,并返回系统消息 *@return */ @RequestMapping(value="/listByUser",method=Re......
  • 记录Orcad中报错和解决方法
    本章目的:使用Orcad画原理图总会遇到奇怪的报错,故整理总结 1、根本原因:有元器件没有编号;更新一下位号解决。提示➤ERROR(ORNET-1048):Designisnotannotated.ERROR(ORNET-1006): Netlist failed or may be unusable. 2、根本原因:DesignCache右键CleanupCache,和......
  • 电路术语记录
    常规电路术语1、MOS和BJT的区别:金属氧化物半导体场效应晶体管(MOSFET)和双极晶体管(BipolarJunctionTransistor,BJT)是两种不同类型的半导体器件,它们在结构、工作原理和应用方面存在明显的区别。以下是MOSFET和BJT之间的主要区别:结构:MOSFET:MOSFET是一种场效应晶体管,主要由金属......
  • 10.14记录
    实现了java连接数据库的增删改查初步建立了Navicat,Tomcat等数据库连接必要的程序步骤。建立三个类型相同的数据库中的表格列......
  • strapi系列-常用操作记录(创建中间件,创建关系型数据库,数据去掉attributes那一层)
    创建全局中间件创建关系型的数据https://docs.strapi.io/dev-docs/api/rest/relations{"product_types":{"connect":[10]},"product_tags":{"connect":[7,3,4]},"name":"TEST","......
  • Vue3 + Quasar系列-代码配置以及报错汇总记录(不断更新中)
    1.Vue3+Quasar系列-代码配置打包去掉hash后缀去掉hashhttps://quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa2.Vue3+Quasar改变主题背景quasar的样式和其他的框架修改不太一样,需要我们使用动态的方式来进行变更,一般来说有两种方案进行主题修改方案一:......
  • 2023.10.14 做题记录
    2023.10.14做题记录P5595歌唱比赛一个非常简单的贪心。先判断什么时候是-1,将字符串从头开始往后遍历,Z的右边不能有X,Y,如果有则直接输出-1。因为是SPJ,如果该字符串有答案的话,倒着看,字母是谁的就随便给一个大的数,如果是\(X\),则小\(X\)的数为\(5\),小\(Y\)的数为\(4\),......