比赛链接


1487A. Arena

n 个 Hero,分别有 \(a_i\) 的初始等级。每次两个 Hero 战斗时:等级相同无影响,否则等级高的英雄等级+1。直到某个英雄等级到了 \(100^{500}\)游戏结束。问有多少个英雄最后可能获胜。

Solution

只要所有英雄等级不是相同,那么必有 \(n - b_0\)个 Hero 获胜(\(b_0 代表等级最低的个数\))

Code

int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
for (cin >> _; _--;) {
int n;
cin >> n;
vector<ll> a(n);
for (auto& x : a) cin >> x;
sort(a.begin(), a.end());
int cnt = n, i = 0;
while (a[i] == a[i + 1] && i < n) i++;
if (i == n) {
cout << 0 << "\n";
continue;
}
cout << n - count(a.begin(), a.end(), a[0]) << "\n";
}
return 0;
}

1478B. Cat Cycle

有一个\(n\)个点的圆环。A在 \(n\) 号点,B在 \(1\) 号点。A逆时针走,B顺时针走。如果A和B下一步是一个点,那么A走一步,B走两步。问经过 \(K\) 步后B在几号点

Solution

看了很久,发现是奇偶数问题,\(n\) 为偶数不会碰到一起,奇数个点时 B 多走 \(\frac{k}{n / 2}\) 步

Code

int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
for (cin >> _; _--;) {
ll n, k;
cin >> n >> k;
k--; // 第一秒
if (n & 1) k += (k / (n / 2)); // 模拟奇数个点,k的变化
k++, k %= n;
cout << (k == 0 ? n : k) << "\n";
}
return 0;
}

1478C. Minimum Ties

\(n\) 支队伍要两两对战,平局各加一分,获胜加 3 分,失败无影响。请安排这些对局的结果使得最终所有人的分相等而且平局的数量尽可能少

Solution

显然总共有 \(n*(n-1)/2\) 局,如果全是非平局,那么一人 \((n-1)/2\)局,那么只有在 \(n\) 是奇数的情况下成立。不然必定有平局产生。

然后就按照每个人被分到多少局进行分配就好了。

int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int n, i, j, k;
for (cin >> n; cin >> n;)
for (i = 0; i < n; i++)
for (j = i + 1; k = (j - i) * 2, j < n; j++)
cout << (k == n ? 0 : k < n ? 1 : -1) << ' ';
return 0;
}

1478D. Pythagorean Triples

寻找三元组(a,b,c)满足 \(c^2 = a^2 + b^2\) and \(c = a^2 - b\)

Solution

两个算式联立:\(a^2 = 2 * n + 1\) and \(c = b + 1\)

最后算出个:\((ll)((sqrt(2 * n - 1) - 1) / 2)\)

int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
for (cin >> _; _--;) {
ll n;
cin >> n;
cout << (ll)((sqrt(2 * n - 1) - 1) / 2) << "\n";
}
return 0;
}

1478E. Cheap Dinner

给定四个种类的菜各自的价格,给定一些关系:第一种菜中的某一种不能同时和第二种菜中的某一种一起被选中,然后2-nd和3-th,3-rd和4-th。

问四种菜中各择一的最小代价。

Solution

如果单考虑前两种,那么对于第二种菜中的所有菜,可以通过不同时被选中关系得到自己的最小代价(或者不能),把这个代价移到第二种菜上,2-nd和3-rd的菜之间的转移等价于1-st和2-nd之间的转移。一种类似DP转移的思想。代码实现方面就用multiset乱搞,每次考虑两种关系的时候,先把当前点所不连通的点删掉,最后再加回来,可以这么做的原因是我只要考虑值,不需要考虑具体的关系。

Code

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
int arr[5][maxn], dp[5][maxn];
int nums[5];
vector<int> vv[5][maxn];
void solve() {
for (int i = 1; i <= 4; ++i) scanf("%d", &nums[i]);
for (int i = 1; i <= 4; ++i) {
for (int j = 1; j <= nums[i]; ++j) {
scanf("%d", &arr[i][j]);
}
}
for (int i = 2; i <= 4; ++i) {
int m;
scanf("%d", &m);
for (int j = 1, x, y; j <= m; ++j) {
scanf("%d %d", &x, &y);
vv[i][y].push_back(x);
}
}
for (int i = 1; i <= nums[1]; ++i) {
dp[1][i] = arr[1][i];
}
for (int i = 2; i <= 4; ++i) {
multiset<int> ss;
for (int l = 1; l <= nums[i - 1]; ++l) {
if (dp[i - 1][l] != -1) ss.insert(dp[i - 1][l]);
}
for (int j = 1; j <= nums[i]; ++j) {
for (int k = 0; k < vv[i][j].size(); ++k) {
int v = vv[i][j][k];
if (dp[i - 1][v] != -1) ss.erase(ss.find(dp[i - 1][v]));
}
if (ss.size() == 0)
dp[i][j] = -1;
else
dp[i][j] = *ss.begin() + arr[i][j]; for (int k = 0; k < vv[i][j].size(); ++k) {
int v = vv[i][j][k];
if (dp[i - 1][v] != -1) ss.insert(dp[i - 1][v]);
}
}
}
int ans = -1;
for (int i = 1; i <= nums[4]; ++i) {
if (dp[4][i] != -1) {
if (ans == -1 || ans > dp[4][i]) ans = dp[4][i];
}
}
printf("%d\n", ans);
} int main() {
int t = 1;
// scanf("%d", &t);
while (t--) solve();
return 0;
}

Educational Codeforces Round 104 (Rated for Div. 2) A-E 个人题解的更多相关文章

  1. Educational Codeforces Round 76 (Rated for Div. 2)E(dp||贪心||题解写法)

    题:https://codeforces.com/contest/1257/problem/E 题意:给定3个数组,可行操作:每个数都可以跳到另外俩个数组中去,实行多步操作后使三个数组拼接起来形成升序 ...

  2. Educational Codeforces Round 92 (Rated for Div. 2) B、C题解

    TAT 第一场codeforces B. Array Walk #暴力 #贪心 题目链接 题意 有\(a1, a2, ..., an\) 个格子(每个格子有各自分数),最初为1号格(初始分数为\(a1 ...

  3. 【Educational Codeforces Round 38 (Rated for Div. 2)】 Problem A-D 题解

    [比赛链接] 点击打开链接 [题解] Problem A Word Correction[字符串] 不用多说了吧,字符串的基本操作 Problem B  Run for your prize[贪心] ...

  4. Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal 题解(思维+逆序对)

    题目链接 题目大意 给你一个长度为n的字符串,可以交换相邻两个元素,使得这个字符串翻转,求最少多少种次数改变 题目思路 如果要求数组排序所需要的冒泡次数,那其实就是逆序对 这个也差不多,但是如果是相同 ...

  5. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  6. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

  7. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

  8. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  9. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...

  10. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...

随机推荐

  1. Tech Lead 要学会戴着镣铐跳舞

    这不是一篇讨喜的文章,至少不会是你常常看到的例如<成为优秀 Tech Lead 的六个建议>令人欢欣鼓舞的那一类.今天我们聊聊 Tech Lead 所面临的不那么轻松的现实问题 程序员一定 ...

  2. 8.0的新特性 -- invisible(不可见索引)

    版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin invisible index 不可见索引 以前的版本,假如这个索引无用了会怎么样?那就只能是drop掉了.但是dro ...

  3. i-MES生产制造管理系统-总览

    前言 说起 MES 就不得不说 ERP,但是 ERP 大家基本上都知道,MES 就不一定了,常见的 ERP 系统包括 SAP.金蝶.用友等,ERP的流程相对来说也比较统一:MES就不同了,基本上熟悉业 ...

  4. P8594 「KDOI-02」一个仇的复 题解

    我会组合数! 首先发现同一列只有被不同的横块填或被一个相同的竖块填,且用竖块填完1列之后,会分成两个封闭的长方形,而长方形内部则用横块来填充. 先考虑一个子问题,某个 \(2 \times n\) 长 ...

  5. python操作redis集群、redis主从+哨兵

    主从+哨兵 from redis.sentinel import Sentinel if __name__ == '__main__': # 哨兵监听的别名,这个就是你redis配置中的名字 serv ...

  6. Android SDK Manager 报错“加载 SDK 组件信息失败”。(Android SDK Manager complains with "Loading SDK component information failed."

    [解决方案]: 将存储库设置更改为 Google .因此,在 android SDK 管理器上点击齿轮图标(设置),然后点击 Repository -> Google.

  7. Huggy Lingo: 利用机器学习改进 Hugging Face Hub 上的语言元数据

    太长不看版: Hub 上有不少数据集没有语言元数据,我们用机器学习来检测其语言,并使用 librarian-bots 自动向这些数据集提 PR 以添加其语言元数据. Hugging Face Hub ...

  8. 通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

    最近发现之前的老代码已经不能获取QQ邮箱的Clientkey,经过一番调试后发现QQ邮箱更新了获取的流程,所以决定重新发布一篇文章,废话不多,直接上教程,喜欢的朋友记得点赞加关注. step 1 首先 ...

  9. 直接在*.vue文件(SFC)中使用JSX/TSX渲染函数,真香!

    前言 在日常开发中vue的模版语法在大多数情况都能够满足我们的需求,但是在一些复杂的业务场景中使用模版语法就有些麻烦了.这个时候灵活的JSX/TSX渲染函数就能派上用场了,大多数同学的做法都是将*.v ...

  10. CSS 基础 3 - 定位 Postion 属性

    CSS 基础 3 - 定位 Postion 属性 static position 属性的默认值,元素随 HTML 流移动 top/left/right/bottom 属性无效 relative 和 s ...