首页 > 其他分享 >P8868 [NOIP2022] 比赛

P8868 [NOIP2022] 比赛

时间:2023-10-29 21:34:48浏览次数:33  
标签:比赛 leftarrow 矩阵 sw 29 times pa NOIP2022 P8868

传送门


我们容易想到预处理区间 \([l, r]\) 中的 \(m_a \times m_b\)。

这样算出来的是一个二维的矩阵,每次的答案就是红色部分:

但是这样的问题是二维的,无论如何都不是正解。

考虑把列这一维压掉,也就是令 \(w'_i \leftarrow w_{i,i} + w_{i,i+1} + ... + w_{i,r}\)。

这样询问的答案就是一个序列求和了,就可能可以用线段树啥的来维护。

但是你发现线段树查询时能够约束的条件只有一维:\(L\),所以对于\(R\),我们需要通过枚举的顺序来保证 \(R\) 的限制,一个直观的做法将询问离线,按照 \(R\) 排序。

每次加入一个新的 \(R\),会多出一个 \(w_{i,R}\)。更新 \(w'\)的时候发现从下面算到上面,就能够\(O(n^2+qn)\)求解此问题了。

于是拿下\(20 pts\)。

CODE


发现\(w'\)都是加上一个数,这就提示我们寻找哪些区间具体加上了哪些数。

于是你直接输出每次的 \(m_a\) ,打表找规律。

找那种规律明显的,比如29 29 29 29 29 30 ...29就是a[R]

非常明显了:一个数左边第一个大于等于它的数为a[pa[R]],那么在\([pa[R]+1, R]\),\(m_a\)都是\(a[R]\)。

在此之前的 \(m_a\) 就还是原来的数,不变。

这个位置可以单调栈求解。

这时候我们就发现有些复杂了,因为有a和b,pa[R]pb[R]不一定相等。这时候我们一般先考虑一个序列,再考虑加上另一个序列的影响。比如这里先假设b的最大值没有变化。

题目直接需要维护的信息是\(w'\)的和,记为\(sw\)。

在\([pa[R]+1, R]\)的情况中,如果一个区间完全被包含,\(sw \leftarrow a[R] \times m_b[R] + a[R] \times m_b[R-1] + ...\),记\(smb\)为区间中所有\(i\),\([i,r]\)中\(m_b\)的和,那么\(sw \leftarrow sw + smb \times k\)。

在\([1, pa[R]]\)的情况中,最大值没有变化,我们多加的那一部分,其实就是枚举到\(R-1\)时多加的那一部分,记为\(xy\),全部\(xy\)的和\(sxy\)。\(sw \leftarrow sw + sxy\)。

现在来考虑b的影响,在\([1, pb[R]]\),b的最大值没变化,相当于没有影响。
在\([pb[R]+1, R]\),b的最大值都是\(b[R]\),消去在\([pa[R]+1, R]\)的情况中的影响,然后加上新的贡献。
\(sw \leftarrow sw - sxy + sma \times b[R]\)。

可以先模拟一下信息的维护,防止推导出错。

CODE

然后你发现要维护

\[\begin{bmatrix} sw & sma & smb & sxy & len \end{bmatrix} \]

求出对应的系数矩阵就行了。

CODE

常数太大挂掉了……

这个时候我们就要优化矩阵乘法,详见这里

需要注意,不是说标记矩阵最初某个位置上是常量,它就一定是常量。

这个时候就是把所有操作统一起来,看下哪些位置上是变量。

然后写个程序,将常量(所有操作最初的系数矩阵中的常量)赋值为它对应的数,变量赋值为随机数,然后多乘几次,如果某个位置上的值一直不变,就可以认为它是常量了。

当然你也可以每一个位置去手算,但是这样太慢了。

箭头指出来的地方本来是常量,但是乘几次之后就不是了……

给它们标好序号,也就是\(v_0,...\)。

每次算的时候一行行算,把每一个列对应抄出来,然后对应乘。

比如算\(v_3\):

算\(v_4\)的时候,把列擦掉,行不用变,然后一样去算,这样正确率比较高。

信息矩阵一样的方法优化。

标签:比赛,leftarrow,矩阵,sw,29,times,pa,NOIP2022,P8868
From: https://www.cnblogs.com/zhangchenxin/p/17796538.html

相关文章

  • python两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比
    两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单实例#!/usr/bin/python#-*-coding:UTF-8-*-foriinrange(ord('x'),ord('z')+1):forjinra......
  • 题解:「NOIP2022 提高组」种花
    题解:「NOIP2022提高组」种花题目大意:给定一个\(n\timesm\)的01矩阵,0表示可以种花,1表示土坑(无法种花),现在要在图上种出一个C型或F型(C,F横着的两条线的长度都可以不同,但一定是面向右边的),现在问你种C和F分别有多少种方案(除了这个形状外不能在任何地方种花),多组数据,\(T\leq5\)。......
  • 20231005比赛
    T14883.灵知的太阳信仰Description在炽热的核熔炉中,居住着一位少女,名为灵乌路空。据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量——核能。核焰,可融真金。咳咳。每次核融的时候,空都会选取一些原子,排成一列。然后,她会将原子序列分成一些段,并将每段进行一次......
  • P8865 [NOIP2022] 种花 题解
    前言去年多测不清空导致即便CCF放过了我的\(O(n^2m)\)的代码但依然挂成了\(0pts\)。当时看清空数组后能过CCF数据就没再管。时隔\(1\)年,重做这道题写了\(O(nm)\)的正解,终于完成了当年的心愿。\(O(n^2m)\)思路想到计算方案的话可以维护两个数组\(c1_{i,j}\)表......
  • 2023比赛做题笔记
    CSP-S2023https://www.luogu.com.cn/contest/140859。P9753首先考虑一个串可以被消除时的结构:\(\textbf{xx}\)可以被消除。若\(\textbf{A}\)和\(\textbf{B}\)均可以被消除,则\(\textbf{AB}\)也可以被消除。若\(\textbf{A}\)可以被消除,则\(\textbf{xAx}\)也可以被......
  • CSP-S 2023 比赛报告
    CSP-S2023比赛报告开场看T1,发现很简单。快速写完,发现过不了样例2,调了半天,发现没有判和读入相同。然后去看T2,发现不会,直接\(O(n^2)\)跑路。T3一眼大模拟,放弃。16:00有点头疼,趴了一会。16:50醒了。T4想了想,发现可以直接贪。但是二分解方程调不出来,最后只能保证\(......
  • 被突然出现的前端比赛打了个猝不及防
    今天晚上突然得知我要去参加一个网页制作比赛,可恶,我连后端的Django都还没怎么整明白,有要开始学前端的内容了=-=只能硬着头皮上了,还好有学长发的ppt,先可以大概规划一下学习路线和时间吧(零基础的我感觉瑟瑟发抖)额,刚刚退出去看了看PPT,感觉有好多东西,麻了。大概就是三部分吧html......
  • 【比赛笔记】CSP-S 2023
    授权码MD5:71f9eea8b22d84fca61763855842d32f游记Day0-比赛前夕来摘抄一段学长给的注意事项。然后评价一下...freopen//万事开头`freopen`,一定写`freopen`编译环境(-O2,-std=c++14)//命令行编译,注意编译信息g++a.cpp-oa-O2-std=c++14//重温编译命令stl......
  • 工业毛刷厂家,国机集团”百年党旗红 国机在行动“演讲比赛成都专场在公司顺利举办
    成都工具研究所有限公司的前身是成都工具研究所,于1956年创建于北京,是原机械工业部的直属研究所,是我国机械工业的综合性工具科研机构。公司官网:http://www.ctri.com.cn/公司主要从事精密切削工具、精密测量仪器以及表面改性处理技术的技术研究、产品开发和应用服务。6月10日,由国机......
  • 「比赛游记」CSP 2023 游记
    「比赛游记」CSP2023游记初赛简记.补一下成绩:J:92,S:81.5.10.17(day-3)模拟赛.全真模拟CCF数据上大分!!!不过我那个错解常数巨小,比较抽象.三道哈希还特别卡正确率,是想让我们场切星战吗?宣传:河北CSP贺图制作活动!!!好困哦.要练练DS了.就剩两场模拟赛了诶,会有板子日......