首页 > 其他分享 >8.24~8.30 校内集训日志

8.24~8.30 校内集训日志

时间:2024-08-25 18:06:39浏览次数:11  
标签:短路 sum rightsquigarrow &- 8.24 bmatrix 8.30 100 日志

8.24 模拟赛

2024--梦熊&太戈--NOIP十三连测 #6【订正】 - 比赛 - 梦熊联盟 (mna.wang)

A. Alice 的数

有显然的 \(80\) 分。但是还是用两个小时冲到了 \(100\) 分。

做法比 std 复杂。

\(100+100+100\)。

题意

令 \(y^2\) 是距离 \(x\) 最近的完全平方数,若有不止一个最近的直接输出 \(\texttt{Game Over}\) 结束程序。定义 \(f(x) = (-1)^{y+1}y\)。

求 \(\sum_{i=l}^r f(i)\)。\(l, r \le 10^{18}\)。

做法

\(\texttt{Game Over}\) 是不可能的。

显然第一步差分。问题变成求 \([1, r]\) 的答案。

打表发现 \(f(x)\) 中 \(x\) 的系数形如:

\[\begin{matrix} x &: 1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&\dots \\ (-1)^y&:[1&1]&[-1&-1&-1&-1]&[1&1&1&1&1&1]&[-1&-1&-1&-1&-1&-1&-1&-1]&\dots \end{matrix} \]

为了方便我们称一个极长连续段为一段,例如表中 \([7, 12]\) 就是一段。

不难发现:

  • 第奇数段中的数都是 \(1\),第偶数段中的数都是 \(-1\)。

  • 第 \(i\) 段的长度为 \(2i\)。

  • \(1 \sim n\) 段的长度和:

    \[\sum_{i=1}^n 2i = 2\sum_{i=1}^ni = n(n+1) \]

  • 第 \(n\) 段的左端点与右端点下标:

    左端点相当于前 \(1 \sim n - 1\) 段的长度和加一,右端点相当于 \(1 \sim n\) 段的长度和。分别为:

    \[[n(n-1)+1,n(n+1)] \]

  • 第 \(n\) 段的下标和:

    根据左右端点,用等差数列求和公式即可。

    \[\dfrac{2n \times (n(n-1)+1+n(n+1))}2 = 2n^3+n \]

  • 前 \(1 \sim n\) 段的答案(乘上了 \((-1)^{i+1}\) 的系数后的):

    \[\sum_{i=1}^n(-1)^{i+1}(2n^3+n) = 2\times \sum_{i=1}^n(-1)^{i+1}i^3 + \sum_{i=1}^n(-1)^{i+1}i \]

所以我们可以计算 \(r\) 之前有多少完整段,并用上面说的计算这些段的答案。对于剩下的一个不完整的段,等差数列直接算即可。

现在的问题是如何快速计算:

\[\begin{matrix}\sum\limits_{i=1}^n(-1)^{i+1}i^3&\sum\limits_{i=1}^n(-1)^{i+1}i \end{matrix} \]

后者是极易的。考虑计算前者:

\[s_n = 1^3-2^3+3^3-4^3+\dots+(-1)^{n+1}i^3 \]

注意到:

\[\begin{bmatrix} s_{n-1} & n^3 & n^2 & i & 1 \end{bmatrix} \times \begin{bmatrix} 1 & 0 & 0 & 0 & 0 \\ 1 & -1 & 0 & 0 & 0 \\ 0 & -3 & -1 & 0 & 0 \\ 0 & -3 & -2 & -1 & 0 \\ 0 & -1 & -1 & -1 & -1 \end{bmatrix} =\begin{bmatrix} s_n & -(n+1)^3 & -(n+1)^2 & -(n + 1) & -1 \end{bmatrix} \]

矩阵加速即可。

B. Bob 的图

\(70+55+100\)。

很好的题。会计算答案,会 DAG 部分分,拼起来就是正解,为啥还不会做呢?

做法

给定一张带边权的有向图。令 \(n_i\) 表示 \(1 \rightsquigarrow i\) 的最短路方案数,\(d_{i, k}\) 表示第 \(k\) 条 \(1 \rightsquigarrow i\) 的最短路经过的边数。求:

\[\sum_{i=1}^n\sum_{j=1}^n\sum_{k=j+1}^n d_{i,j}\times d_{i,k} \]

取模 1e9 + 7。

做法

首先

\[\sum_{j=1}^n\sum_{k=j+1}^n d_{i,j}\times d_{i,k} = \dfrac{\left(\sum_{j=1}^nd_{i,j}\right)^2-\sum_{j=1}^nd_{i,j}^2}2 \]

所以我们要维护的是 \(1 \rightsquigarrow i\) 的所有最短路的边数和,以及平方和。

建最短路 DAG。即保留所有满足 \(dis_u = dis_v+w_{u,v}\) 的边 \((u, v)\)。其中 \(dis_u\) 是 \(1 \rightsquigarrow i\) 的最短路,用 Dijkstra 预处理。

那么在原图中求 \(1 \rightsquigarrow i\) 的所有最短路的边数和以及平方和,等价于在新图中求 \(1 \rightsquigarrow i\) 的所有路径的边数和以及平方和。

极易!令 \(f(i, u)\) 表示 \(1 \rightsquigarrow u\) 的所有路径的边数的 \(i\) 次方和。其中 \(0 \le i \le 2\)。拓扑排序转移(边 \(u \to v\)):

\[f(0,u) \to f(0,v) \\ f(0,u)+(1,u) \to f(1, v) \\ f(0,u)+2f(1,u)+f(2,u)\to f(2,v) \]

C. 维护整数列

\([60,80]+0+100\)。

数据是大海。

负数取模错了导致 \(100 \to 0\)。

我都能构造数据卡掉我自己但是满分了。

题意

维护数据结构,支持单点修,求区间和,求区间平方和,将区间所有数除以 \(p\) 下取整。

不保证任何值非负(除 \(n, m\) 之类的)。保证 \(p \ne 0\)。这里下取整指 C++ 中的 floor() 函数。

做法

没有负数是大水题。

除以 \(p = 1\) 相当于啥也没做,除以 \(p = -1\) 相当于区间取反(显然区间取反不会影响区间平方和)。对于除以其它的数 \(|p|\ge 2\),最多除以 \(\log\) 次后就会变成 \(0\)。

普通的修改暴力。如果这个线段树节点所代表的区间内的数都是 \(0\) 则不同修改。

D. 大头问题

\(50+55+100\)。

还在调。

为了观感单独开一篇文章

标签:短路,sum,rightsquigarrow,&-,8.24,bmatrix,8.30,100,日志
From: https://www.cnblogs.com/2huk/p/18379240

相关文章

  • 开发日志:表单解析 LeipiFormDesign
    PHP版本:https://gitee.com/yxkj_2/LeipiFormDesigner/blob/LeipiFormDesigner/Formdesign4_1/php/Formdesign.class.phpjs版本: varleipiFormDesign={/*执行控件*/exec:function(method){ue.execCommand(method);},......
  • linux下试验中间件canal的example示例-binlog日志的实时获取显示以及阿里巴巴中间件ca
    一、linux下试验中间件canal的example示例-binlog日志的实时获取显示    今天重装mysql后,进行了canal的再次试验,原来用的mysql5.7,今天重装直接换了5.6算了。反正测试服务器的mysql也不常用。canal启动后日志显示examplepreparetofindstartpositionjustshowmaste......
  • springboot中logback日志配置
    springboot中logback中默认使用的是logback作为日志实现详细配置在resource目录下常见logback.xml文件添加如下配置<?xmlversion="1.0"encoding="UTF-8"?><configurationscan="true"scanPeriod="10seconds"><contextName>logback<......
  • 学习笔记 韩顺平 零基础30天学会Java(2024.8.24)
    P532Map接口特点2P533Map接口方法P534Map六大遍历方式     方法一:通过KeySet(),取出所有的Key,把取出的Key放到Set中,再通过Key取出对应的Value                 到这里又有两种方式遍历Set:迭代器、增强for     方法二:通过values(),取出......
  • 2024.8.24
    DATE#:20240824ITEM#:DOCWEEK#:SATURDAYDAIL#:捌月廿壹TAGS<BGM="风屿--闫东炜"><theme=oi-graphtheory><[NULL]><[空]><[空]>```与风为名,屿之齐鸣。——风屿```LGV引理LGV引理,全称Lindstrom-Gessel-Viennotlemma用于求解D......
  • 8.24日周记
    Java学习一.数组的静态初始化/*完整格式:数据类型[]数组名=new数据类型[]{元素1,元素2,元素3,元素4...};/int[]arr=newint[]{11,22,33};double[]arr=newdouble[]{1.1,1.2,1.3};/简化格式:数据类型[]数组名={元素1,元素2,元素3,元素4...};/int[]array={1,2,3......
  • 数据结构和算法学习日志-第十章:树
    第十章树思维导图:1.树的定义和树的存储结构1.1树的定义1.1.1定义树(Tree)是n(n>=0)个节点的有限集。当n=0时称为空树。在任意一棵非空树中:有且仅有一个特定的被称为根(Root)的节点当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1、T2、……、Tm,其中每个集合本身又是一棵树,并......
  • 8.24--学习JAVA语言
    在编程中,流程控制是实现逻辑和功能的核心。Java,作为一种广泛使用的面向对象编程语言,提供了多种流程控制结构,帮助开发者实现复杂逻辑。顺序结构是程序中最基本的流程控制结构,按照代码出现的顺序依次执行。例如:选择结构允许程序根据条件选择不同的执行路径。Java提供了if语句和swi......
  • python Logging 模块的日志参数配置及使用
    官方文档查看路径:logging---Python的日志记录工具—Python3.12.5文档步骤一:先建立log.conf文件步骤二:在基类文件中引用log.conf文件,并创建Logger日志记录器--步骤一-----------------------log.conf文件配置信息[loggers]keys=root,infoLogger[logger_root......
  • 利用Spring Boot实现微服务的API网关统一日志
    利用SpringBoot实现微服务的API网关统一日志大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务的分布式特性使得日志管理变得复杂。为了更好地监控和调试服务,统一日志记录变得尤为重要。本文将介绍如何使用SpringBoot实现API网关的......