首页 > 其他分享 >「题集」Public NOIP Round #2 提高

「题集」Public NOIP Round #2 提高

时间:2022-11-05 16:34:04浏览次数:90  
标签:颜色 NOIP bmod 纸币 题集 我们 物品 整钱 Public

简单写一写题解,T3 和 T4 还是值得一记的。

恰钱

注意到,\(10^9\) 范围内的好数明显数量不多。我们甚至可以直接算出来:

\[\sum_{k=1}^{14}\binom{30-(k+1)}{k-1} \]

结合这个数量,把所有好数提前搜出来,即可做到 \(O(Q\log^2 r)\) 查询。

排序

考虑 DP。设 \(f_k\) 为序列后缀 \([k,n]\) 中,\(k\) 必选时的最长栈长度。

转移时考虑枚举下一个必选数。设 \(p_k=\min_{k<j,a_k<a_j} j\),则容易发现 \(j\) 可以选中当且仅当 \(p_k\le j<p_{p_k}\) 且 \(a_j>a_k\)。对于值域进行扫描,用线段树维护 \(j\) 的限制即可做到 \(O(n\log n)\) 转移。

图同构

有一点 tricky 的题目。

看到题目,第一反应是这题肯定很阴险,给出来的操作肯定不能直接用别问为什么,问就是 NOIP2021 T3 PTSD。

冷静一下发现确实如此。题目描述似乎在割裂地考虑“颜色”和“点权”,但是如果我们将点权和颜色绑在一起看,则容易发现操作的含义就是将点权、颜色交换,并将两个位置的颜色都取反。所以,我们考虑新的“信息”为 \((a,c)\),即点权和颜色二元组。

那么,如果一个连通块是二分图,则原先 \(u\) 的“信息”走到 \(v\) 时,其结果状态是唯一的。我们可以先去掉二分图的位置影响,得到每个“信息”的真实状态。容易发现,如果 \(A\) 可以变成 \(B\),则 \(A\) 图上和 \(B\) 图上“信息”的真实状态应该可以一一配对。

如果不是二分图,则实际上有用的只有奇环上的那一条非树边,我们叫它为“奇边”。当我们在奇边上进行交换时,两个“信息”的真实状态中的颜色会被翻转。这样一来,\(A\) 图和 \(B\) 图的“信息”的真实状态不需要一一配对,而应当保证“差异的数量为偶数”。这个判断方式比较类似。

顺带一提,这道题读入量超级大,最好写 fread 快读。

找零

首先注意到货币系统的面值是题设的而非输入的,这意味着这里面可能有什么门道。

很快就注意到了,\(1\) 是最小面值,且其它面值的 \(\gcd\) 为 \(5\)。这意味着,如果商店要找零 \(x\) 元,实际上得到的 \(1\) 纸币数量是 \(x\bmod 5\)。

接下来是对于可能的操作的简化和贪心剪枝

  1. \(1\) 纸币有没有可能用出去?

    事实上没有可能。要么是整钱不够了,拿 \(1\) 纸币去凑出物品的价格,这样显然是在浪费;要么是,我们原本可以用整钱买下物品,但是要拿出 \(1\) 纸币换回更大面额的钱,这也没有意义。当我们要用到这张“更大面额的钱”的时候,我们要么在原始状态下用整钱买不起,要么压根不用拿 \(1\) 纸币去换它。

  2. 怎么购买物品?

    购买总价值为 \(x\) 的商品带来的 \(1\) 纸币为 \((5-x\bmod 5)\bmod 5\),由于取模的存在,很明显应该一个一个买物品

那么,现在这个问题已经转化为了背包问题,并且是特殊的大容量、小价值的背包。由于价值 \(\le 4n\),所以我们可以设 \(f_{x}\) 表示总价值为 \(x\) 时,需要的最小容量,这是一个 \(O(n^2)\) 的 DP。

仍然注意到价值很小,我们利用一个常见的先贪心再调整的思路:先用类似于部分背包的贪心法,求出距离容量上界比较近的一个位置上的最优值,而后在边界上再用普通的背包暴力地做一下调整即可。

这里有另一个思路:对于价值相同的物品,我们必然选取按照容量升序排序后的一个前缀。当我们整体加入某一价值的物品时,容量关于代价是下凸的,这样就存在决策单调性,可以 \(O(n\log n)\) 地完成一次转移。

标签:颜色,NOIP,bmod,纸币,题集,我们,物品,整钱,Public
From: https://www.cnblogs.com/crashed/p/16860489.html

相关文章

  • 【杂题汇总】NOIP 2022 杂题目录
    这里单纯的是一些题目,看到有意思的题会在这里记下来,也可以当做Todolist啦解析的话在这里[ARC147E]Examination[CF573E]BearandBowling[CF498D]TrafficJamsi......
  • 操作系统复习错题集合
    操作系统复习错题集合​ 主要记一下这个写操作,是增删目录中的目录项​ 文件有逻辑结构和物理结构,逻辑结构有流式和记录式,物理结构有顺序式、索引式、链接式UNIX题目......
  • 2022NOIP A层联测20
    [优化排序?]T2:给出二分图,左部任意节点和右部任意节点有边连接,边有边权,求最少边权使得所有节点联通。(n<=5000)正解kruscal跑最小生成树,发现\(n^2logn\)的sort会T,然后因为......
  • P1083 [NOIP2012 提高组] 借教室
    #include<iostream>usingnamespacestd;constintN=1e6+1;intn,m;inta[N];structnode{inttag,sum;node(){tag=sum=0;}v......
  • LG2258 [NOIP2014 普及组] 子矩阵
    LG2258[NOIP2014普及组]子矩阵给出一个矩阵,求出一个子矩阵(对应在数列上的定义为子序列,从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵保持行与列的相对顺序......
  • 计算机等级考试二级C语言上机题集(第6~10套)
    第6套1.程序填空题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是:将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行......
  • 计算机等级考试二级C语言上机题集(第1~5套)
    第1套1.程序填空题给定程序中,函数fun的功能是:统计整型变量m中各数字出现的次数,并存放到数组a中,其中,a[0]存放0出现的次数,a[1]存放1出现的次数,……,a[9]存放9出现的次数。......
  • 2022.11.03 NOIP2022 模拟赛二
    绯色IOI(开端)之前做过了,见杂题题解(一),话说这个系列是不是好久没更新了。CodeconstintN=2e5+5;intn,m,a[N];intmain(){n=read();FOR(i,1,n)a[i]=read(......
  • NOIP多校联训18[算数,刷墙,重复,公交]
    NOIP多校联训18[算数,刷墙,重复,公交]算数签到题,考虑所有合法情况只有\(1\)和任意\(\ge\)1的数,\(0\)和任意的正数,负数和任何的正数,就是处理一下一,别算重就行。复杂度\(......
  • NOIP模拟1
    T1.语言签到题。可以直接\(O(n)\)预处理出来前缀和,但我用了线段树,所以多了一个\(log\)的复杂度。题意转化:找到一个位置为动词,上一个位置为名词,句子末尾是名词,其他地方是......