Codeforces Round #617 (Div. 3) A~E
比赛链接: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的更多相关文章
- Codeforces Round #617 (Div. 3) String Coloring(E1.E2)
(easy version): 题目链接:http://codeforces.com/contest/1296/problem/E1 题目一句话就是说,两种颜色不同的字符可以相互换位, 问,对这字符串 ...
- Codeforces Round #617 (Div. 3)F. Berland Beauty
题意: 给一棵树,边权未知,现在给m组约束,每组约束给出从u到v路径中的最小值,现在让你给出一组边权,使得符合之前的约束,不能给出输出-1 思路: 因为n较小,对于每组约束我们可以直接暴力修改路径上的 ...
- Codeforces Round #617 (Div. 3) D. Fight with Monsters
D : Fight with Monsters 题目大意 : 有一组数,每个值对应着一个怪物的 hp 值,现在有两个人,一个自己一个对手,每个人有一个攻击值, 两个人轮流攻击怪物,如果是自己将怪物先打 ...
- Codeforces Round #617 (Div. 3) 补题记录
1296A - Array with Odd Sum 题意:可以改变数组中的一个数的值成另外一个数组中的数,问能不能使数组的和是个奇数 思路:签到,如果本来数组的和就是个奇数,那就OK 如果不是,就需 ...
- Codeforces Round #617 (Div. 3) 题解
又是隔了一年才来补题的我 A.B水题就不用说了 C - Yet Another Walking Robot C题我居然卡了一会,最后决定用map水,结果出来看了看题解,居然真的是map...没想到会出 ...
- Codeforces Round #617 (Div. 3)
A 题意:能否将数组里面的值用数组里面的值替换出一个和为奇数的数组 思路:1.和为奇数yes 2.和为偶数但有奇数yes 3.个数是奇数的,有奇数的yes 其他都是no 果然罚时全给了A #inclu ...
- 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 ...
- [CF百场计划]Codeforces Round #617 (Div. 3)
A. Array with Odd Sum Description You are given an array \(a\) consisting of \(n\) integers. In one ...
- 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 ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
随机推荐
- Linux配置静态IP解决无法访问网络问题
Linux系统安装成功之后只是单机无网络状态,我们需要配置Linux静态IP来确保服务器可以正常连接互联网 1.首先安装ifconfig Centos7安装成功后,高版本会把ping命令给移除了,所以 ...
- RIPEMD加密技术
摘要:RIPEMD(RACE Integrity Primitives Evaluation Message Digest)是一种密码散列函数,广泛应用于网络安全领域.本文首先介绍RIPEMD的起源和 ...
- 在路上---学习篇(一)Python 数据结构和算法 (5)二分查找、二叉树遍历
独白: 利用算法进行查找指定元素,最近学习二分查找和二叉树遍历.二分查找前提是在有序中进行查找,二叉树引入了树的概念.树的概念其中有许多小知识点,也是一种新的数据结构.还是之前的感悟,需了解其本质才会 ...
- ruoyi vue 前后端分离版本 打包分离jar包至lib
环境:若依前后端分离版本,原打包时将所有的依赖jar包放至ruoyi-admin.jar 包中,该包130MB,过大. 需求:为了减少打包更新上传的时间,减少至1.1mb 1.将不常更新的模块jar包 ...
- 吉特日化MES & HttpClient基础连接已经关闭: 连接被意外关闭
在吉特日化MES调用某公司AGV平台下发任务的时候,使用HttpClient 进行POST请求,出现如下异常: HttpClient基础连接已经关闭: 连接被意外关闭 , 之前已经使用HTTPCli ...
- Android Studio 学习-第三章 Activity 第二组
事先申明:所有android 类型的学习记录全部基于<第一行代码 Android>第三版,在此感谢郭霖老师的书籍帮助. 1.注册activity 在第一组中,我创建了一个activity, ...
- DI入门案例
1.基于IoC管理bean 2.Service中使用new形式创建的Dao对象是否保留?(不保留) 3.Service中需要的Dao对象如何进入到Service中?(提供方法) 4.Service与D ...
- Scrapy自带的断点续爬JOB-DIR参数
参考官方文档:https://docs.scrapy.org/en/latest/topics/jobs.html?highlight=JOBDIR#jobs-pausing-and-resuming ...
- git报错解决,warning: could not find UI helper 'git-credential-manager-ui'
在克隆远程代码时,可能遇到这样的报错 warning: could not find UI helper 'git-credential-manager-ui' 这样的报错经常会在我们换了一台电脑或者 ...
- vulnhub - tornado - wp
coverY: 0 tornado 信息收集 目标开放了80,22端口. 访问80网页,是默认页面: 目录枚举 用dirsearch没有什么发现,换gobuster发现了一个bluesky目录.访问如 ...