比赛链接:Here

1296A. Array with Odd Sum

题意:给了 \(n\) 个数,现在就是说可以选择两个数让其中一个的值等于另一个的值.

这种操作无限次 问是不是能让这n个数操作后的总和为奇数

题解:我们都知道奇数+奇数等于偶数 所以奇数=偶数-奇数 所以只要有奇数有偶数就可以

【AC Code】

int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int _; for (cin >> _; _--;) {
int n;
cin >> n;
int odd = 0, even = 0, sum = 0;
for (int i = 0, x; i < n; ++i) {
cin >> x; sum += x;
if (x & 1) odd += 1;
else even += 1;
}
cout << (((odd && even) || sum & 1) ? "YES\n" : "NO\n");
}
}

1296B. Food Buying

题意:给了 \(n\) 块钱 每花 \(10\)​ 块 都能得到一块 问可以当多少钱花

题解:经典瓶盖兑换问题,争对 \(1e9\) 的数据范围可以直接暴力跑

【AC Code】

int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int _; for (cin >> _; _--;) {
ll n;
cin >> n;
int cnt = n;
while (n >= 10) {
cnt += n / 10;
n = n % 10 + n / 10;
}
cout << cnt << "\n";
}
}

1296C. Yet Another Walking Robot

题意:给长度为 \(n\) 的字符串 让你删去一个区间的坐标 不影响终点 区间越小越好

题解:map标记下走过的点 走过了后面再走到 存下来 排序 输出区间长度最短的就好

【AC Code】

using pii = pair<int, int>;

int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int _; for (cin >> _; _--;) {
int n;
string s;
cin >> n >> s;
map<pii, int>mp;
bool f = 0;
int x = 0, y = 0;
mp[ {x, y}] = 1;
vector<pii> v;
for (int i = 0; i < n; ++i) {
if (s[i] == 'L') x -= 1;
if (s[i] == 'R') x += 1;
if (s[i] == 'U') y += 1;
if (s[i] == 'D') y -= 1;
if (mp[ {x, y}]) v.push_back({mp[{x, y}], i + 1});
mp[ {x, y}] = i + 2;
}
if (v.empty()) {
cout << "-1\n";
continue;
}
sort(v.begin(), v.end());
cout << v[0].first << " " << v[0].second << "\n";
}
}

1296D. Fight with Monsters

题意:你和你的对手轮流打怪,对于每只怪 都是你先手 你对手后手

有 \(n\)​ 个怪,你攻击力\(a\)​,你对手攻击力\(b\)​,怪的血 \(hp_i\)​ ,现在你有\(k\)​个机会,可以让你对手忽略他出手的回合,就是说你用一次机会 你就能连续打两次 连续用两次次机会就能连续打三次,用的总机会次数小于等于 \(k\)​ 现在问最多有多少只怪 只被你终结的 就是你打最后一下让 \(hp_i\le0\)​​​​

题解:贪心,

显然 先对 \(hp_i\) 取模 \((a+b)\) 如果能被整除的话就保留 \(hp_i=a+b\) 这样操作之后 每一只怪的先手还是你,然后对剩余的血量进行排序 对于 \(hp_i\le a\)​ 的 你打一下他就 gg 那么答案就是 \(ans+1\)​

对于一下子不打死的呢,我们已经按血量排序了 那么肯定把机会优先用掉,

你用 \(k\) 次机会,怪会被 \(k+1\)​ 次的 \(a\)​ 的血量

所以我们计算 \(r=hp_i/a\) 看需要打几次 这里要注意需要看是不是整除

整除的话 需要 r–,因为用 \(k\) 次机会 可以连续打 \(k+1\) 下 不能整除就是需要用r次机会刚好

【AC Code】

int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int n, a, b, k;
cin >> n >> a >> b >> k;
int c = a + b;
vector<int>q(n + 1);
for (int i = 1; i <= n; ++i) {
cin >> q[i];
q[i] %= c;
if (!q[i]) q[i] = c;
}
sort(q.begin() + 1, q.end());
int ans = 0;
for (int i = 1; i <= n; i++) {
// cout << i << " " << q[i] << "\n";
if (q[i] <= a) ans++;
else {
int r = q[i] / a;
if (q[i] % a == 0) r--;
if (r <= k) k -= r, ans++;
else break;
}
}
cout << ans << "\n";
}

1296E. String Coloring

(Easy version)

题意:让你给题中给定的字符串 的每个字符染色 \(0\) 或者 \(1\),然后不同颜色的字符可以交换 问你是不是有一种染色方案 可以让给定的字符串进行任意次交换后是有序的

题解:因为只有两种颜色可以用来涂相同颜色彼此不能交换所以同一种颜色组成的序列绝对是非严格递增的所以只要看是不是能把序列分成两个非严格递增的序列即可

【AC Code】

int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int n; string s;
cin >> n >> s;
vector<int>v(n, 0);
char tmp = 'a';
for (int i = 0; i < n; ++i)
if (s[i] >= tmp) tmp = s[i], v[i] = 1;
tmp = 'a';
for (int i = 0; i < n; i++)
if (!v[i] && s[i] >= tmp) tmp = s[i], v[i] = 2;
for (int i = 0; i < n; i++)
if (!v[i]) return printf("NO\n"), 0;
cout << "YES\n";
for (int i = 0; i < n; ++i) cout << v[i] - 1;
}

(Hard version)

意思和E1一样 只不过可以用不同的颜色,要求用的颜色越少越好

我们由E1知道 要两个非严格递增序列组成即可,那么E2就是看序列能不能由ans个非严格递增序列组成 ans越小越好。

最后就一直找即可

int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int n; string s;
cin >> n >> s;
vector<int>v(n, 0);
int ans = 1, num = 0;
while (num < n) {
int l = 'a';
for (int i = 0; i < n; i++)
if (!v[i] && s[i] >= l) l = s[i], v[i] = ans, num++;
ans++;
}
cout << ans - 1 << "\n";
for (int i = 0; i < n; i++) cout << v[i] << " ";
}

Codeforces Round #617 (Div. 3) A~E的更多相关文章

  1. Codeforces Round #617 (Div. 3) String Coloring(E1.E2)

    (easy version): 题目链接:http://codeforces.com/contest/1296/problem/E1 题目一句话就是说,两种颜色不同的字符可以相互换位, 问,对这字符串 ...

  2. Codeforces Round #617 (Div. 3)F. Berland Beauty

    题意: 给一棵树,边权未知,现在给m组约束,每组约束给出从u到v路径中的最小值,现在让你给出一组边权,使得符合之前的约束,不能给出输出-1 思路: 因为n较小,对于每组约束我们可以直接暴力修改路径上的 ...

  3. Codeforces Round #617 (Div. 3) D. Fight with Monsters

    D : Fight with Monsters 题目大意 : 有一组数,每个值对应着一个怪物的 hp 值,现在有两个人,一个自己一个对手,每个人有一个攻击值, 两个人轮流攻击怪物,如果是自己将怪物先打 ...

  4. Codeforces Round #617 (Div. 3) 补题记录

    1296A - Array with Odd Sum 题意:可以改变数组中的一个数的值成另外一个数组中的数,问能不能使数组的和是个奇数 思路:签到,如果本来数组的和就是个奇数,那就OK 如果不是,就需 ...

  5. Codeforces Round #617 (Div. 3) 题解

    又是隔了一年才来补题的我 A.B水题就不用说了 C - Yet Another Walking Robot C题我居然卡了一会,最后决定用map水,结果出来看了看题解,居然真的是map...没想到会出 ...

  6. Codeforces Round #617 (Div. 3)

    A 题意:能否将数组里面的值用数组里面的值替换出一个和为奇数的数组 思路:1.和为奇数yes 2.和为偶数但有奇数yes 3.个数是奇数的,有奇数的yes 其他都是no 果然罚时全给了A #inclu ...

  7. Codeforces Round #617 (Div. 3)A. Array with Odd Sum(水题)

    You are given an array aa consisting of nn integers. In one move, you can choose two indices 1≤i,j≤n ...

  8. [CF百场计划]Codeforces Round #617 (Div. 3)

    A. Array with Odd Sum Description You are given an array \(a\) consisting of \(n\) integers. In one ...

  9. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  10. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

随机推荐

  1. linux debian安装erlang和rabbitmq

    debian系安装rabbitmq的服务端 安装erlang 本文讲rabbitmq. erlang语言环境就root快捷安装,方便学习(erlang版本23.x) apt install erlan ...

  2. 运行tomcat之后报一个:"Address localhost:1099 is already in use"错误

    一.解决方案 1.错误原因 "地址 localhost:1099 已在使用中",是1099程序被占用,把1099程序后台停止掉即可. 2.解决方案 1.快捷键win+R打开CMD运 ...

  3. C++ 共享内存ShellCode跨进程传输

    在计算机安全领域,ShellCode是一段用于利用系统漏洞或执行特定任务的机器码.为了增加攻击的难度,研究人员经常探索新的传递ShellCode的方式.本文介绍了一种使用共享内存的方法,通过该方法,两 ...

  4. IP交付标准总结。

    RTL顶层代码,IP内部需要IP自己完成连接并保证正确,CM/PLL/MCU/SRAM/TX/RX内部模块不接受外部进行拼接,DFT内部自己处理.IP用到的宏,名称功能文档要说明清楚.优先使用硬核IP ...

  5. 使用create-vue创建vue3项目

    create-vue是vue3新的脚手架搭建项目工具,底层构建工具使用vite,而不是vue-cli的webpack. 但不是说你不能用以前的vue create命令来创建vue3项目,你完全可以用v ...

  6. .NET开发中合理使用对象映射库,简化和提高工作效率

    前言 在日常开发中,我们常常需要将一个对象映射到另一个对象,这个过程中可能需要编写大量的重复性代码,如果每次都手动编写,不仅会影响开发效率,而且当项目越来越复杂,庞大的时候还容易出现错误.为了解决这个 ...

  7. NLP复习之朴素贝叶斯

    朴素贝叶斯分类器和加一平滑计算每个单词的似然值 贝叶斯规则:c表示类别,d表示数据 \[P(c|d) = \frac{P(d|c)P(c)}{P(d)} \] 例题1 假设句子"I alwa ...

  8. WebView中的页面调试方法

    在 iOS 12 中,苹果正式弃用 UIWebView,改成 WKWebView,参考官方声明. 后者在性能.稳定性.功能方面有很大提升,并且与 Safari 具有相同的 JavaScript 引擎( ...

  9. Python 猫的 2023 年终回顾

    2023 年是 Python猫 创办的第 5 年,2024 年已经到来了,我们照例做一个简短的年终回顾吧. 1.30000 订阅与 200 原创. 2020 的年终总结时,公众号订阅数刚破 20000 ...

  10. 前世今生:Kubernete 是如何火起来的?

    本课时,我们就开始正式进入 Kubernetes 的学习,或许你已经听过或简单了解过 Kubernetes,它是一款由 Google 开源的容器编排管理工具,而我们想要深入地掌握 Kubernetes ...