首页 > 其他分享 >Round 959

Round 959

时间:2024-07-19 09:53:38浏览次数:8  
标签:959 对于 位置 给定 数组 操作 Round dp

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,就能获得最大值。

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

相关文章

  • Educational Codeforces Round 139 (Rated for Div. 2)
    A.ExtremelyRound----------------------------------题解-------------------------------------因为数据范围只有1e6,我们只需要预处理出来1-1e6每个每个数包含多少个极圆整数就行了,然后t次查询就可以。这种预处理查询是面对多次询问时应该首先想到的。点击查看代码#incl......
  • SMU Summer 2024 Contest Round 4
    1.HandV原题链接:http://162.14.124.219/contest/1008/problem/B二进制枚举行列即可查看代码#include<bits/stdc++.h>#defineintlonglong#definePIIpair<int,int>usingnamespacestd;intn,m,k;chara[10][10];signedmain(){ios::sync_with_stdio(fals......
  • D. Round Subset
    原题链接题意选择\(k\)个数,使得\(\min(\sum2,\sum5)\)最大实施1.二维背包dp,使因数5和2达到某一值的最小选择个数,但是因子数量最多有3600,会T2.于是试着想能不能交换背包容量与价值?3.发现k最多只有200,好像可以细节最多有6000个五大约code#include<bits/st......
  • CodeForces Round 898 (div 4) H题解析
     CodeForcesRound898(div4)H.Mad City                           大致思路   对于有n条边和n个点,说明这个图里面只有一个环并且两人同时开始和结束移动,所以可以得到当Valeriu进入到这个图里面的唯一......
  • Codeforces Round 958 (Div. 2)
    题目链接:CodeforcesRound958(Div.2)总结:C因为常数没转\(longlong\)\(wa\)两发,难绷。A.SplittheMultisetfag:模拟Description:给定一个\(n\)和一个\(k\),每次可以将\(n\)减掉一个数\(u\),然后插入\(x\)个数,\(x<=k\),并且插入的数之和等于\(u\)。求将其转化为全\(1\)的最......
  • Codeforces Round 957 (Div. 3)
    知识点1.几个数相乘时,更小的数增加会比更大的数增加得到的乘积来得大题解A.OnlyPluses1.几个数相乘时,当更小的数增大时,得到的乘积会比更大的数增大来得大,也就是更小的数字权重会比较大,那么在5次+1的过程中,每次找最小值++即可#include<bits/stdc++.h>#defineintlonglon......
  • Codeforces Round 898 (Div. 4)(A~H)
    目录A.ShortSortB.GoodKidC.TargetPracticeD.1DEraserE.BuildinganAquariumF.MoneyTreesG.ABBCorBACBH.MadCityA.ShortSortProblem-A-Codeforces暴力枚举每个位置的交换即可。#include<iostream>#include<algorithm>#include<queue......
  • SMU Summer 2024 Contest Round 4
    AMadeUp思路:统计A的个数,O(1)统计cnt[bc]voidsolve(){intn;cin>>n;vector<int>cnt(n+1),b(n+1);for(inti=1;i<=n;++i){intx;cin>>x;cnt[x]++;}for(inti=1;i<=......
  • Codeforces Round 957 (Div. 3)
    题目链接:CodeforcesRound957(Div.3)总结:E不懂,F差一个set去重A.OnlyPlusesfag:枚举B.AngryMonkfag:模拟Solution:分裂的花费为\(a_i-1\),添加的花费为\(a_i\)。C.GorillaandPermutationfag:思维Solution:大于等于\(k\)的数,逆序放在最前面,小于等于\(m\)的数,从最后面......
  • Codeforces Round 958 (Div. 2)补题
    文章目录A题(拆分多集)B题(获得多数票)C题(固定OR的递增序列)A题(拆分多集) 本题在赛时卡的时间比较久,把这题想复杂了,导致WA了两次。后来看明白之后就是将n每次转换成k-1个1,到最后分不出来k-1个1直接一次就能分完,即结果加一;#include<bits/stdc++.h>#definein......