首页 > TAG信息列表 > ATcoder

AtCoder Beginner Contest 261 E

E - Many Operations 我们发现这个的位运算的顺序是不可以改变的 那我们就不能把后面的结果先算出来做 那怎么办呢 我们考虑数据范围给的是2的30次方 我们考虑拆位 我们可以发现 位数上仅有0/1 两种状态 30位 N是2e5 好像可以dp 我们就由此设置dp[i][j][k]为当前第j位为i(0/1)做前k

Atcoder Grand Contest 010 题解

A 题意 给 \(n\) 个数的集合,每次可以合并奇偶性相同的 \(x,y\),问最后能不能合并至只剩一个数。 \(n\le 2e5\)。 观察 奇偶分类。 分析 偶数直接合并成 1 个,奇数 + 奇数合并为 \(\lfloor\dfrac{t}{2}\rfloor\) 个偶数,剩余 \(t\bmod 2\) 个奇数。\(t\) 为集合中奇数的个数。如果有

AtCoder Regular Contest 148 A - mod M

题面 You are given a sequence \(A = (A_1, A_2, ..., A_N)\). You may perform the following operation exactly once. Choose an integer \(M\) at least \(2\). Then, for every integer \(i\) (\(1 \leq i \leq N\)), replace \(A_i\) with the remainder w

AtCoder Regular Contest 148 B - dp

题面 For a string \(T\) of length \(L\) consisting of d and p, let \(f(T)\) be \(T\) rotated \(180\) degrees. More formally, let \(f(T)\) be the string that satisfies the following conditions. \(f(T)\) is a string of length \(L\) consisting

AtCoder Regular Contest 147

Problem A 题目大意:由N个正整数组成的序列,我们可以从中取出任意长短序列进行如下操作:序列中(最大值maxn%最小值minn = A),如果A为0则删除maxn,否则用A替换,询问要使得整个序列最后只剩下1,至少需要多少步操作; 思路:We can prove that, no matter how you choose i,ji,j in the oper

AtCoder做题记录

AtCoder大乱炖 AtCoder乱做 AtCoder 随便草 ARC147 ARC147C 发现这个式子当所有 \(x_i\) 趋近于某一个值时答案比较优,于是可以发现这是一个近似单谷函数,用二分 + 随机化/特判过掉就行。 令 \(\max_{i = 1}^n L_i = M\),\(\min_{i = 1}^n R_i = m\)。 \(M \leq m\) 显然 \(\forall

AtCoder Beginner Contest 267

E - Erasing Vertices 2 做法1 观察可得:对于某个时刻,贪心删当前代价最小的点肯定是最优的。 但是删一个点会减少相邻接的点的代价。然后就想到了堆,但是这个堆需要支持decrease-key操作。 decrease-key 这个操作std::priority_queue并不支持,但是其实二叉堆也能做到 \(O(\log n)\)。

AtCoder Beginner Contest 266 G,H

G 考虑先放G和B,此时共有\(C_{G+B}^{B}\)种方案。 然后选出\(k\)个G,在前面放上\(R\),共有\(C_{G}^{k}\)种方案。 最后我们放剩下的\(R-K\)个R,考虑目前哪些区间内部可以放一段连续的\(R\)。可以发现,单独G的后面,以及B的前后,RG的前后是可以放的,总共是\(B-k+1\)个区间内可以放\(R\)。那

AtCoder Beginner Contest 266

比赛链接: https://atcoder.jp/contests/abc266 C - Convex Quadrilateral 题意: 平面图上有一个四边形,按照逆时针顺序给定四个点的坐标,判断四边形是不是凸的。 思路: 求两条临边的向量积是不是 > 0 即可。 代码: #include <bits/stdc++.h> using namespace std; int main(){ ios::sy

AtCoder Beginner Contest 265(D-E)

D - Iroha and Haiku (New ABC Edition) 题意: 找一个最少含有三个点的区间,将区间分成三块,三块的和分别为p,q,r,问是否存在这样的区间 题解:先预处理一遍前缀和,和每一个前缀和出现的位置,然后从前往后遍历,每次遍历当前位置的前缀和,如果当前位置的前缀和>=(p+q+r),那么就有可能存在符

AtCoder Beginner Contest 266 题解

只有 ABCDEFG 的题解。 A 模拟。 代码 void mian() { string s; cin >> s; int pos = int(s.size()) / 2; cout << s[pos] << endl; } B 模拟,注意 long long。 代码 void mian() { ll x; scanf("%lld", &x); const int P = 998244353; print

AtCoder Beginner Contest 266 D(DP)

…… 题面 Takahashi 要抓 Snuke。好狠心的 Takahashi 呀(bushi Snuke 有 5 个洞(,在 $ 0m, 1m, 2m, 3m, 4m $ 处。 Takahashi 开始在 $ 0m $ 处,每秒他能走 $ 1m $。 第 $ i $ 条 Snuke 会在第 $ T_i $ 秒出现在 $ X_i m $ 的洞,还有一个数值 $ A_i $。 求 Takahashi 能抓住的 Snuke

AtCoder Beginner Contest 266 A-D

AtCoder Beginner Contest 266 https://atcoder.jp/contests/abc266 EF 待补 A - Middle Letter 输出字符串最中间的那个字母 #include <bits/stdc++.h> using namespace std; int main () { string s; cin >> s; cout << s[(s.size()+1)/2-1]; } B - Modul

Atcoder ABC 266 EF

E 题目大意 有一个游戏,你可以玩\(n\)次,每次投一个骰子,若数字为\(X\),则: 若这把是第\(n\)把,那么你的分数为\(X\),游戏结束 否则,你可以选择继续游戏,或者立刻停止游戏,分数为\(X\),游戏结束 求最大的得分期望。 \(n \le 100\)(???) Solution 设\(f(d,x)\)为第\(d\)次游戏,骰子数为\(x\)

AtCoder Beginner Contest 265

AtCoder Beginner Contest 265 https://atcoder.jp/contests/abc265 A - Apple 有两种购买策略:\(x\) 元买一个苹果 or \(y\) 元买三个苹果,问买 \(n\) 个苹果最少要花多少钱 #include <bits/stdc++.h> using namespace std; int main () { int x, y, n; cin >> x >> y >

atcoder

\(ARC143\) A 给定三个整数,一次可以将两个数或三个数减一,问最少几步能减完。 设一开始三个数为 \(A,B,C(A\leq B\leq C)\),如果 \(A+B<C\),那么说明一定是无法满足条件的,因为 \(C\) 至多被减掉 \((A+B)\),此时 \(C-A-B>0\)。 如果 \(A+B=C\),那么很显然答案就是 \(C\)。 如果 \(A+

AtCoder-abc265_e Warp

Warp dp 状态优化 一开始想到的状态为:\(dp[i][x][y]\),第 \(i\) 步走到 \((x,y)\) 的方案数,但是发现状态转移非常难写,原因是坐标计算非常大 后来可以优化一下 \(dp\) 的状态:\(dp[i][j][k]\) 表示第 \(1,2,3\) 个方向走了 \(i,j,k\) 步 的方案数 这样就可以确定好所在的坐标,然后进行

AtCoder Grand Contest 058 部分题目不简要题解

从这里开始 比赛目录 Problem A Make it Zigzag   考虑使 $1, 3, 5, 7, \cdots, 2n - 3$ 这些位置后三个中的最大值在中间,最后再处理一下最后两个位置就行了。 Code #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; int n; int a[N]; vector<in

[题解] Atcoder Regular Contest ARC 146 A B C D 题解

点我看题 A - Three Cards 先把所有数按位数从多到少排序,答案的位数一定等于位数最多的三个数的位数之和\(tot\)。对于每个i,把有i位的数排序,并记录每个i的排序结果。最后枚举答案中三个数最靠前的数\(a_i\),然后枚举第二个数的长度\(lenj\),取长度为lenj的数中最大的。如果这个最大

AtCoder Beginner Contest 258

A - When? 问21:00后的第k分钟的时间 #include<bits/stdc++.h> using namespace std; const int N = 2e5+5; int n , a[N] , cnt , k; int32_t main(){ int n , h = 21 , m = 0; cin >> n; m += n; h += m / 60 ; m %= 60; printf("%02d:%02d\n" , h ,

Atcoder ABC169

A   直接输出\(a × b\)即可 int a, b; std::cin >> a >> b; std::cout << a * b << "\n"; B   将所有的\(N\)个数乘起来看是不是大于\(10 ^ {18}\),很明显会爆\(long\ long\)而用高精度的话也太麻烦了,所以可以考虑用\(\_\_ int128\_ t\),但也有可能会出现最后一

Atcoder Grand Contest 025 E - Walking on a Tree(欧拉回路)

Atcoder 题面传送门 打个表发现答案等于每条边被覆盖的次数与 \(2\) 取 min 之和,考虑如何构造这个上界。 首先考虑树是以 \(1\) 为中心的菊花图,且任意 \(A_i,B_i\ne 1\) 的做法:我们考虑在 \(A_i,B_i\) 之间连边。那么发现限制等价于,对每条边定向使得每个度 \(\ge 2\) 的点至少有一

【杂题乱写】AtCoder dp 26题

AtCoder dp 26题 原比赛链接 洛谷题单链接 A - Frog 1 题目已然给出了转移方程,设 \(dp_i\) 为到第 \(i\) 块石头的最小代价。 转移方程: \[dp_i=\min(dp_{i-1}+|h_i-h_{i-1}|,dp_{i-2}+|h_i-h_{i-2}|) \]时间复杂度:\(O(n)\) 点击查看代码 int n; int h[maxn],dp[maxn]; int main()

AtCoder Beginner Contest 264

比赛链接 AtCoder Beginner Contest 264 E.Blackout 2 给出很多点(\(n+m\leq 2\times 10^5\)),有发电站和城市,以及很多边(\(e\leq 5\times 10^5\)),有 \(q\) 次删边操作,求每次操作后有电的城市数量 解题思路 并查集 离线逆序处理,即只考虑建边操作,用并查集维护有电城市的信息即可 时

AtCoder Beginner Contest 264

E - Blackout 2 离线+并查集。 注意到只有删边操作,而删边操作其实不是很好维护。由于没有强制在线,所以可以离线一下然后逆序考虑,这样删边就变成了加边,这就用并查集就足以维护了。 AC代码 // Problem: E - Blackout 2 // Contest: AtCoder - freee Programming Contest 2022(AtCode