比赛链接


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. Tomcat国内安装及乱码解决详细步骤(无f墙)

    1.下载安装包 链接:https://pan.baidu.com/s/1x_hWMnUrui4aDYo9UE-GdA?pwd=p8kn 提取码:p8kn --来自百度网盘超级会员V4的分享 2.一键下 ...

  2. 7 种查询策略教你用好 Graph RAG 探索知识图谱

    近来 NebulaGraph 社区在 LLM + Graph 和 Graph RAG 领域进行了深入的探索和分享.在 LlamaIndex 和 LangChain 中,NebulaGraph 引入了一 ...

  3. echarts设置多条折线不是你想的那样简单

    简单的多条折线图 小伙伴写过多条折线图的都知道, 常见的折线图是 xAxis 配置项下的 data属性上设置时间或者日期. series配置项下是对应的 legend中的数据以及该条折线的数据. &l ...

  4. 汽车制造业PMC组态应用最佳实践

    01 案例及行业介绍 汽车制造工业是我国国民经济的重要支柱产业,汽车制造工厂一般包含冲压.焊装.涂装.总装四大车间.每辆汽车的生产过程被分解成很多加工任务下发给各个车间进行完成.车辆从冲压车间开始到总 ...

  5. wife-wife【原型链污染】

    wife-wife[原型链污染][难度:4] 题目界面 登录界面 注册界面 思路:在注册界面,利用原型链污染漏洞,获得管理员权限. 步骤 在注册界面输入用户名-密码-邀请码,勾选admin选项,抓包 ...

  6. Oracle体系机构、基本术语

    oracle实例.oracle数据库.oracle服务器,这三个术语容易混淆. oracle实例 实例是一个非固定的.基于内存基本进程和内存接口生成.当oracle服务器关闭后,实例也就消失. ora ...

  7. Kernel Memory 入门系列:自定义处理流程

    Kernel Memory 入门系列:自定义处理流程 在整个文档预处理的流程中,涉及到很多的处理步骤,例如:文本提取,文本分片,向量化和存储.这些步骤是Kernel Memory中的默认提供的处理方法 ...

  8. Layui treeTable 使用【数据不显示、子级不显示】

    //返回JSON数据类 public class LeaveMessageTreeTable { public LeaveMessageTreeTable() { this.children = ne ...

  9. 《A Novel Table-to-Graph Generation Approach for Document-Level Joint Entity and Relation Extraction》阅读笔记

    代码   原文地址   文档级关系抽取(DocRE)的目的是从文档中提取实体之间的关系,这对于知识图谱构建等应用非常重要.然而,现有的方法通常需要预先识别出文档中的实体及其提及,这与实际应用场景不一致 ...

  10. Pikachu漏洞靶场 敏感信息泄露

    敏感信息泄露 概述 由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到. 比如: 通过访问url下的目录,可以直接列出目录下的文件列表; 输入错误的url参数后报错信息里面 ...