首页 > 其他分享 >Codeforces Round 889 (Div. 2) 题解

Codeforces Round 889 (Div. 2) 题解

时间:2023-07-30 14:33:31浏览次数:40  
标签:12 题解 889 负数 方块 操作 Div 复杂度 dp

\(6\) 题只做出来 \(1\) 题,损失惨重

A. Dalton the Teacher

显然,答案一定和最初的不满意人数有关,所以输入的时候统计一下

然后,将不满意的人的座位 每两个人交换一次 即可,交换次数就是答案

如果不满意人数是奇数,那么答案还要加 \(1\)

时间复杂度 \(O(n)\)(输入的复杂度)

B. Longest Divisors Interval

md考场上本来想到正解了,结果复杂度估错了,怕被扣 \(50\) 分所以就没写出来

结论:最长的合法区间一定是形如 \([1,r]\) 的

个人理解就是,因为越到后面的数字质因子越多,但是对于 \(n\) 来说质因子越少的数越优(就是越容易整除 \(n\))

所以直接从 \(1\) 开始枚举,计算出第一个无法整除 \(n\) 的数字 \(x\),答案就是 \(x-1\)

实际时间复杂度是 \(O(\log n)\),我考场上算成了 \(O(\sqrt{n})\),这应该是最坏情况下的复杂度,但这种情况的 \(n\) 似乎很少

C1. Dual (Easy Version) & C2. Dual (Hard Version)

直接说 Hard 版本,因为 Hard 版本的思路可以向下兼容到 Easy 版本

这题可以分类讨论

  1. 如果只有正数或 \(0\),显然可以直接做前缀和;只有负数或 \(0\) 就是做后缀和。这样的操作次数是 \(n-1\),最多操作 \(19\) 次

  2. 如果正数和负数都有,我们可以将其转化为上面的情况 \(1\)。因为 SPJ,不是求最小操作数,那么操作越多就越有利于我们的转化

    因为情况 \(1\) 就要用掉最多 \(19\) 次操作,Hard 版本限制我们最多用 \(31\) 次操作,这时就只剩下 \(12\) 次操作供我们进行转化

    继续考虑分类讨论

    ①如果 \(|\max_{i=1}^n a_i|>|\min_{i=1}^n a_i|\)(即正数最大值的绝对值大于负数最小值的绝对值),记 \(maxn=\max_{i=1}^n a_i\),我们可以把 \(maxn\) 加到所有的负数上,这样就可以转化成情况 \(1\)。但是,这样做要保证负数最多有 \(12\) 个(因为只能通过 \(12\) 次操作来转化)

    那么负数超过 \(12\) 个怎么办?我们发现,对于任何一个数,自己加自己的值其实就是 \(\times 2\)

    那么设对数字 \(x\) 进行自加 \(y\) 次的操作,则:\(x\leftarrow x\times 2^y\),而最大的负整数是 \(-1\),它只需要自加 \(5\) 次就会小于 \(-20\)(\(-1\times 2^5=-32\)),这时再把它加到剩余的正数上,就会用不超过 \(7\) 次的操作转化为情况 \(1\)(因为这时负数个数至少为 \(13\))

    ②反之亦然

所以这题就解决了

D. Earn or Unlock

考虑朴素做法,其实类似 0/1背包,令 \(dp_{i,j}\) 表示操作到第 \(i\) 个数字已经解锁了后面 \(j\) 张牌的情况是否成立,不难看出 \(j\) 超过 \(n\) 就没有意义了,所以我们只需枚举到 \(2n\) 即可,暴力 DP 复杂度为 \(O(n^2)\)

然后用 bitset 优化就可以把复杂度优化到 \(O(\frac{n^2}{w})\),可以卡过去

E. Expected Destruction

显然期望 DP,考场上写了个记搜结果样例都没过

如果直接讨论,因为题目主体是集合操作,所以会显得有些抽象;把集合转化成一个 \((n+1)\) 行,\((m+1)\) 列的矩阵,其中第 \(i\) 行,第 \(S_i\) 列处有一个方块,对这个方块进行操作就是让其移动到同行的第 \(S_i+1\) 列上,如果这一列上早已存在一个方块,就将后一个移动的方块消除;为了让到达第 \(m+1\) 列的方块也能直接消除,第 \(n+1\) 行,第 \(m+1\) 列上会存在一个方块

这样,问题就变成了一个移动方块的问题

所以,如果所有方块都在 m+1 列中,则该集合为空,即到达最终结果

考虑计算一对相邻方块,他们到达同一列的期望时间

设 \(dp_{i,j}\) 表示方块 \(x\) 在第 \(i\) 列且方块 \(x+1\) 在第 \(j\) 列时,这两个方块到达同一列的期望时间

边界:

  1. \(dp_{i,m+1}=m+1-i\)(因为只有方块 \(x\) 可以移动)

  2. \(dp_{i,i}=0\)(因为方块 \(x\) 已经与方块 \(x+1\) 同一列)

转移方程:

\(dp_{i,j}=\frac{dp_{i+1,j}+dp_{i,j+1}+1}{2}\)

答案就是 \(\sum_{i=1}^{n-1} dp_{S_i,S_{i+1}}\)

F. Michael and Hotel

交互题,题解看不懂

标签:12,题解,889,负数,方块,操作,Div,复杂度,dp
From: https://www.cnblogs.com/cantorsort2919/p/17591400.html

相关文章

  • 【题解】[ABC312G] Avoid Straight Line(容斥,树上统计,dfs)
    【题解】[ABC312G]AvoidStraightLine题目链接[ABC312G]AvoidStraightLine题意概述给定一棵\(n\)个节点的树,第\(i\)条边连接节点\(a_i\)和\(b_i\),要求找到满足以下条件的三元整数组\((i,j,k)\)的数量:\(1\lei<j<k\len\);对于树上任意一条简单路径,都不同时经......
  • CF1855B Longest Divisors Interval 题解
    题意:给定一个数\(n\),求一个连续区间\([l,r]\)使得\(n\)是区间内每个数的倍数,最大化这个区间的长度(多组数据)。思路:逆向思考一波,(如果一个数\(x\)不是\(n\)的因数,那么\(x\)的倍数不能在区间内。举个例子,比如$n$是13,3不是13的因数,\(3,6,9,12\)也就不可能出现......
  • Codeforces Round 889 (Div. 1) 题解
    A1.Dual(EasyVersion)https://codeforces.com/contest/1854/problem/A1题意给定一个长度为\(n\)的序列\(a_1,a_2,\dots,a_n\),你可以做以下操作:选定两个下标\(i,j(1\leqi,j\leqn)\),\(i,j\)可以相同,然后\(a_i\leftarrowa_{i}+a_j\)。要求构造一种操作......
  • Round 889 Div.2 意识流简记。
    太丢人了!D2D狂吃6发罚时,D2C都不会!不过无所谓,反正老年选手就是打着玩。D2A.答案为\(\lceil\frac{\sum_{i=1}^n[a_i=i]}{2}\rceil\)。D2B.我不会啊,猜了一下只需要枚举\(\le2000\)的,莫名其妙过了。D2C1/C2.不会。D2D.考虑动态维护前\(i\)个能凑出的数的集合,适时......
  • HDU 1312 Red and Black 题解
    //注意边界判断,调了好久#include<iostream>#include<queue>usingnamespacestd;#definecheck(x,y)(x<wx&&x>=0&&y<hy&&y>=0)structnode{intx,y;};charroom[23][23];intn,m,wx,hy,num;intdir[4][2]={......
  • Codeforces Round 105 (Div. 2) - D. Bag of mice DP 或 记忆化搜索 求概率
    D.Bagofmice题意待补充~思路可利用DP或者记忆化搜索求解本问题,实际上这两个方法等价。当\(w=0\)时必输当$w\ne0$但$b=0$时必赢剩下的情况,先考虑一个问题:赢的局面是怎么构成的?代码记忆化搜索//>>>Qiansui#include<bits/stdc++.h>#definelllong......
  • Xum题解
    Xum洛谷传送门题意:简化来说就是给你一个奇数\(x\),而你只能使用\(+\)或\(\bigoplus\),让你构造出一个包含\(1\)的数集。Analysis:首先为了得到\(1\),我们一般有两种思路,第一种是构造出\(n\)与\(n+1\)这种“出解情况”,这种思路考场寄掉了,先咕。那么来说说正解思路......
  • Sctf2023 Re 部分题解
    re是谁不复习计网和数据库写reSyclang给出两个文件一个是ir一个是编译器直接看ir即可拿vscode正则匹配替换relpace:(var\d+)\(@exp.([XLRXkey]+)(\[\d\])\)$1.$2$3#(\d+)$1<\+\d+>""(var\d+)\(@exp(.key\[\d+\])\)$1$2LABEL""GOTOgoto#!te......
  • 暑期竞赛配训 Day 1,本蒟蒻的第一篇题解qwq!
    洛谷P8725[蓝桥杯2020省AB3]画中漂流:-[1]读题:在梦境中,你踏上了一只木䇝,在江上漂流。根据对当地的了解,你知道在你下游D米处有一个峡谷,如果你向下游前进大于等于D米则必死无疑。现在你打响了急救电话,T秒后救援队会到达并将你救上岸。水流速度是1m/s,你现在有M点体力......
  • Educational Codeforces Round 152 (Rated for Div. 2)
    传送阵T1MorningSandwich题目大意\(t\)个测试,每个测试给三个正整数\(b,c,h\),分别表示面包和两种馅料的个数,每两个面包之间必须放一个馅料,问最多能摆几层?思路我们发现\(c,h\)所表示的两种馅料其实相差不大,所以我们可以分两种情况\(a>c+h\)因为开头总是面包,所以要+......