E. Arena 题目链接 题目大意: 有n个人,每人有ai点生命值(ai <= k),每次每人会对其他所有人造成1点伤害。 生命值低于1的会死亡,给出 n 和 k ,问有多少种情况会出现场上无人存活 输出答案总数%998244353 2 , 1, 1 和 1 , 1 , 2 被视为两种 思路: 这题直接求好像有点困难, 我们采取
Educational Codeforces Round 116 (Rated for Div. 2) A - AB Balance 分析: 思维题,只有 a b ab ab 两个字符,可以发现
A 2s Problem 给一个'a','b'组成的字符串 \(s\) ,每次修改可以把某个'a'改成'b'或把'b'改成'a',要求修改尽量少的次数使得 \(s\) 中 "ab"和"ba"子串的出现次数相等。输出修改后的 \(s\)。 Solution \(s\) 可以看作由若干"aa...a"和"b
Link 好! 上分了! 好吧讲正题啦(没切 D 真是太不爽了) A:AB Balance 题意:给出一个只包含 A B 的字符串 \(S\) ,要求用最小的步数使其变成合法。 合法:字符串 \(S\) 所包含的 AB 和 BA 个数相同。 考虑将 AB 视作 +1 , 将 BA 视作 -1 ,那么就是要求整串的和是 0 ,所以 合法 当且仅当 开头
目录 知识点:贪心,模拟题意思路代码 知识点:贪心,模拟 题目链接 题意 给定 k k k, b i
Educational Codeforces Round 116 (Rated for Div. 2) A. AB Balance 易得至多改一个位置。 然后枚举改哪个位置,特判不改。 对于一个字符串,每次扫一遍就可以算出ab和ba的个数。 B. Update Files 每一轮最大的增量会是这样变化的:1 2 4 8 ... k k k ... 前面倍增的轮数不会太多,直接
C. Bear and String Distance 简单题,直接从距离范围最宽广的字母开始选,每次贪心选最大的。 const int MAXN = 1e5 + 10; int n, k; char ss[MAXN]; struct E { char s, t; int id; } es[MAXN]; int dist(char x, char y) { return std::abs(x - y); } bool cmp1(E x, E y)
题意: 给你一个由n个整数a1, a2, …, an组成的数组。最初ax=1,所有其他元素都等于0。 你必须进行m次操作。在第i次操作中,你选择两个指数c和d,使li≤c,d≤ri,并交换ac和ad。 计算指数k的数量,以便有可能选择操作,使ak=1。 大概就是说通过m次操作,能把哪几个位置换成1,可以看成ax是被
A B 都是垃圾题,不说了。 C. The Labyrinth 和之前做过的某道题相似,用 DFS 确定一下每个位置属于哪个联通块,然后确定一下每个 * 周围有哪几个联通块,去重可以直接 std::set 实现。 const int MAXN = 1000 + 10; int n, m; int gid(int x, int y) { return m * (x - 1) + y; } int
(之前写在小号里了,现在大号找回来了,所以再搬回来) 一、算法分析 基本思路就是枚举,还有利用vector的一些小技巧。注意的点是,最后的枚举方式要有一个小优化,不能外层对k进行枚举,如果那样会超时,因为两层循环都是n。而是应该开一个res数组,以组为单位去维护res数组。 二、代码及注释
link D - Excellent Arrays 我们定义一个长度为 \(n\) 的整数序列 \(a\) 是好的仅当对于任意整数 \(i\in[1,n]\) ,都有 \(a_i\not=i\) 。 设 \(F(a)\) 等于满足 \(1\leq i<j\leq n,a_i+a_j=i+j\) 的 \((i,j)\) 对数。 我们定义一个长度为 \(n\) 的序列 \(a\) 是极好的,仅当: \(a\)
Codeforces Educational Round 114 A:Regular Bracket Sequences Description 给定 \(n\),构造 \(n\) 个不同的长度为 \(2n\) 的匹配括号序列。 多测。 限制:\(1\le t,n\le 50\) Solution 考虑对每个 \(i\),构造长度为 \(2i\) 的括号匹配序列和长度为 \(2(n-i)\) 的括号匹配序列。对
A. USB Driver 脑抽了居然升序排序。。愣了几秒才发现 一遍 AC。 const int MAXN = 100 + 10; int n, aa[MAXN]; int main() { std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; int m; cin >> m; rep (i, 1, n) cin >> aa[i]; st
B. Groups 思路: 只要找到是否有两天满足条件即可,我们可以这么分析,对于任意的两天,看这n组学生: 一天有课且另一天没课的记为cnt1 一天没课且另一天有课的记为cnt2 两天都有课的记为cnt3 两天都没课的记为cnt4 而两天都有课cnt3的可以放到cnt1中也可以放到cnt2中,我们只要满足cnt1+cnt
A 根据题面描述不难发现:若当前在第\(i\)列的某个空格上,只要第\(i+1\)列存在空格,就一定可以跳到这个空格上。只需要判断每行是否有空格子即可。 int n; char s[3][N]; int main() { int T=read(); while (T--) { n=read();int ans=1; rep(i,1,2) scan
题目链接 题意 对于 n 个长度为 5 的 01字符串, 你需要把这n个字符串分成数量相等的两组。并且在每一组中选择一个位置(0~4总共5个位置),使这一组的字符串在该位置全为 1 ,且两组所选位置不同。 分析 测试案例数 ( 1
第一题 算法:无 解决方法:暴力 解决思路:不存在有一列全是1就好 注意点:数组用char类型 #include <bits/stdc++.h> using namespace std; char cell[2][200]; int main() { int t; //freopen("in.txt","r",stdin); bool falg=true; for(cin>>t;t;t--) {
Link 贪心,但不是无脑贪心. 一开始想的是,从小到大对于每个数 x x x找到第一个大于等于 x + z
A 想咋构造咋构造 代码: #include <stdio.h> int main(){ int t; scanf("%d", &t); for (int i = 1; i <= t; i++){ int n; scanf("%d", &n); for (int j = 1; j <= n; j++){ for (int k = 1; k <= j; k++){ printf("
询问 \(n\mod 1+n\mod 2+n\mod 3+\cdots +n\mod m\) 对 \(10^9+7\) 取模的值. \(1\leq n,m\leq 10^{13}\) 考虑 \(\mathrm O(m)\) 地计算肯定是不可行的 . 是否可以和分解因数一样,只考虑 \(\mathrm O(\sqrt n)\) 之内的内容呢 ? 是可以的,观察可得对于 \(1\leq x\leq \sqrt n\) ,对
链接:link. 题意:给出一棵树,A初始在1,B初始在x,A B轮流移动,B先移动,每次移动可选择不动或移动到相邻节点,A想最小化移动次数,B想最大化移动次数,求问A追上B 的移动次数. 思路:分别计算AB到每个节点的距离d1,d2,如果d2<d1该点可到达。dfs int n,x; struct node { int to,
题意:一个\(2\)x\(n\)的矩阵,每个格子可以涂成黑色或者白色,现在问你全部涂完后,连通块个数为\(k\)个一共有多少方案数 题解:每一列总共有\(4\)种情况,白白,黑白,白黑,黑黑,设\(dp[i][j][k]\)表示第\(i\)列,涂第\(j\)种情况,涂完后连通块个数\(k\)的情况数,那么很容易从前一列的状态转移过
题目大意: 给你n行数字 每组数字按递增顺序给出 再给你m个禁止的序列 就是你不能按这些序列来选这n行的数字 问你除了禁止序列的顺序外每行选一个数字的最大值 思路: map+vector 感觉就是考察stl运用吧… 我们可以首先每行都选最后一个数字即最大的数字 然后如果这个是被禁止的
Educational Codeforces Round 114 (Rated for Div. 2) E. Coloring T11 D43 [传送门]( Problem - E - Codeforces (Unofficial mirror site, accelerated for Chinese users) ) 思路 (思路借鉴牛客群犇 观察到: 若第一行为 11000 或 1010110 这种有连续的两个 1 或 0 的串,那么
还是常规的过了A,B,C还是在D上卡了... D. The Strongest Build 简化题意:给定你n组东西,每组东西都有\(c_i\)个装备,每个装备有一个武力值\(a_{i,j}\),要求你从每一组中选出一个装备,使得总的装备的武力值最大。但有一些给定的方案是不能选的。 首先看到这个题的第一印象是只有\(m\)中方