Educational Codeforces Round #136 (Rated for Div. 2) A~C
A. Immobile Knight
题意:
给定一个 n×m 的棋盘,棋盘上有一个 “马”,可以在一个方向上移动两个单元格,在垂直方向上移动一个单元格。
问:将其放在哪个位置,才能使其无处可走。
如果满足条件,则输出坐标,否则输出任意一组坐标。
思路:
当棋盘横纵大小都小于等于 3 时,(2,2)必定不能走;大于 3 时,则任意位置都可以走;记得特判 1 即可。
代码如下:
#include <bits/stdc++.h>
#define ll long long
using namespace std;void solve()
{int n, m;cin >> n >> m;if (n == 1 || m == 1)cout << 1 << ' ' << 1 << endl;else cout << 2 << ' ' << 2 << endl;
}int main()
{int t;cin >> t;while (t--){solve();}return 0;
}
B. Array Recovery
题意:
给定一个数组 d,要求构造出一个非负数组 a,满足 di=∣ai−ai−1∣且 a0=0d_i \ =\ |a_i - a_{i - 1}|\ 且\ a_0 = 0di = ∣ai−ai−1∣ 且 a0=0 .
如果构造的 a 数组唯一则输出其元素,若不唯一则输出 -1.
思路:
根据 di=∣ai−ai−1∣d_i \ =\ |a_i - a_{i - 1}|di = ∣ai−ai−1∣ 还原数组即可。
要注意数组 a 中元素都是非负的。若 di<=ai−1d_i <= a_{i - 1}di<=ai−1 ,则 ai=ai−1+bi或ai−1−bia_i = a_{i - 1} + b_i或 a_{i - 1} - b_iai=ai−1+bi或ai−1−bi ,答案不唯一。
代码如下:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 110;int a[N], b[N];void solve()
{int n;cin >> n;for (int i = 1; i <= n; i++){cin >> b[i];}a[1] = b[1];for (int i = 2; i <= n; i++){if (b[i] <= a[i - 1] && b[i] != 0){cout << -1 << endl;return;}else {a[i] = b[i] + a[i - 1];}}for (int i = 1; i <= n; i++)cout << a[i] << ' ';cout << endl;
}int main()
{int t;cin >> t;while (t--){solve();}return 0;
}
C. Card Game
题意:
题意:现有 n ( n 是偶数)张卡片,点数分别为 1,2,…,n 。请将其分成两堆,每堆 n2\frac{n}{2}2n 张牌,让 Alice 和 Bob 进行游戏。
当前回合玩家:
- 选择一张卡片打出。
- 对方必须用点数大于该卡片的另一卡片接上。若无法接上,当前玩家获胜。
若无牌可出,则平局。
已知双方都足够聪明,请问有多少种发牌的方案,使得 Alice 获胜?同样地,输出最终Bob获胜和平局的发牌方案数。
思路:
参考 Educational Codeforces Round 136 (Rated for Div. 2) A~E - 知乎 (zhihu.com)
如果 Alice 拥有点数最大的牌
- Alice 获胜。只需要打出这张牌即可。设当前有 iii 张牌,这为 Alice 提供了 Ci−1i2−1C_{i - 1}^{\frac{i}{2} - 1}Ci−12i−1 种获胜方案
如果 Bob 拥有点数最大的牌
如果Bob拥有点数次大的牌
- Bob 获胜。Alice 无论出什么牌,都用次大的牌接上。轮到自己回合时,打出最大的牌,Alice 无法接上。
如果 Alice 拥有点数次大的牌
如果 Bob 拥有点数第三大的牌
- Bob 获胜。
如果 Alice 拥有点数第三大的牌
如果 Alice 拥有点数第四大的牌
- Alice 获胜。第一轮采用第四大的牌,Bob 采用最大的牌接上;Bob 选择一张牌打出,Alice 用第三大的牌接上。第二轮 Alice 采用第二大的牌,Bob 无法接上。设当前有 iii 张牌,这为 Alice 提供了 Ci−4i2−1C_{i - 4}^{\frac{i}{2} - 1}Ci−42i−1 种获胜方案
如果 Bob 拥有点数第四大的牌
- 双方将采取以下策略:
- Alice 采用第二大的牌,Bob 采用最大的牌接上;Bob 采用第四大的牌,Alice 采用第三大的牌接上。问题转化为只有 n−4n−4n−4 张牌的版本。
- 双方将采取以下策略:
综上,假设 f[i]
表示 iii 张牌的游戏中,使得 Alice 获胜的发牌方案数。则有:
fi=Ci−1i2−1+Ci−4i2−1+fi−4f_i = C_{i - 1}^{\frac{i}{2} - 1} + C_{i - 4}^{\frac{i}{2} - 1} + f_{i - 4}fi=Ci−12i−1+Ci−42i−1+fi−4
平局只有一种方案。Bob 获胜的方案可用总方案 Cii2C_i^{\frac{i}{2}}Ci2i 减去其他方案得到。
代码如下:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 65, mod = 998244353;int c[N][N];
int f[N];void solve()
{int n;cin >> n;//组合数常见写法,从i中选j个for (int i = 0; i < N; i++){for (int j = 0; j <= i; j++){if (!j) c[i][j] = 1;else c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;}}f[2] = 1;f[4] = 3;for (int i = 6; i <= n; i += 2){f[i] = ((c[i - 1][i / 2 - 1] + c[i - 4][i / 2 - 1]) % mod + f[i - 4]) % mod;}//每次都要取模,不然就会溢出cout << f[n] << ' ' << (c[n][n / 2] - f[n] - 1 + mod) % mod << ' ' << 1 << endl;
}int main()
{int t;cin >> t;while (t--){solve();}return 0;
}
Educational Codeforces Round #136 (Rated for Div. 2) A~C相关推荐
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- Educational Codeforces Round 37 (Rated for Div. 2) 1
Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...
- Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)
Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...
- Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)
Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...
- Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环
传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...
- Educational Codeforces Round 111 (Rated for Div. 2) D. Excellent Arrays 组合数学
传送门 文章目录 题意: 思路: 题意: 给你一个数组aia_iai,定义一个数组是好的当且仅当对于所有iii都有ai!=ia_i!=iai!=i.定义f(a)f(a)f(a)表示数组aaa中i& ...
- Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp
传送门 文章目录 题意: 思路: 题意: 给你一个串,只包含前kkk个字母和???,定义fif_ifi表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini ...
最新文章
- css 定位及遮罩层小技巧
- AndroidStudio-使用Translations Editor
- Spring boot的Thymeleaf使用
- WPF 实现展示反应盘、者试剂仓控件
- php与mysql连接程序_PHP与Mysql连接
- IPHONE 开发 7 -- Object C 02 字符串NSString 与 char* ,字符串的遍历,字符串的比较,截取与大小写改变,搜索字符串与替换字符串...
- [Node.js] mySQL数据库 -- 英雄管理系统(完善)
- iOS 11更新第6个开发者测试版,变化最大的竟然是App Store标识
- LeetCode刷题(17)
- 嵌入式设备中支持国密算法的方法
- 选择器、像素和百分比、颜色单位、文档流-css基础
- 机器学习分类问题中_训练数据类别不均衡怎么解决
- 依存句法分析器的简单实现
- 删除Navicat注册表
- 会员积分系统设计 1 内容说明
- 数据过多 如何实现页面滚动
- 2021-05-04 统计单词个数
- 什么是批标准化 (Batch Normalization)
- python下载电影_Python抓取电影天堂电影信息的代码
- 5.5 时间序列预测
热门文章
- RPF收付款核销与财务管理系统
- 排序算法--鸡尾酒排序
- java写脸萌_Linux环境下配置JDK,java环境
- 单载波频域均衡matlab,一种用于单载波频域均衡信道的低复杂度均衡方法与流程...
- 平面设计师必备设计资料总汇
- 智能物联网实验室落地 百度云与恩智浦、深圳大学打造AI+IoT高校生态
- android实现定位与目的地的导航
- Linux基本命令的使用(一)
- FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(五)
- 论文阅读 [TPAMI-2022] Densely Residual Laplacian Super-Resolution