首页 > 其他分享 >CSP-S 模拟赛 29

CSP-S 模拟赛 29

时间:2024-10-11 21:35:23浏览次数:9  
标签:le 对于 dfrac 复杂度 29 sqrt 考虑 CSP 模拟

CSP-S 模拟赛 29

T1

  • \(n\le 18\) 显然是状压 dp。
  • 考虑设状态 \(dp_{i,j}\) 表示状态为 \(i\),最终的 \(a\) 为 \(j\) 时的最大代价及方案数。转移是简单的。
  • 优化是观察到最终的 \(a\in(\max a_i,\max a_i+1)\)。那么这一维便可以用 \(0/1\) 来设。 于是时间复杂度 \(O(2^nn)\).

T2

  • 对于网格图上统计问题,常见的想法是扫描线或者四个方向前缀和。

  • simple 的想法是从每个点向四个方向做前缀积,暴力乘上逆元来统计答案。然而我们发现 \(M\) 不一定是质数,也就是说逆元不一定存在。

  • 考虑到只有 \(2000\) 个卫星,那么容易想到离散化。于是我们离散化每一个卫星,维护到四个方向的前缀和,于是我们发现这样的维护是不需要逆元的,并且事实上被分割成了一个个的矩形。

  • 那么对于询问的每一个点,我们暴力计算它到所在矩形端点的距离计入答案即可。

T3

  • \(O(n^2)\) 的暴力 Hash 是显然的。
  • 考虑优化。考虑对于两个串 \(a,b\),长度分别为 \(p,q\),那么 Hash 比对的时间为 \(O(\min(p,q))\)。
  • 得到部分分的启示,我们考虑预处理一部分东西。那么这个东西就很像根号分治。
  • 具体地,对于 \(\min(p,q)\ge \sqrt n\),我们预处理所有这样的二元字符串组 \((a,b)\),那么这样的字符串组会有 \(n\) 个,复杂度最劣显然是长度全取到 \(\sqrt n\),复杂度为 \(O(n\sqrt n)\),对于 \(\min(p,q)\le \sqrt n\),直接暴力比对,复杂度 \(O(q\sqrt n)\),于是总复杂度 \(O((n+q)\sqrt n)\),能过。

T4

  • 抽象。
  • 考虑转化所求答案:求出对于一个节点 \(i\),能够连到的离他最近的点编号与他的差。如果这个值是 \(p\),那么表明连边是以 \(p\) 为周期进行的,于是答案就是 \(p\)。
  • 我们猜想在一定情况下 \(\operatorname{ans}=\gcd(S)\)。显然只有当每个点 \(i=j+s_k\) 或 \(i=j-s_k\) 时成立。
  • 对于 \(s_i\le \dfrac{n}{2}\),无论 \(i\) 在何处均有对应的 \(j\)。于是对于 \(s_i\le\dfrac{n}{2}\),当前答案 \(d=\gcd(s_i)\)。
  • 对于全部 \(s_i>\dfrac{n}{2}\) 的情况,这些节点不会被任何点连到,于是考虑删去他们,同时改变 \(n\) 和 \(s\) 的取值。
  • 对于 \(s_i>\dfrac{n}{2},d+s_i\le n\) 的,它仍然可以扩展到,因此新的 \(d'=\gcd(d,s_i)\)。
  • 对于 \(s_i>\dfrac{n}{2},d+s_i>n\) 的,能跳的显然是前面的前 \(d\) 和后 \(n\bmod d\) 个点,更新 \(n\) 和 \(s\),并递归。
  • 时间复杂度 \(O(m\log^2n)\)。

标签:le,对于,dfrac,复杂度,29,sqrt,考虑,CSP,模拟
From: https://www.cnblogs.com/Rock-N-Roll/p/18459387

相关文章

  • CSP-S 模拟赛 37
    CSP-S模拟赛37T1口胡题。显然尽量靠近中间更优,且选端点一定不劣,于是依据结论将中点设为所有端点的中位数。代码:#include<bits/stdc++.h>#defineN300005#defineintlonglongusingnamespacestd;intn;intl[N],r[N];intrk[N<<1];intpos[N];intans;signe......
  • 多校A层冲刺NOIP2024模拟赛05
    A.好数(number)很容易想到\(n^3\)枚举两个,看第三个是否出现,扩展一下,枚举一个,看剩下需要的和是否出现过,提前处理出两两的和和最早能合出这个数的位置,复杂的\(O(n^2)\)点击查看代码#include<bits/stdc++.h>constintmaxn=5000+10;usingnamespacestd;intn,a[maxn],cnt,......
  • CSP-J 2023 T3 一元二次方程 解题报告
    CSP-J2023T3一元二次方程解题报告Link前言今年\(CSP\)的原题,回家\(1h\)内写\(AC\),但是考场上没有写出来,原因是脑子太不好了,竟然调了两个小时没有调出来.一等奖悬那......正题看完题目,第一眼就是大模拟,并且\(CCF\)绝对不会让你好受,所以出了一个如此***钻的......
  • CSP-S 模拟赛 36
    CSP-S模拟赛36T1由于\(a_i\le10^5\),那么考虑枚举这个\(\gcd\),考虑求\(f(i)\)表示答案,那么\(\operatorname{ans}=\sumi\timesf(i)\)。然而式子中有\(\gcd\),于是考虑求\(g(i)\)表示\(i\mid\gcd\)的方案数,然后\(f(i)=g(i)-\sum_{j>i,i\midj}f(j)\)。对于\(g(i)\)......
  • CSP-S 模拟赛35
    CSP-S模拟赛35T1其实是傻逼题。常见的套路是枚举右端点,动态维护左端点的贡献。发现右端点移动一位只会对一种颜色有影响,那么考虑线段树维护区间的答案,区间加减每个颜色即时的贡献即可。代码:#include<bits/stdc++.h>#defineN1000005#defineM8005#defineintlonglong......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛05
    Rank烂。A.好数(number)签,唐,没签上。考虑之前几次类似的题方法都是选\(k-1\)的方案存起来以使总复杂度除以一个\(n\),故考虑记共\(n^2\)个两两组合之和,枚举当前点\(i\)前面的点,找是否有值为它们的差的组合,复杂度\(\mathcal{O(n^2)}\),用map记再挂个\(\logn\)。赛......
  • 多校A层冲刺NOIP2024模拟赛05
    T1、好数(number)签到题把选三个数相加拆为选择一个数,然后看前面有没有能用两个数组合出答案。$O(n^2)$。码(#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefpair<int,int>pii;#definemkmake_pair#de......
  • [10.11]CSP-S模拟赛
    宝贵经验:写题的时候想出时间正确的方法后千万注意计算空间,能不用数组的地方就不要用,否则可能会像我一样:\(35\to15\to0\)赛前小L说比上次简单。赛时T1一开始没有思路,但是注意到了两个关键条件:询问数\(\le300\)\(n,m\le10^9\)然后想到正解绝对不是去直接修改。注......
  • c语言模拟实现库函数 strlen strcpy strcat strcmp strstr
    一、模拟实现库函数strlen解释:strlen是求字符串长度的,求出的长度是不可能为负数所以返回类型设置为size_t也是合情合理的 typedefunsignedintsize_t\注意字符串已经'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0')。size_......
  • coduck 复赛模拟赛三 补题报告 侯锦呈
    自测160分第一题30分第二题100分第三题30分(后来100分 自己改的)第四题0分第一题十五的月亮题目描述假设一个每个月都是30天,用0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1表示一个月30天中的月亮......