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 ...
随机推荐
- java笔记——面向对象
1.概述:面向对象是基于面向过程的编程思想 举例:把大象装进冰箱 2.开发:不断的创建对象,使用对象,指挥对象做事情 3.面向对象特征:封装 , 继承 , 多态 4.类和对象的关系: 类是一组相关的属 ...
- 搭建 MongoDB (v6.0) 副本集记录
副本集概述 副本集(Replica Set)是一组带有故障转移的 MongoDB 实例组成的集群,由一个主(Primary)服务器和多个从(Secondary)服务器构成.通过Replication, ...
- jmeter工具中vars与props命令的区别和使用
话不多说直接干活!!!!! vars 和 props命令存在于"jsr223 预处理器"."BeanShell 预处理程序"."JSR223 后置处理 ...
- JSX 代码是如何“摇身一变”成为 DOM 的?
JSX 是一种语法,并不是 React 中的内容,时下接入 JSX 语法的框架越来越多,但与之缘分最深的仍然是 React.本节来讲一下 React 是如何摇身一变成为 DOM 的. 我们平时在写Re ...
- [P7880][Ynoi2006] rldcot
[Ynoi2006] rldcot 题目描述 给定一棵 \(n\) 个节点的树,树根为 \(1\),每个点有一个编号,每条边有一个边权. 定义 \(dep(x)\) 表示一个点到根简单路径上边权的和, ...
- SpringBoot整合Swagger2一直弹窗的坑
问题现象: 我的Swagger配置信息文件如下 package com.qbb.qmall.service.config; import com.google.common.base.Predicat ...
- LeetCode227:基本计算器|| (栈、模拟)
解题思路:两个双端队列模拟,一个存放操作数 a,另一个存放操作符 op,如果找到另一个操作数b,判断操作队列队尾是否是*/,是的话执行 a(*or/)b.遍历完字符串,如果操作符队列非空,说明还有+- ...
- JXNU acm选拔赛 涛涛的Party
涛涛的Party Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Subm ...
- vulnhub - tornado - wp
coverY: 0 tornado 信息收集 目标开放了80,22端口. 访问80网页,是默认页面: 目录枚举 用dirsearch没有什么发现,换gobuster发现了一个bluesky目录.访问如 ...
- CentOS7部署后优化配置
1.安装必要的组件.升级 yum -y install wget vim cd /etc/yum.repos.d/ rm -rf /etc/yum.repos.d/*.repo wget http:/ ...