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相关推荐

  1. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  2. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  3. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

  4. 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这个时候两 ...

  5. 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, ...

  6. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

  7. Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环

    传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...

  8. 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& ...

  9. Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp

    传送门 文章目录 题意: 思路: 题意: 给你一个串,只包含前kkk个字母和???,定义fif_ifi​表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini ...

最新文章

  1. css 定位及遮罩层小技巧
  2. AndroidStudio-使用Translations Editor
  3. Spring boot的Thymeleaf使用
  4. WPF 实现展示反应盘、者试剂仓控件
  5. php与mysql连接程序_PHP与Mysql连接
  6. IPHONE 开发 7 -- Object C 02 字符串NSString 与 char* ,字符串的遍历,字符串的比较,截取与大小写改变,搜索字符串与替换字符串...
  7. [Node.js] mySQL数据库 -- 英雄管理系统(完善)
  8. iOS 11更新第6个开发者测试版,变化最大的竟然是App Store标识
  9. LeetCode刷题(17)
  10. 嵌入式设备中支持国密算法的方法
  11. 选择器、像素和百分比、颜色单位、文档流-css基础
  12. 机器学习分类问题中_训练数据类别不均衡怎么解决
  13. 依存句法分析器的简单实现
  14. 删除Navicat注册表
  15. 会员积分系统设计 1 内容说明
  16. 数据过多 如何实现页面滚动
  17. 2021-05-04 统计单词个数
  18. 什么是批标准化 (Batch Normalization)
  19. python下载电影_Python抓取电影天堂电影信息的代码
  20. 5.5 时间序列预测

热门文章

  1. RPF收付款核销与财务管理系统
  2. 排序算法--鸡尾酒排序
  3. java写脸萌_Linux环境下配置JDK,java环境
  4. 单载波频域均衡matlab,一种用于单载波频域均衡信道的低复杂度均衡方法与流程...
  5. 平面设计师必备设计资料总汇
  6. 智能物联网实验室落地 百度云与恩智浦、深圳大学打造AI+IoT高校生态
  7. android实现定位与目的地的导航
  8. Linux基本命令的使用(一)
  9. FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(五)
  10. 论文阅读 [TPAMI-2022] Densely Residual Laplacian Super-Resolution