首页 > 其他分享 >Codeforces 800-1300 刷题笔记

Codeforces 800-1300 刷题笔记

时间:2024-06-10 14:10:39浏览次数:23  
标签:移动 1300 Codeforces ge right 序列 array 800 rightarrow

CF1946B Maximum Sum

这道题是一道贪心题。

对于第 \(1\) 次操作,选择的话肯定是选最大的好,所以我们会找出原序列的最大子段和进行插入,为了使下一次的插入子段更大,所以我们一定会插入原序列的最大子段和中。进行 \(m\) 次操作,执行 \(m\) 次上述操作即可。

直接模拟的话肯定不行,我们考虑找找规律,由于每次插入都是插入现在序列的最大子段和中,所以每次插入的值都是翻倍增长的,易发现这是一个等比数列的求和。我们如果模拟上述操作,复杂度为 \(\mathcal{O}(m)\),可以接受。

最后注意取模。

CF1004B Sonya and Exhibition

设区间 \([l,r]\) 中 \(1\) 有 \(x\) 个,\(0\) 有 \(y\) 个,当 \(x\) 和 \(y\) 最接近的时候,\(x \times y\) 最大,此结论可以用二次函数进行证明。接下来,考虑怎样构造使得 \(x\) 与 \(y\) 最接近。策略是交替输出 \(0\) 和 \(1\),这样做的正确性是显然的。

CF899C Dividing the numbers

一道很好的构造题。

令 \(f(x)\) 表示 \(n=x\) 时的答案。

当 \(x=0\) 时,\(f(x)=0\)。

当 \(x=1\) 时,\(f(x)=1\)。

当 \(x=2\) 时,\(f(x)=1\)。

当 \(x=3\) 时,因为 \(3=1+2\),所以 \(f(x)=0\)。

当 \(x>3\) 时,因为有 \((x-1)+(x-2)=(x-3)+x\),所以 \(f(x)=f(x-4)\)。

依据 \(n \bmod 4\) 分类讨论即可。

如何证明次做法的正确性呢?令 \(a=\sum \limits_{i=1}^{n} i\),如果 \(a\) 是奇数,那么最优答案就是 \(1\),否则是 \(0\),利用高斯公式依次计算出上述情况下的 \(a\),并判断即可证明,在此不再赘述。

CF78B Easter Eggs

令 \(s=\texttt{ROYGBIV}\),对于前 \(i\) 个彩蛋 \((1 \le i \le n-3)\),第 \(i\) 个为 \(s_{(i-1) \bmod 4}\),这样可以保证 \([1,n-3]\) 这段区间满足条件 \(2\),对于后 \(3\) 个彩蛋,直接输出 \(\texttt{BIV}\),这样就满足了条件 \(1\),由我们的构造做法可知,\([n-6,n]\) 这个区间是 \(\texttt{ROYGBIV}\),\([n-2,4]\)(题目要求是环)这段区间是 \(\texttt{BIVROYG}\),都是符合条件的,故整个环符合条件 \(2\),然后就做完了。

CF1759C Thermostat

分类讨论题

  • 如果 \(a=b\),那么不需要移动,\(ans=0\)。

  • 如果 \(\lvert a-b \rvert \ge x\),移动 \(1\) 次就可以了,那么 \(ans=1\)。

  • 为了使移动距离尽可能大,最好的方法是移动到边界,即先移动到 \(l\) 或 \(r\),再到 \(b\),那么 \(ans=2\)。判断条件为 \(\left\{ \begin{array}{} a-l \ge x\\ b-l \ge x \end{array} \right.\) 或者 \(\left\{ \begin{array}{} r-b \ge x\\ r-a \ge x \end{array} \right.\)。

  • 如果上述情况还是不满足,我们可以通过两个端点进行 \(3\) 次移动,即 \(a \rightarrow l \rightarrow r \rightarrow b\) 或 \(a \rightarrow r \rightarrow l \rightarrow b\),判断条件为 \(\left\{ \begin{array}{} a-l \ge x\\ r-b \ge x \end{array} \right.\) 或者 \(\left\{ \begin{array}{} r-a \ge x\\ b-l \ge x \end{array} \right.\)。

由于两边端点都已经尝试过了,再移动已经没有意义了,故最多只能有 \(3\) 步,其余的情况都是无解,输出 \(-1\)。

CF1768B Quick Sort

易发现如果要让序列排序,那么原序列中 \(x \sim x+1\) 之间的所有数字都是需要移动的,所以原序列中只有一个最长的连续上升子序列是不需要动的,设其长度为 \(m\),那么需要移动的数字数量为 \(n-m\),由于每次可以移动 \(k\) 个且自动排序,故答案为 \(\left \lceil \frac{n-m}{k} \right \rceil\)。

CF1832B Maximum Sum

比较坑的一道题,直接双指针模拟贪心是不行的。

先将序列排序,设大的数删了 \(x\) 个,那么小的数删了 \(2 \times (k-x)\),由于它是从头和尾删数,所以我们可以确定删了那些,统计前缀和后缀和,枚举 \(x\),更新答案即可。

CF1903B StORage room

考虑按位或运算的性质,即 \(a\) 和 \(b\) 某一位上都为 \(0\),那么它们或起来的那一位上也是 \(0\),反之,如果 \(M_{i,j}\) 的第 \(x\) 位上是 \(0\),那么 \(a_i\) 和 \(a_j\) 的第 \(x\) 位上也是 \(0\),所以我们可以先将 \(a\) 的每一位上都赋值为 \(1\),再枚举 \(M\),利用与运算执行上述操作(将 \(a_i\) 或 \(a_j\) 与上 \(M_{i,j}\),由于与是只有两个 \(1\) 才是 \(1\),所以如果 \(M_{i,j}\) 的某一位上是 \(0\),那么 \(a_i\) 或 \(a_j\) 的相应位置上也是 \(0\) 了),最后将生成的 \(a\) 再代回检查一遍,如果不满足就是无解,否则输出即可。

CF1918B Minimize Inversions

将 \(a\) 数组排序,就可以最小化两个序列中逆序对的个数的和了,证明如下:

当 \(a\) 排序了之后,对于任意一对 \(i\) 和 \(j\),两数组中逆序对之和数量 \(x\) 最大为 \(1\),当 \(x=0\) 时,交换后 \(x\) 为 \(2\),当 \(x=1\) 时,交换后 \(x\) 为 \(1\),所以再怎么交换都不可能更优了,故现在的序列即为最优解。

标签:移动,1300,Codeforces,ge,right,序列,array,800,rightarrow
From: https://www.cnblogs.com/zhuluoan/p/18240636

相关文章

  • Codeforces Global Round 26 (A - D)
    CodeforcesGlobalRound26A如果\(a_1=a_n\),无解。如果\(a_2=a_n\),\(a_1,a_2\)涂成红色,否则只把\(a_1\)涂成红色。voidsolve(){ cin>>n; for(inti=1;i<=n;++i)cin>>a[i]; if(a[1]==a[n]){ cout<<"NO\n"; re......
  • 【NAS】Docker Gitea+SakuraFrp+绿联DPX4800标 搭建私有代码托管平台
    本文主要分享Gitea的一些设置,和Https的实现。Gitea的一些设置映射网络HTTPS的实现先准备好一个域名,建议准备一个1Panel创建一个AC账户然后点击申请证书,手动解析。申请完毕后,点击详情,查看证书crt和私钥key自己创建一个txt文本,将证书crt粘贴进去,然后将名字改为xxx.crt......
  • Codeforces Round 951 (Div. 2)
    A题没什么好说的。B题目读懂了基本就会了。首先很明显,如果x和y的某一位不一样,那这两位异或同一个数字自然也是不一样的。所以要做的就是找到二进制里面最长的连续相同的数量。这个时候看看样例,148全是2的整数次方,33554432,计算器算一下,发现居然也是。那就非常明显了。直接......
  • [Tkey] CodeForces 1267G Game Relics
    太神了这题,膜拜出题人orz。思考一首先是大家都提到的一点,先抽卡再买。这里来做个数学分析。假设我们还剩\(k\)种没有买,其实我们是有式子来算出它的花费期望的。WIKI上提到,假设一个事件的概率为\(p\),则遇到它的期望为\(\frac{1}{p}\),因此,对于这个题,抽到一个新物品的概率显......
  • Codeforces Round 950 (Div. 3)G. Yasya and the Mysterious Tree(字典树处理区间异或
    Problem-G-Codeforces存个字典树板子。1#include<bits/stdc++.h>23usingi64=longlong;45constexprintN=1E7;67inttrie[N][2];8intcnt[N][2];910inttot=0;11intnewNode(){12intx=++tot;13trie......
  • Codeforces Round 949 (Div. 2)D. Turtle and Multiplication(欧拉路径、线性筛、思维
    Problem-D-Codeforces  按照官方正解做即可,顺带存个jiangly板子。1#include<bits/stdc++.h>23usingi64=longlong;4std::vector<int>minp,primes;56voidsieve(intn){7minp.assign(n+1,0);8primes.clear();910......
  • Codeforces Round 950 (Div. 3) A B C D E
    A.ProblemGeneratortimelimitpertest:1secondmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputVladisplanningtoholdm......
  • Codeforces Round 951 (Div. 2)
    A.GuesstheMaximum题意:给定一个数组,求一个k值,k满足对于任意的这个数组的区间的最大值max,k<max。求满足条件的最大k。思路:只考虑长度为2的区间即可。参与到比较中的数值一定是两个数中的大数,从所有大数中选出最小的一个即可。总结:赛时很快就A掉了,但是思考的不够细节,思维太......
  • codeforces round 961题解(A、B、C)
    A.GuesstheMaximum因为\(i<j\),所以所有的\([i,j]\)区间中都至少包含两个相邻元素,所以只要求出所有相邻元素中较大值的最小值即可。intn;inta[N];voidsolve(){cin>>n;intmin_v=1e9+1;for(inti=1;i<=n;i++){cin>>a[i];......
  • ICS TRIPLEX T8800C PD8800 PCB130100 数字输入模块
    T8800CPD8800PCB130100应用领域包括:化学工业纸张制造电力生成石油行业制造业电力行业化学行业等需要自动化控制的工业生产过程。T8800CPD8800PCB130100可以集成到自动化控制系统中,与其他设备和系统协同工作,以提高生产效率、降低能源消耗和减少劳动成本。它还可以设置每......