首页 > 其他分享 >NOI2024省选训练赛01

NOI2024省选训练赛01

时间:2023-09-16 23:47:26浏览次数:47  
标签:10 le 20 map 省选 sum 满足 01 训练赛

NOI2024省选训练赛01

时间:2023.9.16

目录

A.t3

Time Limit: 4 sec / Memory Limit: 512 MB

Description

维护一个长度为 \(n\) 的数列 \(a_i\),支持如下几种操作,操作有 \(m\) 次。

\(1 \, l \, r \, x\) ,把区间 \([l,r]\) 的数字全部加 \(x\)

\(2 \, l \, r \, x\) ,把区间 \([l,r]\) 的数字全部设置为 \(x\)

\(3 \, l \, r\, x\) ,询问 \(\sum_{i=l}^r a_i^x\) ,答案对 \(10^9+7\) 取模

Constraints

\(k\) 表示操作 3 对应的 \(x\) 。

对于 \(20 \%\) 的数据,满足 \(n,m \le 1000\)

对于另外 \(20\%\) 的数据,满足 \(k\le 1\)

对于另外 \(20\%\) 的数据,满足 \(k\le 2\)

对于另外 \(20\%\) 的数据,满足 \(n,m\le 50000\)

对于 \(100\%\) 的数据,满足 \(n,m\le 100000,0\le k \le 10\)

操作 1,2 对应的 \(x<10^9+7\)

Solution

做法是对的,然后实现得有点问题,最后调了两天QwQ

想法很简单,先考虑一个区间 \([l,r]\) ,假设我们已经算出了所有的 \(sum_x=\sum_{i=l}^r a_i^x (0\le x\le 10)\) 的值,然后,我们考虑给这个区间的每一个数加上 \(d\)。

那么新的区间和就会变成:

\[\begin{eqnarray} \sum_{i=l}^r (a_i+d)^x &=& \sum_{i=l}^r \sum_{j=0}^x { x \choose j } a_i^j d^{x-j} \\ &=& \sum_{j=0}^x {x \choose j} d^{x-j} \sum_{i=l}^r a_i^j \\ &=& \sum_{j=0}^x {x \choose j} d^{x-j} sum_j \end{eqnarray} \]

这个东西可以很方便地用线段树维护,于是就做完了。

当然,注意要仔细地实现懒标记,我就是这里写烂了QwQ

B.Life

Time Limit: 3 sec / Memory Limit: 1024 MB

Description

给定正整数 \(L\),然后给出 \(q\) 组问询,每组问询给出一个正整数 \(x\),找出一组整数三元组 \((a,b,c)\) ,满足 \(-L \le a,b,c \le L\) 且 \(a^3+b^3+c^3=x\) .

如果没有这样的三元组,那么输出用空格隔开的三个 \(L+1\) .

Constraints

对于 \(30\%\) 的数据满足 \(L\le 100,q\le 10\)

对于 \(60\%\) 的数据满足 \(L\le 100\)

对于 \(100\%\) 的数据满足 \(L\le 1000,q,x\le 10^4\)

Solution

无脑题。考虑通过数据点分治启发正解。

Subtask1:无脑暴力。 \(O(8qL^3)\)

Subtask2:预处理每一个三元组,存在 map 里面,然后 \(O(1)\) 回答问询。 \(O(8L^3+q)\)

Subtask3:如果我们仍然枚举全部的三个变量的话,会 T 飞,考虑少枚举一点,只枚举其中两个变量,存到 map 里面。查询的时候枚举一个变量,然后到 map 里面查询。 \(O(4L^2+2Lq)\)

小优化:直接使用 map 会 T,需要使用 unordered_map。还有,别开 long long

标签:10,le,20,map,省选,sum,满足,01,训练赛
From: https://www.cnblogs.com/hsfzbzjr2008/p/17707544.html

相关文章

  • 01 初识HTML
    HTML:HyperTextMarkupLanguage,超文本标记语言。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body></body></html>......
  • SQL Server 2012分页获取数据的同时获取到总记录数(优化)
    ALTERPROCEDUREdbo.tpGetPageRecords(@OffSetRowNoINT,@FetchRowNoINT,@TotalCountINTOUT)ASSELECTCSTNO,CSTABBRFROMDBATABCWHERECSTABBRLIKE'A%'ORDERBYCSTNOOFFSET(@OffSetRowNo-1)*@FetchRowNoROWSFETCH......
  • P3287 [SCOI2014] 方伯伯的玉米田
    首先每次选择的区间结尾都可以换成\(n\),仍然保持单调不降,我们就按这个策略拔高玉米。令\(f_{i,j}\)表示\(1\simi\)这段前缀进行了\(j\)次操作,第\(i\)株玉米不被拔掉,所能剩下最多的玉米数量:\[f_{i,j}=\max\{f_{p,q}|p<i,q<j,a_p+q\leqa_i+j\}+1\]枚举\(i\),剩下两个......
  • Visual Studio 2019调试时不显示变量信息
    具体操作: 测试:  完美解决。......
  • CF1017H The Films
    Da1y3。今天因为初赛实在是没时间(懒得)写题了www,就放一道之前模拟赛场切的题吧。还有这个CF评分是假的,难点在于看懂题。考虑令\(c_i\)表示序列中\(i\)元素的出现次数,对于一次询问\(l,r\),令\(d_i\)表示\(a_l,a_{l+1},\cdots,a_r\)中\(i\)元素的出现次数。令\(A_n^m......
  • C++ 学习笔记、01 | 开发简单职工管理系统遇到的一些问题
    记录开发简单职工管理系统遇到的一些问题,黑马教程https://www.bilibili.com/video/BV1et411b73ZP147~P166头文件与源文件头文件只声明,源文件来实现(本质上是类内声明类外实现)源文件需要引用特定的头文件ifndefOOPFINAL_WORKER_H#defineOOPFINAL_WORKER_H#include<......
  • Java多线程学习(Day01)
    目录线程简介线程实现(重点)线程状态线程同步(重点)线程通信问题进程与线程概念                                     --来自百度百科的解释:        进程(Process)是......
  • 2018-2019 ACM-ICPC Brazil Subregional Programming Contest
    B.Marbles题解显然如果存在棋子位于\((x,x)\),那么一定先手必胜容易发现必败态位于\((1,2)\)和\((2,1)\),那么我们可以通过\(sg\)函数暴力打表得到并且玩家一定不会将棋子移动至\((0,i),(i,0),(i,i)\)这三种情况上,因为谁移动到这些位置,对手一定处于必胜态intn,f[N][......
  • 米联客MLK-CU01-040-060 AMD UltraScale核心模块硬件手册
    1整体概述MLK-CU01-040-060核心模块是米联客电子KintexUltraScale系列开发平台的全新高端产品。其核心模块集成电源管理:0.95V核心电源,最大输出24A。用户基于核心模块设计功能底板(提供功能底板设计方案)。降低项目功能底板设计难度和生产成本,加速项目开发。其应用领域包含高速通......
  • 米联客MLK-CZ05 AMD ZYNQ 7015核心模块硬件手册
    1整体概述自2017年米联客MLK-CZ05-7015-485(MZ7XCORE485)系列开发平台发布以来,米联客ZYNQ系列开发平台和核心模块经过多次迭代升级,在工业自动化、水利电力控制设备、医疗图像设备等领域广泛应用,产品性能接受了广大客户的检验,稳定可靠。2021年因芯片普遍紧缺涨价,核心模块再次......