首页 > 其他分享 >04-24 模拟赛总结

04-24 模拟赛总结

时间:2024-04-24 20:25:24浏览次数:16  
标签:24 xor 04 匹配 sum 括号 模拟 frac dp

04-24 模拟赛总结

T1

写个分数类, 把方差的括号拆开来, 用 __int128 硬算即可

Others

推式子

只有方差这里可能爆 i64, 原因是两个 1e10 级别的互质分母一通分就炸了

\[对于方差: 原式 = \frac{1}{i}(\sum A_j ^ 2 - 2 * \sum A_j B_i + \sum B_i ^ 2) \]

\[= \frac{1}{i} (\sum A_j ^ 2 - 2B_i\sum A_j + iB_i^2) \]

\[ = \frac{1}{i}\sum A_j ^ 2 - 2B_iB_i + B_i^2 \]

\[= \frac{1}{i} \sum A_j^2 - B_i ^ 2 \]

这样一来, 本来通分会炸的东西化没了, 所以 i64 也可过

Summary

做题的时候大体算一算结果的范围, 决定开不开 __int128 或者再优化 / 重新想, 有时候结果范围不同做法可能也不同(做到这样的题再更)

T2

Others

画图解决

判断是否匹配的一种做法就是做前缀和, '(' + 1, ')' - 1, 要求是 sum 时刻 >= 0 并且结束时 = 0

那么在图上, 对于每个点, 能匹配上的点对满足如下条件 :

​ 中间没有比他们更大的

这样, 第 i 组右括号的一段前缀就能和他匹配, 形成一个新区间

​ 注意:如果有多个高度相同的段, 要把他们加在一起, 因为每一个都是合法的

用一个单调栈维护, pop 是累加上面所述的情况的答案

栈里剩下的那个元素一定能使第 i 组的右括号全都匹配上, 形成 c[i] 个新区间

如果栈为空, 即 \(sum_i <= mini\) 则 i 低于 mini 的那部分匹配不上, 没有贡献, 因为在 pop 时 mini 这组的答案已经加上了, 所以在这里再减去 1 (我们假设算重了的是最后的 1 个, 即上一段所指的 '最后一个')

Summary

括号匹配的几种思路

  1. 数形结合, 如本题的图像
  2. 用栈贪心的匹配, + Dp 计算区间个数(我的暴力)

T3

Others

60 pts

35 pts 的思路是 dp[i][a][b][c] 表示第 i 位, 最后四位的后三位是 \(a_a, a_b, a_c\) (变量重名了哈哈哈), 由 dp[j][a'][b'][c'] (j < i) 转移过来

然后就发现 dp[i][a][b][c] 除了选了第 i 位的是 dp[i][a][b][i] 之外其余都是从 i - 1 继承过来的, 而选第 i 位只会发生一次, dp[i][a][b] 也完全可以表示原来状态的含义, 所以去掉一维即可

dp[i][a][b] 由 「 $\sum dp[a][b][c] $ 并且 i, a, b, c 位置的异或值不为 s 」转移过来, 因为和 i, a, b 异或值为 s 的数只有一个, 所以对每个 dp[i] 求和, 算的时候再减去那一个不合法的即可

100 pts

所有元素都不相等就挺有意思

因为这样的话容斥起来不会多算, 简单

\[dp[i][j] = \sum_{j < i \&\& k < j} dp[j][k] - \sum_{a_i\ xor\ a_j xor\ a_k xor \ a_l xor\ a_m == s \ \ l < k\ \&\& m < l} dp[l][m] \]

\[xor 是可以移项的, a_i\ xor\ a_j\ xor\ a_k\ xor\ a_l\ xor\ a_m\ = s 即 a_i\ xor\ a_j\ xor\ s\ = a_l\ xor\ a_m \]

以上的东西可以开个数组维护, 详情看代码

Summary

% MOD 这个东西很慢, 对于加法, 我们可以

x = x > MOD ? x - MOD : x;

dp 的转移通常是可以有暴力一步一步优化的, 所以写完暴力之后想想能不能再优化

标签:24,xor,04,匹配,sum,括号,模拟,frac,dp
From: https://www.cnblogs.com/Bubblee/p/18156216

相关文章

  • 2024.4.21 模拟赛
    Aperm首先若\((i+j)\)为奇数则需要满足其中一个是奇数,另一个必须是偶数。若\(k=0\),那么要求\(A_i\)和\(A_j\)同号,也就是所有数必须都是同一奇偶性。若满足则答案为\(n!\),否则为\(0\)。若\(k=1\),那么要求\(A_i\)和\(A_j\)异号。奇下标位置为\(\lceil\frac{n......
  • 2024天梯赛--理解错题意+脑子宕机
    知识点模块1.遍历九宫格中的每个3x3的方块可以按这么遍历点击查看代码//ij是行数和列数就是每个3x3矩阵的起点for(inti=1;i<=7;i+=3){ for(intj=1;j<=7;j+=3){ for(intx=i;x<i+3;x++) { for(inty=j;y<j+3;y++)......
  • 2024-04-24 vue2知识点小结
    Vue实例的创建和基本使用方法:使用newVue()创建一个Vue实例。传入一个包含选项的对象,如data、methods、computed、watch等。使用el选项来指定Vue实例挂载的元素。数据绑定:双向数据绑定:使用v-model指令实现表单元素与数据的双向绑定。单向数据绑定:使用v......
  • linux命令从log文件中找出404 或者500的所有报错信息?
     你可以使用grep命令结合正则表达式来找出包含"404"或"500"的所有报错信息,并显示这些行的内容。以下是示例命令:grep-E'404|500'/path/to/logfile.log这个命令会在指定的日志文件/path/to/logfile.log中查找包含"404"或"500"的所有行,并将这些行显示出来。g......
  • 2024日记
    4.24:打由乃打扑克然后……我招谁惹谁了啊!加个代码,求神帮调#include<bits/stdc++.h>usingnamespacestd;#defineinfile(x)freopen(x,"r",stdin)#defineoutfile(x)freopen(x,"w",stdout)#defineerrfile(x)freopen(x,"w",stderr)usingll=longlo......
  • 2024-04-24 PHP之CURD
    基本的查询业务逻辑,返回列表数据:data;操作信息:msg;操作状态:status$query="SELECT*fromos_system";</span><spanstyle="color:#800080;">$data</span>=<spanstyle="color:#800080;">$mysqli</span>->query(<......
  • 18--Scrapy04--CrawlSpider、源码模板文件
    Scrapy04--CrawlSpider、源码模板文件案例:汽车之家,全站抓取二手车的信息来区分Spider和CrawlSpider注意:汽车之家的访问频率要控制一下,要不然会跳验证settings.py中设置DOWNLOAD_DELAY=3一、常规Spider#spiders/Ershou.pyimportscrapyfromscrapy.linkextra......
  • JTCR-正则、反射和文本格式化-24 (end)
    正则Pattern类用于定义正则表达式,Matcher类用于匹配正则表达式。Pattern没有构造器,使用工厂方法compile()创建模式(pattern)。staticPatterncompile(Stringpattern)它将字符串转换成Matcher可以使用的正则表达式。Pattern的matcher()方法创建Matcher。Matcherm......
  • PeLK:101 x 101 的超大卷积网络,同参数量下反超 ViT | CVPR 2024
    最近,有一些大型内核卷积网络的研究,但考虑到卷积的平方复杂度,扩大内核会带来大量的参数,继而引发严重的优化问题。受人类视觉的启发,论文提出了外围卷积,通过参数共享将卷积的复杂性从\(O(K^{2})\)降低到\(O(\mathrm{log}K)\),有效减少90%以上的参数数量并设法将内核尺寸扩大到......
  • NFLS 240422 比赛总结
    PieOrDolphinTopcoderSRM617-Div1-Lv2题意有\(n\(\leq50)\)个人,给他们发礼物,共有\(m\(\leq1000)\)天,每天要给两个人发礼物,其中一个人获得一号礼物,另一个获得二号礼物,定义一个方案的总和为每个人获得的一号二号礼物数之差的和。现在每一天要发礼物的两个人已经确定,但是你......