Educational Codeforces Round 104 (Rated for Div. 2) A-E 个人题解
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 个人题解的更多相关文章
- Educational Codeforces Round 76 (Rated for Div. 2)E(dp||贪心||题解写法)
题:https://codeforces.com/contest/1257/problem/E 题意:给定3个数组,可行操作:每个数都可以跳到另外俩个数组中去,实行多步操作后使三个数组拼接起来形成升序 ...
- Educational Codeforces Round 92 (Rated for Div. 2) B、C题解
TAT 第一场codeforces B. Array Walk #暴力 #贪心 题目链接 题意 有\(a1, a2, ..., an\) 个格子(每个格子有各自分数),最初为1号格(初始分数为\(a1 ...
- 【Educational Codeforces Round 38 (Rated for Div. 2)】 Problem A-D 题解
[比赛链接] 点击打开链接 [题解] Problem A Word Correction[字符串] 不用多说了吧,字符串的基本操作 Problem B Run for your prize[贪心] ...
- Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal 题解(思维+逆序对)
题目链接 题目大意 给你一个长度为n的字符串,可以交换相邻两个元素,使得这个字符串翻转,求最少多少种次数改变 题目思路 如果要求数组排序所需要的冒泡次数,那其实就是逆序对 这个也差不多,但是如果是相同 ...
- 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 ...
- 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 ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
- Educational Codeforces Round 35 (Rated for Div. 2)
Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...
- 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 ...
- 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 ...
随机推荐
- 手动部署Kraft模式Kafka集群
手动部署Kraft模式kafka集群 基本信息 IP地址 Hostname Release Kafka-Version 172.29.145.157 iamdemo1 Centos7.9 kafka_ ...
- 用友NC产品接口开发,通过轻易云数据集成平台快速调用
通过用友NC产品的 UAP V63平台.插件相关处理.相关业务逻辑处理课程目标与要求课程内容课程目标与要求业务逻辑处理外部系统信息设置节点新建外部系统默认匹配规则:仅按对照表:外部系统数据与UAP.接 ...
- 数据集成平台关于【源平台调度&任务生命周期】
任务调度者 调度事件 生产任务 调度任务池-异步 AsynDispatcher --source 实例化适配器执行 消费任务 实例化集成应用 DataHub Instance handleSource ...
- 【Android】学习day05|简单登陆页面的实现|监听代码
实现效果如下图所示 实现代码[部分] MainActivity.java 1 package com.example.app02; 2 3 import androidx.appcompat.app. ...
- Opencv学习笔记(3)
Opencv库常见函数 1.读取指定图片 语法:cv2.imread()函数可以用于读取指定图片,使用时需要先导入opencv库 1 import cv2 # 导入opencv库 2 sample = ...
- ARM汇编指令实验
题目 地址为0x40008000起始的内存中存放了20个无符号的8位整数,请编写ARM汇编程序实现如下功能: 采用冒泡法将以上内存中的数据按照从小到大的顺序排列. 注意:在验收实验时,需要自己把具体的 ...
- 悲观锁、乐观锁、mybatis-plus实现乐观锁
悲观锁.乐观锁.mybatis-plus实现乐观锁 转载自:www.javaman.cn 1.悲观锁.乐观锁 乐观锁和悲观锁是两种用于处理并发操作的数据锁定策略.它们在处理多个事务尝试同时访问和修改同 ...
- SpringBoot核心注解:@SpringBootApplication
@SpringBootApplication它是由三个注解的复合: @ComponentScan @SpringConguration @EnableAutoConfiguration 三个注解的作用 ...
- 2023计算机保研经验贴 直博向(南大cs,计算所,科大高研院,浙大cs,交大cs,国科cs,北大cs,清华cs)
写在前面 本人作为普通选手,只能将个人经验分享一二,不能代表其他人的想法和意见,望路过的大佬们高抬贵手-,如果有相关老师或者同学认为我违反了保密条例请与我私信联系,我会第一时间删除相关内容. 个人情况 ...
- Docker部署系列之Docker Compose安装Redis三主三从集群
总结/朱季谦 在日常开发或者编程当中,经常需要用到redis集群,若是按照传统的方式,一个机器一个机器搭建,难免过于繁琐,故而可以通过dock er-compose编排方式,快速搭建.我在搭建过程当中 ...