首页 > 其他分享 >NOI 2024省选OIFC模拟21 蒲巴巴 超繁做法

NOI 2024省选OIFC模拟21 蒲巴巴 超繁做法

时间:2024-02-26 22:11:06浏览次数:21  
标签:10 le 21 格子 省选 sum 超繁 PuBaBa 我们

题目描述

一年一度的 PuBaBa 杯开始了!

今年的 PuBaBa 杯总共有 \(n\) 个选手来参加,编号分别为 \(1,2,\cdots,n\),他们的水平按编号依次递增,所以他们过的题目数量单调不降。

作为本场比赛的出题人,PuBaBa 总共出了 \(m\) 道题,他希望第 \(i\) 道题至少有 \(l_i\) 个选手通过,至多有 \(r_i\) 个选手通过,PuBaBa 预计所有题的过题人数和为 \(S\)。

作为毒瘤出题人,PuBaBa 例行会在赛前举行“毒奶”活动。不过,PuBaBa 的毒奶是有依据的,他会计算每位选手最多过的题目数量。

不过,PuBaBa 有点太牛了,他决定将这个简单的任务交给您来完成。

输入格式

第一个,三个正整数 \(n,m,S\) 分别表示参赛选手,题目数量,以及总过题人数。

接下来 \(m\) 行,每行两个正整数 \(l_i,r_i\) 表示第 \(i\) 道题至少有 \(l_i\) 个选手通过,至多有 \(r_i\) 个选手通过。

输出格式

若无解,输出 "-1"(不包含双引号)。

否则,为了压缩输出量,我们令 \(ans_i\) 表示第 \(i\) 个选手的最多过题数。

您仅需输出 \(\bigoplus_{i=1}^{n} ans_ii\)。

样例

Input 1

3 5 8
1 3
2 3
1 3
2 3
1 3

Output 1

5

Input 2

10 8 41
1 7
5 6
5 7
4 9
7 10
1 2
3 10
3 5

Output 2

50

样例解释

对于样例一:\(ans\) 序列为 \(2,4,5\)。

对于样例二:\(ans\) 序列为 \(4,4,5,5,6,7,7,7,8,8\)。

数据范围

由于输入量很大,请使用快速的读入方式。

出题人为您准备了一份 fread 板子:https://www.luogu.com.cn/paste/xc3a5u5w

测试点编号 \(n,m\le\) 特殊性质
\(1\sim 2\) \(5\)
\(3\) \(100\) 保证 \(l_i=r_i\)
\(4\sim 5\) \(100\)
\(6\sim8\) \(1000\) 保证 \(l_i=r_i\)
\(9\sim 10\) \(1000\)
\(11\sim12\) \(2\times 10^5\) 保证 \(l_i=r_i\)
\(13\sim14\) \(10^5\)
\(15\sim16\) \(2\times 10^5\)
\(17\sim18\) \(5\times 10^5\)
\(19\) \(2\times10^6\)
\(20\) \(5\times10^6\)

对于 \(100\%\) 的数据,保证 \(1\le n,m \le 5\times 10^6\),\(1\le l_i\le r_i\le n\),\(1\le S\le nm\)。

比某些做法难,总之比题解简单

先问一个问题:一个长度为 \(n\) 的数组 \(a=\{0\}\),进行 \(m\) 次操作,每次操作选择若干个互不相同的位置使这些位置加 \(1\)。给你一个数组 \(b\),问这个数组可否通过上述 \(m\) 次操作得出来。

这题非常简单,我们只需要求出 \(\max_b\),若 \(\max_b\le m\) 则可以,否则不可以。


我们将原问题化为一个二维问题,横方向表示题目,纵方向表示这道题做出的人数,黄色矩形表示 \([l_i,r_i]\)。

明显得出,我们至少要填 \(\sum l_i\) 个格子,至多能填 \(\sum r_i\) 个格子。如果 \(\sum l_i\le S\le\sum r_i\) 不满足,则答案为 \(-1\)。

我们设考虑到第 \(i\) 个人,则后面有 \(p=n-i+1\) 个人。又设 \(ans_i=j\)。

考虑写一个 check,传入 \(p,j\),判断是否存在方案。


首先,有一个基础的构造,即必须在这个构造上动工。我们设第 \(i\) 个人的做题数为 \(a_i\)。

\[a=\{\underbrace{0,0,\cdots,0}_{n-p个0},\underbrace{j,j,\cdots,j}_{p个j}\} \]

明显,这是一个满足递增且第 \(i\) 个人为 \(j\) 的方案。它总共填了 \(p\times j\) 个格子。


先考虑后面 \(p\) 个人的部分。

我们发现,“做题”的操作就很像上面“加一”的操作——选择若干个互不相同的位置使这些位置加 \(1\)。因为有 \(p\) 个人,所以我们就有 \(p\) 次操作。同理,只有每道题过题人数都小于 \(p\) 才合法。(重申一下,先考虑后面 \(p\) 个人的部分)

也就是说,我们需要画一条粗线,只能取粗线下面的部分。(下面这张图举了 \(p=6\) 的例子)

我们发现,对于 \(l_i\le p\),是合法的,我们可以在后面的部分将其填完,不会超过 \(p\)。至少要填的格子数是 \(\sum l_i[l_i\le p]\)。

但对于 \(l_i>p\)​​,我们只能填 \(p\)​​ 个。只能填的格子数是 \(\sum p[l_i>p]\)​​。

我们可以发现,因为存在 \(l_i>p\),只能填 \(p\) 个的情况。我们需要在前面 \(n-p\) 个人补全这 \(\sum (l_i-p)[l_i>p]\) 个格子,那么现在每个题都满足下边界 \(l_i\) 了。


我们发现,题目要求我们填恰好 \(S\) 个,我们不一定能填够。由于至少填 \(\sum l_i\) 个,我们有 \(S-\sum l_i\) 个“自由”的格子。

考虑将这些填给后面 \(l_i\le p\) 的题目,努力补全让它们尽量等于 \(p\)。那么总共有 \((S-\sum l_i)+(\sum l_i[l_i\le p])+(\sum p[l_i>p])\) 个格子。将其与至少的格子数 \(pj\) 做比较即可。


完了吗?当然没有。我们是不是忘了某个叫 \(r\) 的东西?

因为我们刚刚进行补全,有可能会补到 \(r\) 之外。我们要与至多的进行比较。

我们求出至多的格子数,同上为:\((\sum r_i[r_i\le p])+(\sum p[r_i>p])\),与刚刚的总共值取 \(\min\)。

也就是得到了 check 函数。

\[\min((S-\sum l_i)+(\sum l_i[l_i\le p])+(\sum p[l_i>p]),(\sum r_i[r_i\le p])+(\sum p[r_i>p]))\ge pj \]


然后发现答案肯定是递增的。

所以可以均摊线性得到答案。

标签:10,le,21,格子,省选,sum,超繁,PuBaBa,我们
From: https://www.cnblogs.com/znpdco/p/18035711

相关文章

  • NFLS 省选模拟 序列
    题面Link给定一个长度为\(n\)的序列\(a\),可以进行无限次下列操作:对于\(i\in[2,n-1]\),依次执行(而不是择一执行)\[a[i-1]+=a[i]\\a[i+1]+=a[i]\\a[i]=-a[i]\]求最小的\(\max^n_{i=1}|a[i]|\)思路考虑一次操作对于序列前缀和的影响,对于\(x,y,z\),其前缀和为\(x,x+y......
  • 91st 2024/2/26 省选联赛训练-1st
    迟来的新年快乐!这次的机会挺难得的,初三了,好说歹说从学校里跑出来训练了,就一定要珍惜时间进入正题今天的比赛难度高,但也没有省选那么难属于是思路比较难想那类T1题目有些疑惑,但总体表达还可,应该是太久没接触这种表达较专业的题目而一时难以适应看题需要认真且专心调代码时状......
  • AC475A 2024省选联测26 博弈
    题意两个人在一张DAG上移动棋子,每个格子的颜色为黑/白。每次操作可以移动一个格子颜色和自己相同的棋子。不能走的人输掉游戏。先手为白色,问所有放棋子的\(2^n\)种方案,先手必胜有多少。Sol不难发现,自己颜色内的棋子不会被对方偷走,也就是说,想控制所有棋子使得对方判负,......
  • 省选 数学
    直接对除法取模会出错,需要变成\(((a\modp)\times(\frac{1}{b}\modp))\modp\)的形式。性质:两个对\(p\)同余的数加减乘上同一个数后依然对\(p\)同余。矩阵乘法:\(c_{i,j}=\sum\limits_1^ka_{i,k}\timesb_{k,j}\)。单位矩阵:对角线上为\(1\)的矩阵。注意,只有\(n\time......
  • 【李宏毅机器学习2021】(二)Tips for training
    这一节主要讲解机器学习、类神经网络训练不起来怎么办?讲解一些训练的tips。先来回顾下机器学习的步骤:接下来将介绍在机器学习过程中,遇到问题时如何判断原因并解决:在训练数据上Loss值很大ModelBias在训练数据上Loss值很大,有可能是发生了Model问题。问题原因:模型太......
  • 【李宏毅机器学习2021】(一)引入机器学习和深度学习
    引入机器学习MachineLearning概括来说就是LookingforFunction,即让机器具备找一个函数的能力这些函数显然非常复杂,要依靠机器自动找出该函数。随着要找的函数不同,机器学习有不同的类别:Regression,回归:函数输出的是数值。Classification,分类:函数从给定选项(类别)中选择一个......
  • 21、oracle报ORA-04091发生了变化, 触发器函数不能读它
    21、oracle报ORA-04091发生了变化,触发器函数不能读它​ 在对某表进行更新的时候,调用了一个函数,函数中又使用该表进行读的操作,会导致读取到错误的数据。所以在函数中进行事务的锁定。解决方案:在begin之前增加pragmaautonomous_transaction;,在end之前增加commit;funcation......
  • 【Gorm 错误收集】Error 1215 (HY000): Cannot add foreign key constraint
    错误:Error1215(HY000):Cannotaddforeignkeyconstraint相关mysql错误:Error1215(HY000):Cannotaddforeignkeyconstraint。场景:为了方便测试人员测试产品的功能以及后续报告,PM设计了一个测试用例的功能,用于记录需要测试的产品的操作步骤。针对这个功能,我建立......
  • LCD高抗干扰液晶段码屏显示驱动芯片:VK2C21A/B/BA/C/D 大量应用于音箱/音响面板LCD显示
     I²C 接口LCD 控制及驱动IC型号:VK2C21A:RAM 映射 20*4,16*8封装(SOP-28)LCD液晶显示驱动VK2C21B:RAM 映射 16*4,12*8封装(SOP-24)LCD液晶显示驱动VK2C21C:RAM 映射 12*4,8*8封装(SOP-20) LCD液晶显示驱动VK2C21D:RAM 映射 8*4,4*8封装(NSOP-16) LCD液晶显......
  • 省选2024
    作为一个高二且NOIP只有300分的江苏oier,压力还是有点大的。Day-?得知noip只占30%,但是省队名额只有12个。算了一下,大概我考的和去年水平一样,应该就差不多了,其实可以对标一下ybw。虽然自己水平提高确实很多,但是还是感觉很没底。毕竟去年感觉自己打的很爆炸,结果后来发现我只......