首页 > 其他分享 >CF 1257 题解

CF 1257 题解

时间:2024-11-11 15:31:41浏览次数:1  
标签:lfloor geq frac leq 题解 sum CF rfloor 1257

CF 1257 题解

A Two Rival Students

每次交换都可以让距离增加 \(1\), 上界是 \(n-1\).

题目说至多而不是恰好交换 \(x\) 次, 于是不需要考虑边界.

B Magic Stick

一个重要的观察是: 如果能够得到 \(x\), 那么就能得到任意小于等于 \(x\) 的数, 这是操作二保证的.

考虑操作 \(1\) 有什么用:

首先, 一个观察是, 如果我有 \(2^k\), 那么我就能得到 \(3^k\), 这个增量是不小的, 而我们还可以再把 \(3^k\) 减掉一个数把它变成 \(2\) 的指数次幂, 再重复这个过程, 这个过程能否一飞冲天呢?

进行一些尝试:

考虑我现在想找到一个数 \(x\), 它能够变成 \(10^9\) 以内的任何数.

如果它能够变成 \(3^{19}=1162261467\), 那它一定合法;

因此如果它能变成 \(2^{19}=524288\) 就可以了;

这个数加上一个数约束严格更强, 把它变成 \(531441=3^{12}\);

因此有 \(2^{12}=4096\) 就够了.

以此类推:

\[2^{12}=4096<6561=3^8\\\rightarrow 2^8=256<729=3^6\\\rightarrow 2^6=64<84=3^4 \\ \rightarrow 2^4=16<27=3^3\\\rightarrow 2^3=8<9=3^2\\\rightarrow 2^2=4<9=3^4\\\rightarrow 2^4\ldots \]

我们发现, 大于等于 \(4\) 的数能变成小于等于 \(10^9\) 的任意数, 那小于 \(4\) 的怎么办呢?

模拟一下就能发现, \(3\) 能变成 \(1,2,3\), \(2\) 能变成 \(1,2,3\), \(1\) 能变成 \(1\).

C Dominated Subarray

发现一个合法序列至少要有两个一样的元素, 找最近的两个相邻元素距离即可.

D Yet Another Monster Killing Problem

发现这个怪物需要顺序的打, 那只能 dp 了.

设 \(f_i\) 表示打败前 \(i\) 个怪兽需要的最少天数.

设 \(lst_i\) 表示第 \(i\) 天至多到第 \(lst_i\) 可以一次杀完, 发现如果一个集合里的怪兽可以一次杀完, 那么它的子集都可以, 因此这个贪心是对的, 而且有可二分性.

考虑如何 check.

我们二分到一个 \(mid\) 作为 \(lst_i\), 那么需要:

\[\exist k, stat. i-mid\leq s_k , \max_{j=mid+1}^ia_j\leq p_k. \]

抽象出来, 现在有 \(m\) 个点 \((x_i,y_i)\), 每次询问给一个点 \((x_0,y_0)\), 请你回答是否存在点 \(k\) 使得 \(x_k\geq x_0,y_k\geq y_0\).

维护一个横坐标递增, 纵坐标递减的链, 找到第一个横坐标能够包住 \(x_0\) 的, 看看 \(y_k\) 是否能包住 \(y_0\).

这个链用单调栈即可.

二分套二分, 复杂度 \(O(n\log^2n)\).

E The Contest

发现操作数等于初始时不在指定位置的元素数量.

我们钦定结束时 \(A\) 掌管 \([1,l)\) , \(B\) 掌管 \([l,r)\), \(C\) 掌管 \([r,n]\), 其中 \([1\leq l\leq r \leq n + 1]\).

根据上面的理论, 则有:

\[ans=\sum_{a\in A}[a\geq l]+\sum_{a\in B}[a<l]+\sum_{a\in B}[a \geq r]+\sum_{a\in C}[a<r] \]

这样, 答案就拆成了 \(ans=f_l+g_r\) 的形式, 可以拆开算了.

先用差分优化区间加来求出来 \(f\) 和 \(g\), 然后考虑, 我们枚举 \(l\) 的值, \(r\) 的唯一约束是 \(r\geq l\), 因此:

\[ans=\min_{l=1}^{n+1}(f_l+\min_{r=l}^{n+1}g_r) \]

\(g\) 用后缀和即可.

F Make Them Similar

发现前面一半和后面一半的二进制位是独立的, 可以前后分开搜两边.

设对于一个 \(x\) 来说, 前一半二进制位得到的 popcount 是 \(a_i\), 后一半是 \(b_i\), 那么有:

\[a_1+b_1=a_2+b_2=a_3+b_3\dots \\ \rightarrow \forall k, a_1-a_k=b_k-b_1 \]

这可以转化为一个字符串相等的问题. 用 hash 维护, 然后把两边搜出来的东西查看 hash 是否有一致的.

G Divisor Set

对于一个集合 \(A\), 寻找它的一个最大子集族 \(\mathcal{F}\) 使得其中任意两个集合互不包含, 那么 \(|\mathcal F|=\binom{|A|}{\lfloor\frac{|A|}{2}\rfloor}\).

首先, 容易构造这样一个方案, 充分性显然.

下证必要性:

对 \(F\) 中的每一个元素 \(S\) , 把 \(S\) 的全排列 和 \(A/S\) 的全排列做组合, 有 \(|S|!(|A|-|S|)!\) 种方案.

把所有的 \(S\) 得到的结果拼到一起, 得到一个排列, 由于 \(F\) 中的元素互不包含, 那么序列是不重的, 则有下面的式子:

\[\sum_{i=1}^ts_i!(n-s_i)!\leq n! \\ \rightarrow 1\geq\sum_{i=1}^t\frac{1}{\binom{n}{s_i}}\geq \sum_{i=1}^t\frac{1}{\binom{n}{\lfloor\frac{n}{2}\rfloor}} =\frac{t}{\binom{n}{\lfloor\frac{n}{2}\rfloor}}\\ \rightarrow t\geq\binom{n}{\lfloor\frac{n}{2}\rfloor} \\ \]

这个结论对于数字一样成立, 证明特别复杂 不会

求方案数相当于你现在有 \(k\) 种物品, 每种物品有 \(s_i\) 个, 满足 \(\sum_{i=1}^ks_i=n\), 请你选出 \(\lfloor\frac{n}{2}\rfloor\) 个.

这个问题相当于一个背包, 而背包就等价于卷积. 我们设 \(F_i(x)=\sum_{k=0}^{s_i}x^k\), 答案即为 \([\lfloor\frac{n}{2}\rfloor]\prod_{i=1}^kF_i(x)\), 现在的问题是怎么快速的求出来所有的多项式乘起来.

实际上是好做的, 每次考虑用前面一半的结果和后面一般的结果做 NTT 即可, 递归的去做, 每一层的复杂度单 log, 有 log 层, 因此总复杂度 \(O(n\log^2n)\).

标签:lfloor,geq,frac,leq,题解,sum,CF,rfloor,1257
From: https://www.cnblogs.com/snowycat1234/p/18539801

相关文章

  • 2024中高级前端面试真题解析
    我是一名本科毕业的前端程序媛,工作5年了,周末双休待遇还不错。公司最近要搬迁新地址,业务要整合到一起,所以最近比较清闲,天天上班摸鱼,闲着没事,整理了以前面试时用的资料文档有945道:JavaScript(323题)CSS(61题)HTML(57题)React(83题)Vue(80题)算法(19题)计算机网络(71题)Node.js(2......
  • CF1821
    建议结合独立思考使用本题解。A没什么价值略去。B有一个序列\(a\),通过把它的一个子区间进行升序排序生成了\(b\)。现在给出\(a,b\),求出可以通过该操作使\(a\)变为\(b\)的最长子区间的左右端点,输出任意一个。\(n\le2\times10^5\)如果存在一个位置,使得\(a_{p}\neq......
  • 【题解】CF1993【EF】
    A注意到一种选项最多填对\(n\)个题所以答案是\(\min(n,cnt_a)+\min(n,cnt_b)+\min(n,cnt_c)+\min(n,cnt_d)\)B注意到操作只能让奇数变多,偶数变少,所以我们只能把偶数全变成奇数特判掉全是偶数的情况,容易得到答案下界:偶数个数容易想到一个naive贪心做法:每次都拿出奇数......
  • 2024ccpc女生赛题解
    考场上写的A,C,H,L,M下来补一下剩下的E注意\(p[i]<i\)这个性质和重心关系不大,一个简单的构造,手模几个样例就能发现规律。倒着枚举:\(c[i]=0\)的是叶子,不用处理\(c[i]>0\),这个点连到父亲所在连通块的根上即可。并查集维护连通块以及连通块的根,根就是连通块中最小编号的点。#inc......
  • 题解:P11250 [GESP202409 八级] 手套配对
    题目传送门思路讲解一道非常经典的排列组合的题。首先,我们要先从nnn对手套中取走kk......
  • MySQL问题解决记录(1):IP address 'xxx.xxx.xxx.xxx' could not be resolved: 这是在主机
    目录问题描述排查流程解决方案总结问题描述[Warning][MY-010055][Server]IPaddress'xxx.xxx.xxx.xxx'couldnotberesolved:这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。问题表现:A主机的服务在访问B主机的MySQL数据库时,产......
  • CF401
    A.VanyaandCardsCF原题链接题目大意:给出\(n\)个数\(a_{i}\),满足\(\lverta_{i}\rvert\leqslantx\),要求添加若干个满足以上要求的数,使得\(\Sigmaa_{i}=0\),求添加数字的最小数量\((1\leqslantn,x\leqslant1000)\)解题思路:直接做做完了。统计一下原本\(\Sigmaa_{i}\)的......
  • Jmeter并发线程场景下共享变量错乱问题解决
    问题复现问题描述使用IF控制器获取前一个请求的后置脚本中设置的全局变量->并发线程下通过vars.get获取变量时,第一个线程和第二个线程获取的变量值一样->导致不同基础数据的请求入参一样方法如下:vars.put("shoppingCartIdList",shoppingCartIdList.toString());/......
  • CF1974题解
    闲话1974年第一次在东南亚打自由搏击就取得了冠军······CF1974A简单计数题点击查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intt;signedmain(){ scanf("%lld",&t); while(t--){ intx,y,ans=0,num=0; scanf("%lld%lld",&x,......
  • [CodeForces] CF1978 题解
    A.AliceandBooksLink-CFLink-Luogu【题目大意】\(n\)本书,编号为\(1\)到\(n\),价值为\(a_1\)到\(a_n\)。将这些书分成两堆,你获得每堆编号最大的书的价值。求可以获得的最大的价值。【解题思路】无论怎样,编号为\(n\)的书不管在那一堆都是编号最大的,所以一定会有它......