首页 > 其他分享 >【做题记录】Codeforces Round 943 (Div. 3)/CF1968A-F

【做题记录】Codeforces Round 943 (Div. 3)/CF1968A-F

时间:2024-10-15 18:24:54浏览次数:5  
标签:CF1968A Codeforces 943 Round oplus Div

【做题记录】Codeforces Round 943 (Div. 3)/CF1968A-F

A

暴力枚举即可。

B

双指针枚举即可,能匹配就匹配。

C

考虑构造出 \(a[1]=1,a[i]=a[i-1]+x[i]\) 的数列,发现满足要求。

D

有个明显的结论,两人最终一定是在某个点上的。

于是从起点开始扫一遍,求出到每一个点的距离和路上的分数,最终时取个 \(\max\) 即可。

E

发现答案的的上界是 \(2n-1\),考虑构造出这个上界。

发现 \(n=1\) 时成立,\(n=2,3\) 时不成立,\(n=4\) 时成立,考虑 \(n>4\) 的情况。

考虑每个点的贡献。

第一个为 \(1\),第二个为 \(1\)。

那么存在一种构造将 \((1,1),(1,2)\) 覆盖,然后填上对角线从 \((3,3)\) 开始,但是发现这样只是 \(2n-2\),还少了 \(1\)

那么考虑构造 \(4\) 个点,使得它们符合题意,这里给的是:

\((1,1),(1,2),(1,4),(5,2)\),剩下的就是从 \((5,5)\) 开始填好对角线即可。

F

发现可行的话一定可以表示为 \(x=x\) 或者 \(x=x=x\)。

记 \(f[i]=\oplus_{j=1}^ia[i]\)

对于前者,即是 \(\oplus_{i=l}^xa[i]=\oplus_{i=x+1}^ra[i]\),即 \(f[l-1]\oplus f[x]=f[x]\oplus f[r]\),即 \(f[l-1]=f[r]\)。

对于后者,即是 \(f[l-1]\oplus f[x]=f[x]\oplus f[y]=f[y]\oplus f[r]\),那么就有 \(f[l-1]=f[y],f[x]=f[r]\)

考虑找出 \(l\) 后面最后的 \(f[y]\) 和 最先的 \(f[x]\),看一下位置是否符合即可。

G

\(\dots\) 没学 SA 的我直接趋势。

Code

官方题解

标签:CF1968A,Codeforces,943,Round,oplus,Div
From: https://www.cnblogs.com/conti123/p/18468137

相关文章

  • Solution - Codeforces 1628D2 Game on Sum (Hard Version)
    首先来考虑Easy。注意到的是最后输出的答案要求是模意义下的,这说明对于实数二分的做法都已经用不了了。注意到\(n,m\le3000\)的数据范围,于是一个想法就是考虑DP之类的算法。考虑到B选了\(+/-\)实际上就代表着下一轮的\(m\)是否会\(-1\),于是可以设状态为\(f_{i......
  • 「题解」Educational Codeforces Round 170 (Rated for Div. 2)
    before我不想写作业呜呜。A.TwoScreensProblemA.TwoScreensSol&Code理解题意后发现使用复制的方法完成最长公共前缀即可。#include<bits/stdc++.h>typedeflonglongll;typedefstd::pair<int,int>pii;intT;std::strings1,s2;intmain(){scanf("%d"......
  • Educational Codeforces Round 170 (Rated for Div. 2) D.Attribute Checks (没有完全
    算法显然为dp状态设计\(dp_{i,j}\)表示在第\(i\)个获得能力点的地方,之前智慧能力值为\(j\),时的最大分数状态转移显然需要从\(dp_{i-1,j}\)转移而来枚举\(j\in[0,i)\)则有(注意取\(\max\)操作要与自己相比较)设第\(i-1\)个能力点到第\(i\)个能......
  • # Educational Codeforces Round 170 (Rated for Div. 2) 题解D
    EducationalCodeforcesRound170(RatedforDiv.2)题解DD.AttributeChecks链接:Problem-D-Codeforces思路:由于\(m\)还有\(abs(r[i])\)很小,考虑dp因为每个0能对后面多少个check做出贡献是固定的,所以预处理因为我们每次的0的个数是单调不减的所以,我们上一次......
  • Educational Codeforces Round 170 (Rated for Div. 2) C. New Games
    题意转化找一些相邻的数(其中相邻定义为递增序下任意相邻两数差\(\leq1\))求相邻数中,不同数字有\(k\)种,取到数字个数的最大值算法容易想到按顺序排列观察到有点像滑动窗口,考虑用队列维护一个出现不同数字次数为\(k\)的区间,再计算代码来自转载地址voidsolv......
  • Codeforces Educational Codeforces Round 170 (Rated for Div. 2)
    A-TwoScreens大意:    给两个字符串,每次在两个空子符串进行两种操作     1、字符串末尾加一个任意字母    2、一个字符串全部复制给另一个字符串    求得到给定的两个字符串的最小操作数思路:    看最前面有多少相等即可 ......
  • Educational Codeforces Round 170 (Rated for Div. 2)
    目录写在前面A签到B结论C双指针D模拟,差分,DP,结论E计数,DP,F写在最后写在前面比赛地址:https://codeforces.com/contest/2025。妈的不想上学省赛回来昏了一天了。A签到发现最优的操作是先在一个屏幕操作得到最长公共前缀,然后复制到另一方上,再分别操作两方。特判若无公共前......
  • Codeforces Round 978 (Div. 2) A-D1 题解
    我的同学还在VP,排名马上放声明:不要觉得有subtask的题目只做Easyversion没有意义,从这里也能捞很多分,况且有的时候并不是简单和难的区别,而是考不同的算法A.BustoPénjamo题意有一辆车上面有$r$排座位,每排有$2$个座位,现在共$n$个家庭出行坐公交车,每个家庭$a_i$......
  • codeforces round 977 (div.2) C2(访问set的第一个元素,观察数据规律-出现次序,用set记
    解题历程:我首先想到的是等效法,每一次操作可以等效为每次将第一个人抽出放入一组,后面的人往前移,而该组的人就是可以任意放置的人,当b中后面再出现与前一个相同的人时,就不进行操作,当b中出现不同的人时,就看看这组中有没有这个人,有的话就下一个循环,没有的话就看看这个新的人是否按a中......
  • Codeforces Round 899 (Div. 2)题解记录
    题目链接:https://codeforces.com/contest/1882A.IncreasingSequence从1开始慢慢和\(a[i]\)的所有值比较,注意最后一个位置特判下#include<iostream>#include<string.h>#include<map>#include<vector>#include<set>#include<unordered_set>#include<......