【竞赛题解】Codeforces Round #710 (Div. 3)
B. Partial Replacement
题意:有字符串由.
和*
组成,可标记其中*
,首尾的*
必须被标记,使被标记的*
之间距离不超过k
,求最少的标记量
思路:首先从首尾出发确定首尾*
的位置,再由首beg
出发向后的k个元素里,将最靠右的*
标记
选择最右的标记为了更快地抵达尾
ed
,该局部最优可推广到全局最优
将刚标记的*
作为新的起点,再在向后k
个元素里标记最右的*
,重复执行上述步骤直至抵达尾ed
为止
#include <bits/stdc++.h>
#define fastio() ios_base::sync_with_stdio(0);cin.tie(0)
using namespace std;
int main()
{fastio();int t;cin >> t;while (t--){int n, k;cin >> n >> k;string s;cin >> s;int beg = 0, ed = n - 1;while (s[beg] != '*') ++beg;while (s[ed] != '*') --ed;int ans = 2;if (beg == ed) ans--;for (int i = beg;;){int j = i + k;if (j >= ed) break;while (s[j] != '*') --j;ans++;i = j;}cout << ans << "\n";}return 0;
}
D. Epic Transformation
题意:对于整型数组内,每一对不相等的元素可以进行消除,试求可将数组消除到剩余尽可能少元素的数量
#include <bits/stdc++.h>
#define fastio() ios_base::sync_with_stdio(0);cin.tie(0)
using namespace std;
int main()
{fastio();int t;cin >> t;while (t--){int n;cin >> n;vector<int> v(n);for (int i = 0; i < n; i++) cin >> v[i];sort(v.begin(), v.end());int ans = n & 1 ? 1 : 0;int mid_pos = n / 2;int mid_elem = v[mid_pos];int left_me_cnt = 0, right_me_cnt = 0, half_cnt = n / 2;int left_pos, right_pos;if (n & 1){left_pos = mid_pos - 1;right_pos = mid_pos + 1;}else{left_pos = mid_pos - 1;right_pos = mid_pos;}while (left_pos >= 0 && v[left_pos] == mid_elem) left_me_cnt++, left_pos--;while (right_pos < n && v[right_pos] == mid_elem) right_me_cnt++, right_pos++;ans += 2 * max(0, right_me_cnt - (half_cnt - left_me_cnt));cout << ans << "\n";}return 0;
}
E. Restoring the Permutation
#include <bits/stdc++.h>
#define fastio() ios_base::sync_with_stdio(0);cin.tie(0)
using namespace std;
int main()
{fastio();int t;cin >> t;while (t--){int n;cin >> n;vector<int> q(n);for (int i = 0; i < n; i++) cin >> q[i];;vector<int> used(n + 1);vector<int> min_ans(n);int pos = 1;min_ans[0] = q[0], used[q[0]] = 1;for (int i = 1; i < n; i++){if (q[i] == q[i - 1]){while (used[pos]) ++pos;min_ans[i] = pos;used[pos] = 1;}else{min_ans[i] = q[i];used[q[i]] = 1;}}for (int i = 0; i < n - 1; i++) cout << min_ans[i] << " ";cout << min_ans[n - 1] << "\n";vector<int> max_ans(n);stack<int> st;int pre_val = 0;for (int i = pre_val + 1; i <= q[0]; i++) st.push(i);max_ans[0] = st.top(); st.pop();for (int i = 1; i < n; i++){if (q[i] == q[i - 1]){max_ans[i] = st.top(); st.pop();}else{pre_val = q[i - 1];for (int j = pre_val + 1; j <= q[i]; j++) st.push(j);max_ans[i] = st.top(); st.pop();}} for (int i = 0; i < n - 1; i++) cout << max_ans[i] << " ";cout << max_ans[n - 1] << "\n";}return 0;
}
【竞赛题解】Codeforces Round #710 (Div. 3)相关推荐
- Codeforces Round #710 (Div. 3)个人题解
Codeforces Round #710 (Div. 3) 文章目录 [Codeforces Round #710 (Div. 3)](https://codeforces.com/contest/ ...
- Codeforces Round #710 (Div. 3) ABCDE 题解
我的博客园传送门,看的方便些 A. Strange Table 签到题,算出对应行列即可. view code #include<iostream> #include<string& ...
- Codeforces Round #710 (Div. 3)
文章目录 A. Strange Table 题意 解题思路 Code B. Partial Replacement 题意 解题思路 Code C. Double-ended Strings 题意 解题 ...
- [Codeforces Round #668 (Div. 2)]1405
文章目录 A - Permutation Forgery B - Array Cancellation C - Balanced Bitstring [思维] D - Tree Tag [博弈][df ...
- Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)简训
Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)简训 导语 涉及的知识点 题目 A Game B ...
- Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...
- Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...
- Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...
最新文章
- android 保存 用户名和密码 设置等应用信息优化
- centos7 ntp设置 时间同步
- 【深度学习入门到精通系列】遗传算法 (Genetic Algorithm)
- python3.8安装教程-二、Python2.7的安装并与Python3.8共存
- win10 mysql root密码_win10 mysql5.7root密码多少
- [算法][LeetCode]Spiral Matrix
- 一台电脑同时运行多个tomcat配置方法
- RMS 相关下载链接
- Node JS Buffer使用理解
- 神经网络画图-ConvNetDraw(简单实用)
- 为什么不使用ipv6计算机网络,ipv6无网络访问权限解决教程
- Python爬虫:爬取某易云音乐歌曲
- html如何实现文字跳动,JS代码怎么实现文字跳动特效?
- 游戏开发资源列表 (转)
- 2019互联网BATJ等大厂中秋礼盒大PK
- [重装系统]戴尔DELL新BIOS设置U盘启动
- Kaggle数据集之电信客户流失数据分析(三)之决策树分类
- 抢红包小程序(Java、头歌实验)
- pandas数值型数据和非数值型数据统计
- 近似查询mysql_近似查询处理简介
热门文章
- iview-admin框架运行步骤
- 记录工作中常用的CSS3
- http强缓存在firefox和chrome之间的差异
- leecode 题解 || Merge k Sorted Lists 问题
- 将mysql的data目录移走方法
- 四则运算2+psp0
- php session 效率,大量php session临时文件带来的服务器效率问题
- 自动论文生成器 python_Python生成器常见问题及解决方案
- matlab二次二阶距,用Matlab改进一次二阶矩法程序.doc
- h5 php js实验总结,H5学习_番外篇_PHP数据库操作