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

Codeforces Round 889 (Div. 1) 题解

时间:2023-07-30 11:44:40浏览次数:34  
标签:dots 20 题解 889 1854 codeforces leq Div 正数

A1. Dual (Easy Version)

https://codeforces.com/contest/1854/problem/A1

题意

给定一个长度为 \(n\) 的序列 \(a_1, a_2, \dots, a_n\),你可以做以下操作:

  • 选定两个下标 \(i, j(1 \leq i, j \leq n)\),\(i, j\) 可以相同,然后 \(a_i \leftarrow a_{i} + a_j\)。

要求构造一种操作方案,使得 \(a_1 \leq a_2 \leq \dots \leq a_n\),操作次数不得超过 \(\textbf{50}\)

\(1 \leq n \leq 20, -20 \leq a_i \leq 20\)。

题解

其实 \(50\) 次的限制很松。

首先如果没有正数,那么直接做一遍后缀和即可,次数 \((n - 1=)19\)。

如果有正数,那么随便选一个正数,然后不断自己加自己,直到大于一个 \(20\) 的数(代码里选的是 \(45\))。

然后让负数加上这个处理完的正数,做一遍前缀和即可,操作次数最多 \((6 + n - 1 + n - 1 = 2n + 4=)44\) 次。

https://codeforces.com/contest/1854/submission/216383173

A2. Dual (Hard Version)

https://codeforces.com/contest/1854/problem/A2

题意

给定一个长度为 \(n\) 的序列 \(a_1, a_2, \dots, a_n\),你可以做以下操作:

  • 选定两个下标 \(i, j(1 \leq i, j \leq n)\),\(i, j\) 可以相同,然后 \(a_i \leftarrow a_{i} + a_j\)。

要求构造一种操作方案,使得 \(a_1 \leq a_2 \leq \dots \leq a_n\),操作次数不得超过 \(\textbf{31}\)

\(1 \leq n \leq 20, -20 \leq a_i \leq 20\)。

题解

\(31\) 次操作刚好卡满。

首先前缀/后缀和最少需要 \((n - 1=)19\) 次。

还剩下 \(31 - 19 = 12\) 次。

分三种情况讨论(赛时就是没想到,寄在这了):

  • 如果都是 \(\geq 0\) 的数,直接做前缀和;如果都是 \(\leq 0\) 的数,直接做后缀和。

  • 如果正数的个数 \(\leq 7\),那么先将绝对值最大的负数自加 \(5\) 次(至多为 \(-32\)),再加到这些正数上,就可保证所有的数都是非正数了;如果负数的个数 \(\leq 7\),那么先将绝对值最大的正数自加 \(5\) 次(至少为 \(32\)),再加到这些负数上,就可保证所有的数都是非负数了。次数刚好是 \(7 + 5 + 19 = 31\) 次。

  • 否则正数和负数的个数都至少为 \(8\),所以正数和负数的个数最大值也只能取到 \(12\),用绝对值最大的加即可。次数也是 \(12 + 19 = 31\) 次。

https://codeforces.com/contest/1854/submission/216386326

B. Earn or Unlock

https://codeforces.com/contest/1854/problem/B

题意

有一个长度为 \(n\) 的序列 \(a_1, a_2, \dots, a_n\),一开始只有 \(a_1\) 是解锁的,其他的都是锁定的。你有一个动态的下标 \(x\),初始为 \(1\)。

你要重复做以下操作:

  • 如果 \(a_x\) 是锁定的,那么直接结束所有操作。

  • 解锁接下来 \(a_x\) 个数或将得分加上 \(a_x\)。

  • \(x \leftarrow x + 1\)。

求最大得分。

\(1 \leq n \leq 10^5, 0 \leq a_1, a_2, \dots, a_n \leq n\)。

题解

考虑暴力进行可行性 DP,设 \(f_{i, j}\) 表示现在考虑到 \(a_i\),解锁了前 \(j\) 个数是否可以实现,转移方程 \(f_{i, j} = f_{i - 1, j} \text{ OR } f_{i - 1, j - a_i}\)。

初始状态 \(f_{0, 1} = 1\),注意在转移完 \(f_i\) 的时候最后要将 \(f_{i, i}\) 赋值为 \(0\)!!!因为这样无法解锁 \(a_{i + 1}\),赛时就寄在这了。

很显然可以使用 bitset 优化,如果 \(f_{i, j} = 1\) 那么得分至少为 \(a_{1} + a_{2} + \dots + a_{i} - j + 1\),因为 \(f_{i, i + k}(k > 0)\) 会被后边的算到,所以不用在 \(i\) 考虑,只需要考虑 \(f_{i, i} = 1\) 的贡献即可。特别的,DP 到 \(n\) 的时候要考虑 \(f_{n, n \sim 2n}\)。

\(2n + 1\) 以上的就是无效的,因为这样一定可以减去几个数使得其 \(\leq 2n\)。

时间复杂度 \(O\left(\dfrac{n^2}{w}\right)\)。

https://codeforces.com/contest/1854/submission/216387677

标签:dots,20,题解,889,1854,codeforces,leq,Div,正数
From: https://www.cnblogs.com/RB16B/p/17591204.html

相关文章

  • 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\)因为开头总是面包,所以要+......
  • P9387 [THUPC 2023 决赛] 巧克力 题解
    这篇题解会只讲怎么dp,所以我们这里跳过博弈论的部分。Let'srephrasetheproblemstatementasfollows:给定\(n,m\),设\(x=1\oplus2\oplus\cdots\oplusn\oplusm\)。求有多少个有序三元组\((a,b,c)\)满足:\(a+b+c\len\)或\(a+b+c=m\)(如果都满足需要算两遍)。\((a+b......
  • Codeforces Round 888 (Div. 3)
    CodeforcesRound888(Div.3)T1​ 思路:直接模拟。T2​思路:首先记录原始数组的奇偶性,然后将奇数、偶数分为不同两组进行排序,然后再根据原数组的奇偶性按顺序填入奇数偶数,最后判断整个数组是否非递减。T3思路:我们已知开始在\(a_1\),最后在\(a_n\)。那么当\(a_1\ne......
  • Educational Codeforces Round 152 (Rated for Div. 2) 题解
    \(6\)题做出来\(3\)题,这一次的D题没能复刻上一次Round888Div.3最后几分钟AC的奇迹A.MorningSandwich大水题,5min时间4min都在翻译题面直接拿\(b\)和\(c+h\)进行比较分类讨论即可单次操作时间复杂度\(O(1)\)B.Monsters首先有一个特别显然、复杂度特别高的......