首页 > 其他分享 >AtCoder Beginner Contest 285

AtCoder Beginner Contest 285

时间:2023-01-31 20:46:10浏览次数:62  
标签:AtCoder 26 code 进制 Beginner times 字符串 285 dp

C:abc285_brutmhyhiizp

题目大意

一串序列 A, B, ..., Z, AA, AB, ..., ZZ, AAA,... 给定一个字符串求在序列中的排名(保证存在)

思路

将每个 A 看作 \(1\),B 看作 \(2\),....,Z 看作 \(26\)。

那么就可以看作为一个 \(26\) 进制的数,将其转化为 \(10\) 进制即可。

举个例子:字符串 AB,转化为 \(26\) 进制数 \(12\),转化为 \(10\) 进制答案就为 \(2\times 26^0+1\times 26^1=28\)。

代码

code in here

D:Change Usernames

题目大意

给定 \(n\) 条边,由字符串 \(a\) 连向字符串 \(b\),判断最后图存不存在环。

思路

考虑字符串连边比较复杂,则将其映射成一个数值(点的编号),方便建边。

映射方式也很简单,记录变量 \(idx\),即为点的数量。每次输入一个字符串,如果此字符串没有在之前出现过,记录编号 ++idx

建完边后,只需要对图进行判环,通常做法是进行拓扑排序,如果最后队列中元素的数量为点的数量,那么就无环,反之。

代码

code in here

E:Work or Rest

思路

所有数组均在题目中表明或已说明。

第一次看没什么思路,但仔细观察会发现两个假期之间的贡献是可以直接计算出来的。

假设两个假期之间有 \(d\) 个工作日,且贡献为 \(B_i\):

  • 当 \(d=0\) 时,\(B_i=0\)

  • 当 \(d=1\) 时,\(B_i=A_1\)

  • 当 \(d=2\) 时,\(B_i=2\times A_1\)

  • 当 \(d=3\) 时,\(B_i=2\times A_1+A_2\)

  • 当 \(d=4\) 时,\(B_i=2\times A_1+2\times A_2\)

  • 当 \(d=5\) 时,\(B_i=2\times A_1+2\times A_2+A_2\)

  • $ \ ⋮$

也许你会疑问 \(B_i\) 咋算出来的,只需要每一个工作日的贡献加起来就行了。

然后总结一个规律:\(B_d=\sum^{d}_{i=1}A_{\frac{i+1}{2}}\),是下取整。\(B_d\) 可以直接前缀和计算。

接下来考虑 dp。

令 \(dp_{i,j}\) 表示前 \(i\) 天,且当前持续了 \(j\) 天工作日的最大贡献。

  • 第一种情况:若第 \(i+1\) 天选择继续工作,\(dp_{i,j}\) 转移到 \(dp_{i+1,j+1}\)。
  • 第二种情况:若第 \(i+1\) 天选择休息,那么 \(dp_{i,j}+B_j\) 转移到 \(dp_{i+1,0}\)。(如果看不懂方程式说明没理解到 \(B\) 数组的含义)

最后考虑求答案,但是不是很方便。当在解决循环中的问题时,通常在头部固定一个属性。这样,就简化了从尾部到头部的连接。对于这道题,只需要把假日定义在一周的第一天就可以了。

代码

code in here

F

标签:AtCoder,26,code,进制,Beginner,times,字符串,285,dp
From: https://www.cnblogs.com/stOtue/p/17080707.html

相关文章

  • (AtCoder Beginner Contest 287)(D 字符串前后缀合并匹配)(E Trie求最长公共前缀(LCP)
    D-MatchorNot(字符串前后缀合并匹配)题目大意:给定两个字符串S和T,对于每个x=0,1,2...|T|求S的子串(前x个字符和后|T|-x个字符在不改变顺序的情况下组成)是否与T相......
  • 【字典树】Atcoder Beginner Contest 287----E
    题目:E-Karuta(atcoder.jp)题解:这道题就是一个字典树求最长公共前缀的板子题。可以直接交板子。但我在翻题解的时候发现了另一种思路,就是将字符串按字典序排列后,每一个......
  • AtCoder Beginner Contest 287 解题报告
    AtCoderBeginnerContest287解题报告\(\text{ByDaiRuiChen007}\)ContestLinkA.Majority用map分别统计两种字符串出现的次数并与\(\left\lfloor\dfracn2\righ......
  • AtCoder Beginner Contest 287
    A-Majority(abc287a)题目大意给定\(n\)个人对某个提案的意见,问大多数意见是支持还是反对解题思路统计比较即可。神奇的代码#include<bits/stdc++.h>usingnam......
  • AtCoder Beginner Contest 287
    纯纯手速场C首先这张图必须是一棵树,必有\(M=N-1\)。接下来只需求出树的直径,判断其长度(边数)是否为\(N-1\)即可。https://atcoder.jp/contests/abc287/submissions/3......
  • Atcoder Beginner Contest 287
    赛时吃了三个法师,不过问题不大。赛时AB简单字符串处理。C中需要满足:\(m=n-1\)只有两个度数为\(1\)的点,剩下点的度数都为\(2\)。记得判连通!!D根据题目要求观......
  • AtCoder Beginner Contest 130
    AtCoderBeginnerContest130https://atcoder.jp/contests/abc130补补之前的A-Rounding#include<bits/stdc++.h>usingnamespacestd;intmain(){inta......
  • Atcoder ABC244E - King Bombee 题解
    原题:AtcoderABC244E-KingBombee题意给你一张图,从\(S\)到\(T\),经过\(k\)条边,经过\(X\)号点偶数次的方案数。做法设\(f_{i,j,k}\)表示经过\(i\)条边,......
  • AtCoder Beginner Contest 159
    A-TheNumberofEvenPairs相加为偶数只有偶加偶和奇加奇两种情况,其实就是在\(n\)个数中取两个(\(C\binom{2}{n}\)),在\(m\)个数中取两个(\(C\binom{2}{m}\))。B-String......
  • AtCoder Beginner Contest 126
    AtCoderBeginnerContest126https://atcoder.jp/contests/abc126A-ChangingaCharacter#include<bits/stdc++.h>usingnamespacestd;intmain(){int......