ATCoder

AtCoder Grand Contest 027

A - Candy Distribution Again 从小到大贪心,可以发现一定是满足一个前缀,暴力判断就行了。 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=10 ......
AtCoder Contest Grand 027

AtCoder Grand Contest 026

A - Colorful Slimes 2 可以发现,对于连续的一段长度为 \(m\) 的相同的字符,我们可以花费 \(\lfloor \frac{m}{2}\rfloor\) 的代价将它改为符合要求的。 #include<iostream> #include<cstdio> using names ......
AtCoder Contest Grand 026

AtCoder Grand Contest 025

A - Digits Sum 按题意模拟即可。 #include<iostream> #include<cstdio> using namespace std; const int INF=1061109567; int n; int calc(int x) { int res=0; while(x ......
AtCoder Contest Grand 025

AtCoder Grand Contest 024

A - Fairness 每次操作后 \(a_i-b_i=b_{i-1}-a_{i-1}\),对 \(k\) 的奇偶性讨论一下即可。 #include<iostream> #include<cstdio> using namespace std; int a,b,c; long long k; in ......
AtCoder Contest Grand 024

AtCoder Grand Contest 023

A - Zero-Sum Ranges 令 \(s_n=\sum\limits_{i=1}^n a_i\),相当于找满足 \(l\le r,s_r-s_{l-1}\) 的点对 \((l,r)\) 的个数,直接搞就完事了。 #include<iostream> #include<cstdio> #in ......
AtCoder Contest Grand 023

AtCoder Grand Contest 022

A - Diverse Word 如果至少有一个字符没有出现过,只要在原字符串后面加入一个没有出现过的字符中最小的那个字符就好了。 如果所有字符都出现过,找到一个尽量靠后的位置 \(i\in [1,n)\),使得 \(s_i\lt s_{i+1}\),最优字符串将 \(s_i\) 换成 \([i+1 ......
AtCoder Contest Grand 022

AtCoder Grand Contest 021

A - Digit Sum 2 要么是 \(n\) 要么是 \(n\) 的第一位后面加上若干个 \(9\)。 #include<iostream> #include<cstdio> #include<cmath> using namespace std; long long n; int calc( ......
AtCoder Contest Grand 021

AtCoder Grand Contest 041

A - Table Tennis Training 如果 \(n\) 为偶数,一个 \(+1\) 一个 \(-1\) 即可。 如果 \(n\) 为奇数,那么肯定有一个先到了 \(1\) 或 \(n\),然后再 \(+1,-1\),取个较小值即可。 代码: #include<iostream> #in ......
AtCoder Contest Grand 041

AtCoder Grand Contest 040

A - >< 将所有的连续段缩起来,如果这个区间为 <,则左端点为 \(0\),依次递增;如果这个区间为 >,则右端点为 \(0\),分界点取个左右的 \(\max\) 就好了。 #include<iostream> #include<cstdio> #include<cstring> using ......
AtCoder Contest Grand 040

AtCoder Grand Contest 039

A - Connection and Disconnection 对于连续的一段连续的长度为 \(L\) 的段,至少需要 \(\frac{L}{2}\) 次操作。判下头尾相等的情况,实现时注意细节即可。 #include<iostream> #include<cstdio> #include<cst ......
AtCoder Contest Grand 039

AtCoder Grand Contest 037

A - Dividing a String 可以发现,划分后的子串的长度不可能大于 \(2\)。令 \(f_{i,1/2}\) 表示到第 \(i\) 位,当前位置划分的子串长度为 \(1/2\) 的最大的 \(K\),转移枚举一下 \(i-1,i-2\) 即可。 #include<iostream> ......
AtCoder Contest Grand 037

AtCoder Grand Contest 036

A - Triangle 考虑 \(x_1,y_1\) 选原点,构造另外两个点。考虑叉积的形式,可以得出: \[x_2y_3+x_3y_2=S \]令 \(x_2=y_3=\lceil \sqrt S\rceil\),令 \(t=S-x_2y_3\),暴力枚举 \(t\) 的因数即可。 #inclu ......
AtCoder Contest Grand 036

AtCoder Grand Contest 035

A - XOR Circle 可以发现,相邻三个数的异或和一定为 \(0\)。如果三个字符已经确定了,那么整个字符串就已经确定为这三个字符构成,且序列唯一。 如果 \(n\bmod 3\ne 0\),显然无解。 如果字符集的大小大于 \(3\),显然无解。 如果字符集的大小等于 \(3\),只有在这 ......
AtCoder Contest Grand 035

AtCoder Grand Contest 034

Kenken Race 可以分成两种情况: 当 \(A\leq B\leq C\leq D\) 时,先让 \(B\) 到 \(D\),在让 \(A\) 到 \(C\); 当 \(A\leq B\leq D\leq C\) 时,判断一下 \(B\to D\) 是否有三个连续的 .。 然后判断一下 \( ......
AtCoder Contest Grand 034

AtCoder Grand Contest 033

A - Darker and Darker 从 # 向外广搜即可。 #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; const int N=1005; const i ......
AtCoder Contest Grand 033

AtCoder Grand Contest 032

A - Limited Insertion 考虑从后往前做,插数变成了删数。可以发现,我们可以删去的只有 \(a_i=i\) 的数,如果有多个肯定删最后面的是最优的,因为这样影响到的数最少。每次扫一遍找出删什么数即可。 #include<iostream> #include<cstdio> usin ......
AtCoder Contest Grand 032

AtCoder Grand Contest 030

A - Poisonous Cookies 解毒的饼干肯定所有都吃,剩下的算一下最多能吃多少毒饼干就好了。 #include<iostream> #include<cstdio> using namespace std; int A,B,C; int main() { scanf("%d%d%d", ......
AtCoder Contest Grand 030

AtCoder Grand Contest 029

A - Irreversible operation 对于某个 W 的位置,它的贡献即为前面 B 的个数,直接搞就完事了。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N=2 ......
AtCoder Contest Grand 029

AtCoder Grand Contest 048

A - atcoder < S 枚举操作完的串 \(s\) 和 atcoder 相同的前缀长度,算出前面的前缀相同的代价加上当前这位大于 atcoder 中对应的那一位的代价即为达到当前状态的代价,取个最小值即可。 #include<iostream> #include<cstdio> #inclu ......
AtCoder Contest Grand 048

AtCoder Grand Contest 047

A - Integer Product 考虑将原来的数全部化为整数,乘上 \(10^9\),那么问题就变成了是否有两个数的乘积是 \(10^{18}\) 的倍数。考虑如果是 \(10^{18}\) 的倍数的话必然是 \(2^{18}\) 和 \(5^{18}\) 的倍数,那么分解出每个数的 \(2, ......
AtCoder Contest Grand 047

AtCoder Grand Contest 046

A - Takahashikun, The Strider 问题就是要你求 \(ax\equiv 0 \pmod{360}\) 中 \(a\) 的最小值。 答案就是 \(a=\frac{360}{\gcd(x,360)}\)。 代码: #include<iostream> #include<cstd ......
AtCoder Contest Grand 046

AtCoder Grand Contest 045

A - Xor Battle 可以发现,从后往前扫,遇到一个 \(1\) 找后面是否有若干个 \(0\) 的位置的 \(a_i\) 与当前位置的异或和相等,用线性基维护一下就好了。 代码: #include<iostream> #include<cstdio> #include<cstring> u ......
AtCoder Contest Grand 045

AtCoder Grand Contest 044

A - Pay to Win 不妨将操作倒过来考虑,问题就变成了每次除以 \(2,3,5\) 或者 \(+1,-1\),令 \(f_n\) 表示将 \(n\) 变成 \(0\) 的最小花费,然后记忆化搜索即可,可以证明复杂度是对的。 代码: #include<iostream> #include<c ......
AtCoder Contest Grand 044

AtCoder Grand Contest 043

A - Range Flip Find Route 可以发现,一条路径的最小操作数等于路径上有多少 # 的块,令 \(f_{i,j}\) 表示到 \((i,j)\) 的最小操作次数,直接 DP 就行了。 注意路径上一个 \(1\) 的块会被算两次,需要除以 \(2\)。 #include<iostr ......
AtCoder Contest Grand 043

AtCoder Beginner Contest 318

AtCoder Beginner Contest 318 A - Full Moon (atcoder.jp) 以\(M\)为首项,\(P\)为公差,看\(1 \sim N\)里包含了多少项的个数 #include<bits/stdc++.h> using i64 = long long; usin ......
Beginner AtCoder Contest 318

AtCoder Regular Contest 165

Preface 这场前三题是上周四写的,今天课有点多本来想着把最近两场CF的博客先写下的 但后面发现还有CCLCC的杂谈没写,写完发现由于晚上要上课没时间了,只能先把这场先写一下 A - Sum equals LCM 设\(n=\prod_{i=1}^k p_i^{c_i}\),不难发现令\(A_1 ......
AtCoder Regular Contest 165

题解 AtCoder Beginner Contest 268 A~H

RobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinChenRobinC... ......
题解 Beginner AtCoder Contest 268

【题解】AtCoder-ABC321

AtCoder-ABC321A 321-like Checker 依题意判断。 提交记录:Submission - AtCoder AtCoder-ABC321B Cutoff 枚举 \(a_n\),依题意模拟即可。 提交记录:Submission - AtCoder AtCoder-ABC321C ......
题解 AtCoder-ABC AtCoder ABC 321

AtCoder Beginner Contest 321

A - 321-like Checker (abc321 A) 题目大意 给定一个数,问从高位到低位,数字是不是递减的。 解题思路 可以以字符串读入,然后依次判断即可。 神奇的代码 #include <bits/stdc++.h> using namespace std; using LL = lo ......
Beginner AtCoder Contest 321

AtCoder Grand Contest 046 E Permutation Cover

洛谷传送门 AtCoder 传送门 若 \(2\min\limits_{i = 1}^m a_i < \max\limits_{i = 1}^n a_i\) 就无解,因为根据排列的性质必然存在 \(yxxxy\) 或两端 \(xxyy\) 的情况,并且若这个条件不满足,就可以构造一组解。 考虑最小化 ......
Permutation AtCoder Contest Grand Cover