首页 > 其他分享 >CSP模拟52 & A 层联测 9

CSP模拟52 & A 层联测 9

时间:2023-10-11 20:57:08浏览次数:34  
标签:right 52 那么 联测 端点 区间 CSP dp left

2023NOIP A 层联测 9

长春花

观察大样例可以发现,函数 \(f(x)\) 的值很小,那么可以考虑暴力枚举。

用一个桶存一下平方数对 \(p\) 取模的值是否存在,那么可以选择从小到大枚举 \(a\),找到第一个存在的 \(b\)。

紫罗兰

考虑什么情况下会出现环,当两个点已经连通时,再在这两个点之间加一条边,那么会产生环(不一定是简单环)。

考虑用并查集维护两点是否连通,依次加边。

如果两个结点已经连通,那么可以 BFS 找这两个结点间最短路径,新产生的环的长度即为两点间最短路径长度加 \(1\),这一过程是 \(O(n)\) 的;

如果两结点尚未连通,则无需 BFS,直接建边并查集维护连通性即可。

最多 BFS 次数不会超过 \(m\) 次,那么复杂度不会超过 \(O(nm)\),优于题解的 \(O(n(n +m))\)。

天竺葵

本质上是一个带权的最长上升子序列。

先考虑 \(O(n^2)\) 做法,设 \(dp_{i,j}\) 表示前 \(i\) 个数选出长度为 \(j\) 的子序列时,末尾数的最小值。

那么满足 \(a_i > dp_{i-1,j-1} \times b_{j-1}\) 时,有转移 \(dp_{i,j}=\min \left\{ dp_{i-1,j},a_i \right\}\)。

考虑怎么优化,可以发现 \(i\) 相同时,\(dp_{i,j}\) 的值随 \(j\) 单调递增,即对于 \(j < k\),有 \(dp_{i,j} < dp_{i,k}\)。

那么考虑,对于 \(dp_{i-1,j-1} > a_i\) 时,无法转移,显然找不到这样一个 \(b_{j-1}\) 使得序列合法。

对于 \(dp_{i-1,j-1} \leq a_i\),才有可能转移,那么我们找到第一个大于 \(a_i\) 的位置进行判断并转移。

风信子

考虑复习超级钢琴。

设一个三元组 \((id,l,r)\),\(id\) 表示左端点,\(l,r\) 表示右端点的候选区间。

我们要找到前 \(k\) 个最优的答案,假设我们找到了第一个解的右端点 \(x\),那么 \(\left[ l,x \right)\) 和 \(\left(x,r \right]\) 仍然是一个候选的答案区间,我们把它们放进堆里再去选择下一个答案。

那么对于这道题也用到了这样的思想,左右端点各属于一个区间,那么这个解的集合成为了一个矩形。

假设我们已经有了其中一个解 \((x,y)\),那么考虑去掉这个解之后的候补答案集合是什么。

有两种情况是容易获得候补答案集合的,即左右端点区间重合或相离。

另外的情况就是左右端点集合有相交的部分,可以考虑将其转化为容易处理的类型。

设左右端点区间分别为 \(\left[ l_1,r_1 \right]\) 和 \(\left[ l_2,r_2 \right]\),有 \(l_1 \leq l_2 \leq r_1 \leq r_2\)。

那么我们可以把左端点的分为 \(\left[ l_1,l_2 \right]\) 和 \(\left[ l_2,r_1 \right]\);将右端点分为 \(\left[ l_2,r_1 \right]\) 和 \(\left[ r_1,r_2 \right]\)。然后可以让左端点两个区间与右端点区间分别组合,容易发现每一个组合都是相离的。

最后考虑两种容易处理的情况,设最优解位于 \((x,y)\)。

左右端点所在区间重合:

左端点 \(\in \left[ l,x-1 \right]\),右端点 \(\in \left[ l,x-1 \right]\)(\(x > l\));

左端点 \(\in \left[ l,x-1 \right]\),右端点 \(\in \left[ x,r \right]\)(\(x > l\));

左端点 \(\in \left[ x,x \right]\),右端点 \(\in \left[ x,x \right]\)(\(x \neq y\));

左端点 \(\in \left[ x,x \right]\),右端点 \(\in \left[ x+1,y-1 \right]\)(\(x < y - 1\));

左端点 \(\in \left[ x,x \right]\),右端点 \(\in \left[ y+1,r \right]\)(\(y<r\));

左端点 \(\in \left[ x+1,r \right]\),右端点 \(\in \left[ x+1,r \right]\)(\(x < r\))。

左右端点所在区间相离:

左端点 \(\in \left[ l_1,x-1 \right]\),右端点 \(\in \left[ l_1,r_1\right]\)(\(x > l_1\));

左端点 \(\in \left[ x,x \right]\),右端点 \(\in \left[ l_2,y-1 \right]\)(\(y > l_2\));

左端点 \(\in \left[ x,x \right]\),右端点 \(\in \left[ y+1,r_2 \right]\)(\(y<r_2\));

左端点 \(\in \left[ x+1,r_1 \right]\),右端点 \(\in \left[ l_2,r_2 \right]\)(\(x < r_1\))。

时间复杂度 \(O((n+(\sum k))\log n+(\sum k)\log (\sum k))\)。

标签:right,52,那么,联测,端点,区间,CSP,dp,left
From: https://www.cnblogs.com/baijian0212/p/csp-52_a-8.html

相关文章

  • 2023NOIP A层联测9 T3 天竺葵
    2023NOIPA层联测9T3天竺葵题面及数据范围Ps:连接为accoderOJ。看题大概是一个最长上升子序列的带权版本,于是想到dp。设\(dp[i][j]\)为到第\(i\)项,选出\(j\)个数的\(c_j\)最小值,不难想到转移:\[dp[i][j]=\min(dp[i-1][j],a[i]\(a[i]>dp[i-1][j]*b[j])\)\]若任意......
  • NOIP A层联测9 & CSP模拟52
    我的评价是三道傻逼题和一道牛逼题。T4上厕所时想了个奇怪东西打了一个半个小时170行结果剩10分钟发现假了,最后\(k=1\)都没来得及写就直接交了暴力。没想到HZOJ过了50pts,喜了。但是Accoders上只过了35pts,恼了。T1长春花\(b^2\bmodp=(b\bmodp)^2\bmodp\),所以......
  • CSP/NOIP 2020,2021,2022
    CSP-S2020儒略历可以发现不管是缺的\(10\)天还是什么特殊规定,前面的天数都比较少,直接暴力模拟前头就行。可以直接暴力模拟\(3\times10^6\)天,然后接下来考虑如果要连着跳\(k\)天,首先如果\(k\le400\)就暴力跳\(k\)次,否则我们先跳若干步到\(1\)月\(1\)日。然后可......
  • CSP模拟50联测12 T2 赌神
    CSP模拟50联测12T2赌神题面与数据规模Ps:超链接为衡水中学OJ。思路\(subtask2\):由于\(x_i\)较小,考虑dp。假设一开始球的颜色为红和蓝,设\(dp[i][j]\)为剩\(i\)个红球,\(j\)个蓝球时可获得的最大筹码数。如果不同球掉落所获得的筹码不同,那么肯定会掉落最少筹码的那一......
  • CSP-J/S 2022 游寄
    省流:J组:\(235\),一等线:\(215\)S组:\(185\),一等线:\(195\)蓝勾?9.18初赛。第一次线上考,鸡冻。上午是J,下午是S。在考试之前啊要弄一大坨什么答题设备的摄像头啊,什么监控设备的摄像头啊,万一停电了又要备摄像头啊……然后我现在家里有\(3\)个手机/摄像头支架,\(2\)台笔记本电脑......
  • ACS系列(4) ACSPL+ 运动控制编程
    轴电机运动管理命令ENABLE&DISABLE   Enable命令激活一个或多个电机和轴   Disable命令关闭一个或多个电机轴。错误码存储在MERR中,可以用FCLEAR来清除只要是电机是使能的,控制器器提供下面工作:1)保持ENA电机在激活状态2)计算PE(非关键性的位置错误)3)执行闭环控制(对于伺服......
  • CSP模拟51联测13 B.狗
    CSP模拟51联测13B.狗目录CSP模拟51联测13B.狗题目大意题目描述输入格式输出格式样例样例1inputoutput思路题目大意题目描述小G养了很多狗。小G一共有\(n\timesn\)条狗,在一个矩阵上。小G想让狗狗交朋友,一条狗狗最多只能交一个朋友,不必所有狗狗都有朋友。但是狗狗交朋友......
  • Educational Codeforces Round 152 (Div. 2) D. Array Painting(双指针)
    EducationalCodeforcesRound152(Div.2)D.ArrayPainting//思路:双指针找连续正数段//若段中出现2,则更新两头的0的情况,若为涂色则改为true//若无2,则优先更新左侧0,若左0已经为true,则更新右侧0//数组开头结尾特判#defineintlonglong#defineldlongdoubleusingnam......
  • 23CSP有寄
    10.9开始全天集训了。wdgm4因脑子进水了导致脑子未响应,强制关闭脑子后暴毙身亡,全剧终。自我感觉如果觉得今天太颓废了,就去做做数学题,因为这样就会变得更颓数学水题是真的多。然后就发现一个式子:\[\sum\limits_{i=1}^ni[\gcd(n,i)]=\frac{\varphi(n)n}{2}\]......
  • P8813 [CSP-J 2022] 乘方
    题目描述小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数\(a\)和\(b\),求\(a^b\)的值是多少。\(a^b\)即\(b\)个\(a\)相乘的值,例如\(2^3\)即为\(3\)个\(2\)相乘,结果为\(2\times2\times2=8\)。“简单!”小文心想,同时很快就写出了一份程序,......