首页 > 其他分享 >Atcoder Beginner Contest 326 (ABC326)

Atcoder Beginner Contest 326 (ABC326)

时间:2023-10-30 13:11:41浏览次数:33  
标签:10 le 奖励 机器人 ABC326 326 Atcoder id 技能

不知道为什么拖到现在,我是摆怪。

A. 2UP3DOWN

模拟,略。

B. 326-like Numbers

模拟,略。

C. Peak

双指针板子。

D. ABC Puzzle

基础 dfs。
但是赛时不知道为什么觉得状态数不会很少,于是写了一个巨大复杂的状压。这里粗略算算有效状态数:
仅考虑每行的限制,有 \(\binom{3}{5}=10\) 种选择填数位置的方法。又因为第一个数填什么是固定的,选定位置后只有 \(2\) 种不同填法。那么每行的有效状态数为 \(20\)。
也就是说总的状态数最多只有 \(20^5\),当然这里没有考虑列的限制,实际上合法状态远比这个少。所以直接 dfs 是能过的。

E. Revenge of "The Salary of AtCoder Inc."

设 \(f_i\) 表示游戏能进行到 \(x=i\) 的概率,则答案是 \(\sum a_i f_i\)。
观察到 \(x\) 在游戏过程中单调递增,则有转移 \(f_i=\frac{1}{n} \sum\limits_{j=1}^{i-1} f_j\)。

F. Robot Rotation

Description

有一个机器人位于坐标系原点 \((0,0)\),面向 \(x\) 轴正方向。
在每一秒开始前,你可以选择让这个机器人向左或向右旋转 \(90\) 度,不可以不转。接下来,机器人沿它面对的方向前进 \(a_i\) 个单位距离,\(i\) 为当前秒数。
给定总时间 \(N\),序列 \(a\) 和机器人最终的位置 \((X,Y)\)。请构造一个合法的操作序列(用 LR 表示每步操作的方向),或判断无解。

\(N\le 80,\,a_i\le 10^7,\,-10^9\le X,Y\le 10^9\)。

Solution

因为不能不转弯,可以发现机器人一定是横竖交替行走的。进一步观察,发现奇数秒机器人只改变 \(y\) 坐标,否则只改变 \(x\) 坐标。
那么 \(x,y\) 坐标是互不影响的,这启发我们把横纵坐标分开考虑。这里以横坐标为例,设序列 \(a\) 的所有偶数位组成序列 \(b\)。
问题转化为给一个序列 \(b\),可以自由选择每个 \(b_i\) 的正负号,问是否存在方案使 \(X=\sum b_i\)。
这看起来像是值域极大的 01 背包,显然不太可做。从数据范围的角度考虑问题,\(b\) 的长度至多只有 \(40\)。
考虑将序列 \(b\) 拆成前后两部分,则每一半只有 \(20\) 个数,对应着 \(2^{20}\) 种状态。我们求出前一半的所有状态存进 map,在枚举后一半状态为 \(x\) 时判断 \(X-x\) 是否在 map 中存在即可。
时间复杂度 \(O(\frac{n}{4}\times 2^{\frac{n}{4}})\)。

G. Unlock Achievement

完全没想到网络流(

Description

有 \(n\) 个技能,\(m\) 个成就。每个技能有一个等级,初始均为 \(1\)。
你可以用 \(c_i\) 块钱令技能 \(i\) 提升一个等级,该操作没有次数限制。
第 \(i\) 个成就达成的条件是对于 $\forall j\in [1,n],level_j \ge L_{i,j} $,其中 \(level_j\) 表示第 \(j\) 个技能的等级。达成成就 \(i\) 后,你会获得 \(a_i\) 元的奖励。注意这里奖励与成本是分开的,也就是说你不能用奖励的钱去提升等级。
请最大化获得的奖励与所需成本之差,并输出该值。

\(n,m\le 50,\, 1\le L_{i,j}\le 5,\, 1\le a_i,c_i\le 10^6\)。

Solution

考虑构造最小割模型。

因为 \(L_{i,j}\le 5\),把点 \(i\) 拆成 \(6\) 个点,分别为 \(id_{i,j}(j\in [1,6])\)。令成就 \(i\) 为点 \(bel_i\)。则进行如下的建图:

  • 连接源点 \(s\) 与 \(id_{i,6}\),容量为 \(\inf\)。
  • 连接 \(id_{i,j+1}\) 与 \(id_{i,j}\),容量为 \(c_i\times (j-1)\),割掉这条边则表示将技能 \(i\) 升级到 \(j\)。
  • 连接 \(id_{i,L_{j,i}}\) 与 \(bel_j\),容量为 \(\inf\)。
  • 连接 \(bel_i\) 与 \(t\),容量为 \(a_i\)。如果这条边被割掉,说明至少有一个技能的等级未达到该奖励的条件,不能获得奖励。

那么这个图的最小割就是成本与未获得的奖励之差,用总奖励减去最小割即为答案。

标签:10,le,奖励,机器人,ABC326,326,Atcoder,id,技能
From: https://www.cnblogs.com/ying-xue/p/abc326.html

相关文章

  • 题解 ABC326G【Unlock Achievement】
    题解ABC326G【UnlockAchievement】problem有\(n\)项属性,第\(j\)个属性的等级\(l_j\)初始为\(1\),每提升一级花费\(c_j\)的钱。又有\(m\)项成就,第\(i\)项成就要求对于所有\(1\leqj\leqn\),都要\(l_j\geqL_{i,j}\),如果满足所有要求,获得\(a_i\)的钱。求你最多......
  • 2023-2024-1 20231326 《计算机基础与程序设计》第五周周总结
    2023-2024-120231326《计算机基础与程序设计》第五周周总结目录2023-2024-120231326《计算机基础与程序设计》第五周周总结作业信息作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业的要求2022-2023-1计算机基础与程序设计第五周作业这......
  • AT_abc_326
    好久没打abc了,久违的rated一场比赛,结果被D创飞了。\(9\)分钟把ABC题切掉,然后看D题,觉得是个简单的模拟,错了\(5\)次,直接把我人整懵了,一看题目字符a,b,c只出现一次,我以为是字符a,b,c至少出现一次,妈妈生的。E求期望,有个很显然的东西,就是\(ans=\sum_{i=1}^{n}a_i\t......
  • ABC326
    此前也没有写一整场比赛题解的习惯,那就从现在开始吧。D:简单的一道题,直接搜就行了。代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;template<classT>boolchmax(T&a,constT&b){if(a<b){a=b;returntrue;}returnfalse;}template<c......
  • AtCoder Beginner Contest 326
    A-2UP3DOWN(abc326A)题目大意100楼层,一次可以上最多两层,或下最多三层。给定两楼层,问能否一次到达。解题思路比较大小,然后判断其差是是不是在\(2\)或\(3\)内即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){......
  • ABC326
    上次说我的写法low的人的AT号在这里!!(我又来提供low算法了。从D开始。T4我们把\(\text{A}\)看成\(1\),把\(\text{B}\)看成\(2\),把\(\text{C}\)看成\(3\)。那么就可以想到状压,然后把每一行和每一列的情况状态即可。#include<bits/stdc++.h>usingnamespacestd;......
  • AtCoder Beginner Contest 326 题解
    首先,\(\text{HappyBirthdaytome!}\)A-2UP3DOWN常规ABCA...//If,oneday,Ifinallymanagetomakemydreamsareality...//Iwonder,willyoustillbetherebymyside?#include<bits/stdc++.h>#defineIOSios::sync_with_stdio(false)#defineTI......
  • 【杂题乱写】AtCoder-ARC114
    AtCoder-ARC114_ANotcoprime\(50\)内的质数只有\(15\)个,可能的答案也就只有\(2^{15}\)个,直接枚举。提交记录:Submission-AtCoderAtCoder-ARC114_BSpecialSubsets就是\(i\)与\(f_i\)连边,每个连通块都是基环树,一定能剥叶子变成环,所以答案就是连通块非空子集个数。......
  • AtCoder Beginner Contest(abc) 310
    B-StrictlySuperior难度:⭐题目大意给定n个商品的价格,每个商品还有若干个属性,请问是否存在一个商品是另外一个商品的上位品;上位品的定义分两种,一是价格相同,但是商品A的属性不仅包括了商品B的属性,还比商品B多了至少一个属性;二是如果两商品的属性相同,但是......
  • AtCoder Beginner Contest 325
    感觉错失了上分机会A-Takahashisan(abc325A)题目大意给定姓和名,输出尊称,即姓+san。解题思路按照题意模拟即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_stdio(false);cin.tie(......