当前位置: 首页 > news >正文

NOIP2023模拟13联测34 总结

NOIP2023模拟13联测34 总结

文章目录

  • NOIP2023模拟13联测34 总结
    • 比赛过程
    • 题目
      • A. origen
        • 题目大意
        • 思路
      • B.competition
        • 题目大意
        • 思路
      • C. tour
        • 题目大意
      • D.abstract
        • 题目大意

比赛过程

看了一下题,感觉就 T 2 T2 T2 有一点思路。

T 1 T1 T1 先打一个 30 30 30 分暴力,感觉要分位考虑,想了大概 1 h 1h 1h 就跳了。

T 2 T2 T2 想到了先求出整个区间的长度乘上包含这个区间的总数再减去重复算的,想了很久,只会相邻的,只好打个暴力,发现线段树超时,加上离散化又挂了,于是调了好久都没调出来。只好跳了

T 3 T3 T3 赶紧打个暴力

T 4 T4 T4 检查了前 3 3 3 题代码后没什么时间了,题也没看懂

题目

A. origen

题目大意

给定 n n n 个整数 a 1 , a 2 , a 3 ⋯ a n a_1,a_2,a_3\cdots a_n a1,a2,a3an ,求
∑ i = 1 n ∑ j = i n ( ⊕ k = i j a k ) 2 m o d 998244353 \sum_{i = 1}^n\sum_{j = i}^n(\oplus_{k = i}^ja_k)^2 \mod 998244353 i=1nj=in(k=ijak)2mod998244353
n ≤ 2 ∗ 1 0 5 , 0 ≤ a i ≤ 2 ∗ 1 0 5 n\le 2 * 10^5 , 0\le a_i \le 2 * 10 ^5 n2105,0ai2105

思路

s i = ⊕ j = 1 i a j s_i = \oplus_{j = 1}^i a_j si=j=1iaj ,则原式变为:
∑ i = 0 n − 1 ∑ j = 1 n ( s i ⊕ s j ) 2 \sum_{i = 0}^{n - 1} \sum_{j = 1}^n (s_i \oplus s_j)^2 i=0n1j=1n(sisj)2
按位考虑,一个数可以用二次幂的和来表示。考虑怎么处理平方。

因为:
( ∑ i = 1 n a i ) 2 = ∑ i = 1 i a i 2 + 2 ∑ i = 1 n − 1 ∑ j = i + 1 n a i ∗ a j (\sum_{i = 1}^n a_i)^2 = \sum_{i = 1}^i a_i^2+ 2\sum_{i = 1}^{n - 1}\sum_{j = i +1}^n a_i*a_j (i=1nai)2=i=1iai2+2i=1n1j=i+1naiaj
把两部分分开处理。

先处理前面的那项

i i i 的每一位分开求贡献,当前处理到第 j j j

设前 i − 1 i - 1 i1 个数这一位为 0 0 0 的数有 s 0 s0 s0 个,为 1 1 1 的数有 s 1 s1 s1

那么求这一位的贡献

  • 若当前这一位为 1 1 1 2 j ∗ 2 ∗ s 0 2^j*2*s0 2j2s0
  • 若当前这一位为 0 0 0 2 j ∗ 2 ∗ s 1 2^j*2*s1 2j2s1

然后处理后面的那项

先枚举两位 j 1 , j 2 j1 , j2 j1,j2

当前处理到第 i i i

s u m k , l sum_{k , l} sumk,l 为前面 i − 1 i - 1 i1 个数的第 j 1 j1 j1 位为 k k k ,第 j 2 j2 j2 位为 l l l 的个数

设第 i i i 个数这两位分别是 x , y x , y x,y

那么这里的贡献为: 2 ∗ 2 j 1 ∗ 2 j 2 ∗ s u m ! x , ! y 2 *2^{j1} * 2^{j2} *sum_{!x , !y} 22j12j2sum!x,!y

B.competition

题目大意

现在有 n n n 个区间 [ l i , r i ] [l_i , r_i] [li,ri] ,现在问你选取若干的连续的区间的区间并的大小的和。

思路

p r e i , j pre_{i , j} prei,j 表示前 i − 1 i - 1 i1 个区间内,包含点 j j j 的最靠右的数是多少。

可以发现答案就是
∑ i = 1 n ( r i − l i + 1 ) ∗ i ∗ ( n − i + 1 ) − p r e i , j ∗ ( n − i + 1 ) \sum_{i = 1}^n (r_i - l_i +1) * i * (n - i + 1) - pre_{i , j} * (n - i +1) i=1n(rili+1)i(ni+1)prei,j(ni+1)
也就是这个区间被记入答案的次数乘上区间的大小再减去重复的次数

可以用一棵线段树维护加离散化来维护。

先统计答案,然后用线段树更新 p r e pre pre

要卡常

C. tour

题目大意

n n n 个城市,每个城市有一个文化值 v a l i val_i vali

接下来有两种操作

  • 0 x y

    表示城市 x x x 和城市 y y y 之间建立一条无向边 (保证修建前 x x x y y y 不连通)

  • 1 x y

​ 代表有一个人,初始时他的文化值为 0 0 0 ,他会从 x x x 走到 y y y (保证此时 x x x y y y 连通),每走到一个城 市 i i i,他会与这个城市进行文化交流,如果此时他的文化值大于等于 v a l i val_i vali ,那么这次文化交流是 成功的。无论文化交流结果如何,在此之后,他的文化值会加上 v a l i val_i vali 。求出成功的文化交流的次数。

D.abstract

题目大意

定义函数 f ( i , j ) , g ( i , j ) f(i , j) , g(i , j) f(i,j),g(i,j) ,分别表示 i → j i\to j ij 的权值和权值或,想要求出 ∑ i = 1 n ∑ j = 1 n f ( i , j ) g ( i , j ) \sum_{i = 1}^n\sum_{j = 1}^n f(i , j) ^{g(i , j)} i=1nj=1nf(i,j)g(i,j)

把 $f(i , j) , g(i , j) $ 放到 i → j i\to j ij 的简单路径上的点权和点权或

输出答案 m o d 111121 \mod 111121 mod111121

定义: 0 0 = 0 0^0 = 0 00=0

http://www.lryc.cn/news/221835.html

相关文章:

  • Python武器库开发-常用模块之subprocess模块(十九)
  • java验证 Map 的 key、value 是否可以为空
  • 编写MBR主引导记录
  • 从零开始搭建React+TypeScript+webpack开发环境-自定义配置化的模拟服务器
  • python 之字典的相关知识
  • 上下游系统对接的沟通与协作
  • pytest 的使用===谨记
  • Qt 4.8.6 的下载与安装
  • 图形推理 | 判断推理
  • npm的使用
  • Web服务器实战
  • 2021年电工杯数学建模B题光伏建筑一体化板块指数发展趋势分析及预测求解全过程论文及程序
  • pandas教程:Essential Functionality 索引 过滤 映射 排序
  • pyspark连接mysql数据库报错
  • HK WEB3 MONTH Polkadot Hong Kong 火热报名中!
  • “第六十三天”
  • 常用排序算法实现
  • 使用表单登录方法模拟登录通信人家园,要求发送登录请求后打印出来的用户名下的用户组类别
  • Redis 的缓存击穿,穿透,雪崩及其解决方案
  • JWT原理分析——JWT
  • Jprofiler/ VisualVM 定位内存溢出OOM
  • NOIP2023模拟13联测34 competition
  • Intel oneAPI笔记(2)--jupyter官方文档(oneAPI_Intro)学习笔记
  • 用 QT 开发软件会吃官司吗?
  • 远程运维用什么软件?可以保障更安全?
  • 数据结构与算法C语言版学习笔记(2)-线性表、顺序存储结构的线性表
  • 【vite】vite.defineConfig is not a function/npm无法安装第三方包问题
  • 234. 回文链表 --力扣 --JAVA
  • 【JAVA学习笔记】65 - 文件类,IO流--节点流、处理流、对象流、转换流、打印流
  • R语言 复习 习题图片