首页 > 其他分享 >Codeforces

Codeforces

时间:2024-07-21 13:07:26浏览次数:7  
标签:对于 位置 Codeforces 给定 数组 操作 dp

Round 959

A

给定 \(n*m\) 数组 \(a\),$ 1\le a_i\le n*m$ 并且两两不同,问是否存在数组 \(b\),也使用这些元素,并且每个位置的值都与 \(a\) 不同。

\(1*1\) 数组特判,其他循环移位。

B

给定01串s和t,可以对s任意次执行以下操作:选择l, r,将l,r异或等长前缀,问s和t是否能相等

对于s和t第一个不同的位置,看是否在这及这个位置之前出现过1,出现就可以随便修改,因为0不会影响异或结果,可以一直用这单独的出现1去操作s字符串

C

给定一个数组和一个值x,问有多少个区间满足:起始为0,从l,r每过一个位置加上这个值,若加上这个值后大于x就归0,最后结果不为0的区间。

前缀和处理,从后往前dp,找到每一个位置比他大x值的位置,这个点的dp值就等于那个点的dp值加一。最后用所有可能减去所有dp值即可。(dp值其实就是以这个点为左端点不能选的右端点)

D

给定一个数组a,长度为n,进行 \(n-1\) 次操作,对于第x次操作,可以选择 \(|a_u-a_v|\) 整除x的两个点建边,问最后能否建为连通图

对于第x次操作,一定有x+1个块需要连接,考虑对x取余值相等的两个点可以建边,根据鸽巢原理,x+1个块放到x个余数里,一定会有两个数相等,所以x从大到小倒序建边,之后反转输出即可。

E

给定n颗有根树,每次可以删除一个树的一个子树,并将结果或上删去的点数,问结果最大为多少。

首先对于任意个树进行或运算,都不会大于这些数的和。并且对于每颗数,我们可以一直只删一个节点来获得自己所需要的值。所以贪心的考虑对于n个树的大小,从高到低每一位进行判断,这一位为1且答案这一位为0就或上这个树,答案这一位为0,就把所有更低位或上1,就能获得最大值。

标签:对于,位置,Codeforces,给定,数组,操作,dp
From: https://www.cnblogs.com/rxzfn/p/18314368

相关文章

  • Codeforces Round 960 (Div. 2) A - D
    link好图好图qwq这次也是终于装上插件codeforcesbetter!了,妈妈再也不用担心我的英语啦A-SubmissionBaitA先手,B后手,优先往奇偶性的方向想一开始我只是单纯考虑A总是选最大值的数的奇偶性,样例过了?交上去发现wa2然后恼...瞎搞了个33344,发现A可以先选3......
  • 题解:Codeforces Round 960 (Div. 2) B
    B.ArrayCrafttimelimitpertest:1secondmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputForanarray\(b\)ofsize\(m\),wedefine:themaximumprefixpositionof\(b\)isthesmallestindex\(i\)thatsat......
  • Codeforces Round 960 (Div.2) 补题
    A非常容易观察到性质,注意Alice为先手,发现当\(a_{\max}\)的个数为奇数时显然能win,但如果\(a_{\max}\)的个数为偶数且有一个数具有奇数个可以作为跳板,那么也能win,否则就lose。B结论:\(presum_x\geq2+presum_{y-1}\geq2+\min{presum_i}\geq1+\max{presum_i}......
  • 题解:Codeforces Round 960 (Div. 2) A
    A.SubmissionBaittimelimitpertest:1secondmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputAliceandBobareplayingagameinanarray\(a\)ofsize\(n\).Theytaketurnstodooperations,withAlicestarting......
  • Codeforces Round 960 (Div. 2) 补题记录(A~D)
    打的稀烂,但是还是上分了(A考虑对值域做一个后缀和。若某一个后缀和的值是奇数那么先手就可以获胜。否则就不可以获胜。(我才不会告诉你我这题吃了一次罚时的)#pragmaGCCoptimize(3)#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intmysqrt(intx){......
  • Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
    A.给定n*m的矩阵a,构造一个同样大小的矩阵b使得[1,n*m]都出现一次,且b和a在任意位置上都不相等。特判完无解后循环移位即可。#include<bits/stdc++.h>usingnamespacestd;inta[12][12];voidsolve(){ intn,m; cin>>n>>m; for(inti=1;i<=n;i++) for(intj=1;j<=m;j++)......
  • CodeForces Round #959 sponsored by NEAR (Div. 1 + Div. 2) 补题记录(A~E)
    简单场.pngA若\(n\timesm=1\)则显然无解。否则因为\(a\)矩阵是一个\(n\timesm\)的排列,所以说只需要让其循环右移一位即可。时间复杂度\(O(nm)\)。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=500100;inta[233][233];sign......
  • 题解 Codeforces 1994H Fortnite
    首先第一次询问肯定是问\(\texttt{aa}\),答案减去\(1\)得到基数\(p\)。然后我们随意询问一个真实Hash值(取模之前)\(X\)大于模数\(m\)的字符串,例如\(s=\texttt{zzz}\cdots\texttt{zzz}\)(\(50\)个\(\textttz\))。设它取模得到的Hash值是\(a\)。考虑正整数\(1\leqb......
  • CodeForces - 1139D
    题目大意序列每次随机添加一个\([1,m]\)的整数,直到序列\(gcd=1\)停止,求期望操作次数。分析模拟过程发现只关心整个序列的\(gcd\)与下一次会添加什么,那么根据期望\(dp\)套路可得状态\(f_{i}\)表示当前序列\(gcd=i\),期望还操作多少次使得\(gcd=1\)。考虑枚举下一个......
  • Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
    A直接速通就好了,我第一眼看的时候以为是整个数组可以有重复的数字,后面发现是保证没有的,所以直接随便交换一下位置就结束了。B,很经典的CF题,随便推导一下就能够发现,如果我想要一个位置能够发生变化,那么唯一的要求就是他以及他前面的位置有1出现过。而且完全不需要考虑为了一个数字......