首页 > 其他分享 >Competition Set - 数学相关

Competition Set - 数学相关

时间:2023-09-22 19:55:36浏览次数:38  
标签:Set frac limits sum Competition 异或 数学 varphi Link

CF645F

Link&Submission.

利用 \(\sum\limits_{d|n}\varphi(\frac{n}{d})=n\),只要对每个数 \(x\),求出 \(cnt_x\) 表示 \(x\) 的倍数数目,然后 \(\sum\limits_{x}\varphi(x)C_{cnt_x}^k\) 就是答案。每加入一个数进行修改,\(O(\sqrt n)\) 枚举因数即可。

CF724G

Link&Submission.

考虑一个连通块。随便取一棵生成树,则每条非树边带来一个环。从 \(u\) 到 \(v\) 的某条路径的异或和就等于生成树上 \(u\) 到 \(v\) 的路径的异或和再异或某些环的异或和。所以把所有环的异或和放进线性基,假设这线性基的大小是 \(c\)。然后按位考虑,假设根到各个点路径的异或和中,第 \(i\) 位上有 \(x\) 个 \(1\),\(y\) 个 \(0\)。如果线性基中没有数的第 \(i\) 位是 \(1\),那么这个连通块的这一位的贡献是 \(xy2^{i+c}\)。如果线性基中有数的第 \(i\) 位是 \(1\),则随便丢一个数和线性基中的数异或,第 \(i\) 位上一定是一半 \(0\) 一半 \(1\),这时这一位的贡献就是 \((x+y)(x+y-1)2^{i+c-2}\)。求和即可。

CF1034C

Link&Submission.

设所有点权的和是 \(S\)。考虑最终分成的块数,假设是 \(k\),则每一块的和都是 \(a=\frac{S}{k}\)。

可以给出唯一的一种构造:做拓扑排序,如果一个点的点权小于 \(a\) 则加到父亲,如果大于 \(a\) 则无解,如果等于 \(a\) 则不操作(相当于割掉了该点与父亲的边)。所以对固定的 \(k\),终态要么不存在,要么唯一。

假设已经求出了 \(f_k=0/1\) 表示是否存在合法终态,则可以做DP:\(dp_{i}=f_i(\sum\limits_{d|i,d\neq i}dp_d+f_i)\) 表示最终分成 \(i\) 块的方案数(考虑到可以多次的限制)。那么问题就变成求 \(f_k\)。

用上面给出的构造求 \(f_k\) 是不直接的,换一个思路。假设一个点 \(u\) 和父亲间的边被割断了,则 \(u\) 点的子树和 \(s_u\) 一定是 \(a\) 的倍数。由于分成 \(k\) 块,所以是 \(a\) 的倍数的 \(s_u\) 应该至少有 \(k\) 个(有一个点是根,虽然它没有父亲)。另一个几乎显然的事情是至多有 \(k\) 个 \(s_u\) 是 \(a\) 的倍数。所以 $f_k=1 \Leftrightarrow $ 有 \(k\) 个 \(s_u\) 是 \(a\) 的倍数。

又有 \(a|s_u\Leftrightarrow S|ks_u \Leftrightarrow \frac{S}{\gcd(S,S_u)}|k\),所以直接统计 \(\frac{S}{\gcd(S,S_u)}\) 所有不超过 \(n\) 的倍数就可以了。至于时间复杂度,DP是单 \(log\) 的,后面这个统计显然没什么问题。

CF1603D

Link&Submission.

显然 \(c(l,r)\ge r-l+1\),则 \(f(n,k)\ge n\)。当 \(r\le 2l\) 时,\(c(l,r)=r-l+1\),所以当 \(n\lt 2^k\) 时,\(f(n,k)=n\)。这样 \(k\gt 20\) 都不用考虑。

一般情况下,\(f(n,k)\) 显然可以 DP 求:\(f(n,k)=\min_{m\le n}(f(m,k-1)+c(m+1,n))\)。我们尝试用四边形不等式把这个 DP 优化到 \(O(nk\log n)\)。

我们有

\[c(l,r)=\sum\limits_{x=l}^r\sum\limits_{d|x,d\ge l}\varphi(\frac{x}{d}) \]

\[c(l,r)-c(l+1,r)=\sum_{x=l}^r[l|x]\varphi(\frac{x}{l})=\sum\limits_{x=1}^{\lfloor \frac{r}{l}\rfloor}\varphi(x) \]

从而

\[c(l,r)=\sum\limits_{i=l}^{r}\sum\limits_{x=1}^{[\frac{r}{i}]}\varphi(x) \]

有了这个式子,预处理 \(\varphi\) 的前缀和,可以用整除分块在 \(O(\sqrt r)\) 的时间内求出 \(c(l,r)\),实际跑不满。同时我们可以证明 \(c\) 满足四边形不等式,这是因为

\(c(a,d)-c(b,d)=\sum\limits_{i=a}^{b-1}\sum\limits_{x=1}^{[\frac{d}{i}]}\varphi(x)\)

固定 \(a\lt b\),这个函数显然是关于 \(d\) 单调不减的。

那么直接用分治优化即可。

CF1770F

Link&Submission.

神仙题。

首先由于对称性,我们知道 \(a_i=t\) 的满足条件的序列数与 \(i\) 无关。则 \(n\) 为偶数时答案肯定是 \(0\)。

第二个想法是考虑容斥。假设长为 \(n\),和为 \(x\),按位或是 \(y\) 的子集(二进制下,下同)的所有数列异或和的异或和是 \(g(y)\),容易证明原问题的答案是所有满足 \(y'\) 是 \(y\) 的子集的 \(g(y')\) 的异或和。

问题转化为求 \(g(y)\)。按位考虑,因为已经假设了 \(n\) 是奇数,所以只用判断 \(a_1\) 的第 \(i\) 位是 \(1\) 的情况数是不是奇数。同时还要求按位或是 \(y\) 的子集。

先计算长为 \(n\),和为 \(x\),按位或是 \(y\) 的子集的数列数目。可以列出一个式子:\(\sum\limits_{a_1+\cdots+a_n=x}\prod\limits_{i=1}^{n}[a_i是y的子集]\)。看起来没什么意义,但是联想到 Kummer 定理的推论:\(C_{n}^{m}\) 是奇数当且仅当 \(m\) 是 \(n\) 的子集。所以上面这个式子就同余于 \(\sum\limits_{a_1+\cdots+a_n=x}\prod\limits_{i=1}^{n}C_{y}^{a_i}\)。而这个式子是范德蒙恒等式的 \(n\) 元情形,它就等于 \(C_{ny}^{x}\)。

对于 \(a_1\) 第 \(i\) 位是 \(1\) 的限制,会发现要求变成了 \(a_1-2^i\) 是 \(y-2^i\) 的子集(当然还要求 \(y\) 的第 \(i\) 位等于 \(1\)),所以上面那个组合数会变成 \(C_{ny-2^i}^{x-2^i}\)。如果它是奇数,那么对答案贡献 \(2^i\)(异或)。

综上,枚举 \(i\) 和 \(y\) 即可。这里的 \(y\) 是题目中 \(y\) 的子集。

CF1656H

Link&Submission.

重写目标,我们需要找到两个非空集合 \(A\in \{1,2,\cdots,n\},B\in\{1,2,\cdots,m\}\),满足 \(\text{lcm}_{i\in A}a_i=\text{lcm}_{j\in B}b_j\)。

这个目标等价于(记 \(P\) 为质数集)

\[\forall p\in P,\max_{i\in A}v_p(a_i)=\max_{j\in B}v_p(b_j) \]

这个式子又可以变形为

\[\forall p\in P,i\in A,\exist j\in B,v_p(b_j)\ge v_p(a_i) \]

\[\forall p\in P,j\in B,\exist i\in A,v_p(a_i)\ge v_p(b_j) \]

两个条件分别等价于

\(\forall i\in A,\text{lcm}_{j\in B}\gcd(a_i,b_j)=a_i\)

\(\forall j\in B,\text{lcm}_{i\in A}\gcd(a_i,b_j)=b_j\)

接下来来设计算法的整体框架。初始令 \(A=\{1,2,\cdots,n\},B=\{1,2,\cdots,m\}\)。如果发现某个 \(i\in A\) 或 \(j\in B\) 使上面的条件不成立,那么就删去它,它肯定不能存在于最后的答案中(显然删掉更多不会让它可行)。删到不能再删为止,如果此时删空了一个集合就表明无解,否则留下的就是解。

\(n,m\le 1000\),我们可以在删去一个数的时候暴力枚举另一个集合中的数,计算影响。但是 \(\text{lcm}\) 并不可减,因此可以使用一个线段树维护,删掉一个数就把对应位置改为 \(1\),用全局 \(\text{lcm}\) 比较即可。

时间复杂度 \(O(n^2\log n\log V)\)(视 \(n,m\) 同阶),在这题 10s 的时限下不是问题。

CF986F

Link&Submission.

显然只需要考虑 \(k\) 的素因数。

如果没有,显然为 NO。

如果只有 \(1\) 个 \(p_0\),判断 \(n\) 是否是 \(p_0\) 的倍数即可。

如果恰有 \(2\) 个 \(p_0,p_1\),用 exgcd 判断即可。

如果至少有 \(3\) 个,则最小的一个 \(p_0\le k^{\frac{1}{3}}\le 10^5\)。考虑经典的同余最短路模型,把 \(0,1,\cdots,p_0-1\) 看作点,对每个素因数 \(p_i\),从 \(i\) 向 \((i+p_i)\bmod p_0\) 连边,边权为 \(p_i\)。则能凑出 \(n\) 的条件是 \(dis_{n\bmod p_0}\le n\) 。

使用 dijkstra 求最短路可能超时,但其实不需要,因为模运算具有良好的性质,所以可以钦定先走边权 \(p_1\) 的边,再走边权 \(p_2\) 的边,以此类推。对于每个 \(p_i\) 会把整个图连成一个环,在环上转两圈更新最短路即可。

标签:Set,frac,limits,sum,Competition,异或,数学,varphi,Link
From: https://www.cnblogs.com/by-chance/p/17723055.html

相关文章

  • math 库中常用的数学运算和常量【GO 基础】
    〇、关于mathGO语言的math库是一个内置的标准库,其中包含了许多数学函数和常量,用于计算各种数学运算和统计学计算。日常开发中,计算当然是少不了的,那么今天来梳理下备查。一、测试示例1.1小数位的:Round-四舍五入、RoundToEven-四舍/五至偶数funcRound(xfloat64)float6......
  • 使用Object.defineProperty() 定义对象属性时,如已设置 set 或 get, 就不能设置 writab
    使用Object.defineProperty()定义对象属性时,如已设置set或get,就不能设置writable和value中的任何一个了,不然会报如下错误。TypeError:Invalidpropertydescriptor.Cannotbothspecifyaccessorsandavalueorwritableattribute,#<Object>  letobj_tes......
  • vue3 父子组件通信 setup
    父传子father<template><div><h2>父传子Father</h2><!--<buttonclass="bg-green-300roundedp-1">父按钮</button>--><divclass="w-[200px]h-[200px]bg-violet-200">......
  • DateTimeOffset
     vara=DateTimeOffset.UtcNow;varb=DateTimeOffset.Now;a.Dump("Utc时间");a.LocalDateTime.Dump("转本地时间,去掉时区");b.Dump("当前时间");b.ToOffset(newTimeSpan(1,0,0)).Dump("utc时间加时区");b.UtcDateTime.Dump("当前时间转utc时间......
  • HNU个人项目中小学数学卷子自动生成程序互评
    一、简介本博客是对结对编程队友代码的分析与总结,代码使用语言为C++。完成情况:很好的实现了项目的需求,功能完整。同时每个页面的提示信息都比较完整,在不需要他人协助的情况下,可以根据屏幕上的提示信息进行操作,如果用户输入不正确,系统会出现指示,显示正确输入格式,用户可根据提示继......
  • 初中数学 - 无理数,以及各种数之间的关系
    无理数无限不循环小数,比如:π,它的小数部分无限长,但是并不循环。但是:1/3是有理数,他的小数部分无限长,但是是循环的。 数之间的关系  参考 有理数无理数实数的区别(baidu.com) ......
  • 高中数学 - 集合相关数学符号备忘
    元素与集合集合一般用A,B,C,D等这样的大写字母表示。常见的数集:C-复数集,R-实数集, N-非负整数集, Q-有理数集,Z-整数集集合元素一般用a,b,c,d等这样的小写字母表示元素a属于集合A,用a∈A表示元素a不属于集合A,用a∉A表示 集合运算两个集合的交集:∩两个集合的并集:......
  • 湖南大学个人项目互评-中小學数学卷子自动生成程序
    1.功能要求用户:小学、初中和高中数学老师。功能:1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户......
  • 高等数学 - 方向导数,梯度
    方向导数a) 方向导数是针对多元函数的导数。(下面都以二元函数来进行说明)b) 那不是已经有偏导函数了么?为啥还来了个方向导数?因为偏导数研究的是沿坐标轴正方向时函数的变化率,比如:沿x轴正方向,这时只有一个变量再变。然后数学家们觉得这还不够,要研究下沿着非坐标轴方向时函数的......
  • HNU个人互评项目:中小学数学卷子自动生成程序
    一、前言HNU个人项目互评:我与软1张益诚同学结对,均使用java语言来完成中小学数学卷子自动生成程序项目,现在我将对其完成的代码进行分析和功能测试,希望在互评中能够学习到新的编程思路,认识到自己的不足,以此来提升自己的思维。二、项目要求HNU个人项目:中小学数学卷子自动生成......