【竞赛题解】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

题意:对于整型数组内,每一对不相等的元素可以进行消除,试求可将数组消除到剩余尽可能少元素的数量

思路:首先将数组排序,将相同的元素聚集在一起,再将数组从正中间分为左右两部分,假如「没有相同的值跨越中线」(例如:1122 | 3344),即左边的任意值在右边找不到与其相等的值,则每次消除分别从左右两边各选任意一个元素即可,最后达到两边全部消除;若有相同值跨越中线

在这里插入图片描述

记跨越中线的值为R,首先将左边的R与右边的非R匹配消除、将右边的R与左边的非R匹配消除,若此时R被消除完,则说明剩余的状态可归类为「没有相同的值跨越中线」,即最终可以全部消除完,而若仍有R剩余(此时其他均已被消除),其实只剩下未被消除的R(此时无法继续消除),因此剩余R的数量即为所求答案。当然,当数组元素数量为奇数时,正中间的数最后一定会剩余,加以讨论即可。

#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

题意:原始数组A为长度为n,由1-n元素组成,现给出它的「当前最大值数组」B,即有 bi=max(a1,a2,...,ai)b_i = max(a_1,a_2,...,a_i)bi=max(a1,a2,...,ai),例如:A{3,1,4,2,7,5,6} 则有B{3,3,4,4,7,7,7},现在由给出的「当前最大值数组」求可能的「最小序原始数组」和「最大序原始数组」,大小序可将上面数组A{3,1,4,2,7,5,6} 理解成整型 3142756 再比大小,即越靠前的元素权值越重

思路

  • 「最小序原始数组」

在这里插入图片描述

其实可以理解为当cur_max数组刚发生变化时,该位置对应的结果便为当前的最大值,而后若cur_max未发生变化则由小到大将序列元素依次填入即可(思路即是:使越靠前的位置放置越小的元素),由于是由小到大选元素,这样的选取总能使结果数组满足对应的「当前最大值数组」

  • 「最大序原始数组」

在这里插入图片描述

总体思路与前者相反,即使越靠前的位置放置尽可能大的元素,当我们考虑第二个元素的选择的时候:当然可选的最大元素为 7 ,但此时cur_max[2] = 3,说明我们只能考虑从不大于3的元素选取,而3被第一个元素选了,因此尽可能大的选择是2。于是更详细的思路是:「每次选择不大于cur_max[i]的尽可能大的数」

这里通过结构来完成此过程:

  1. 首先读到cur_max[0] = 3,将[1,3][1,3][1,3]依次入栈,再对于此后cur_max[i] == 3依次取栈顶元素并出栈(这样保证了「每次选择不大于cur_max[i]的尽可能大的数」),到了cur_max[3] = 4,此时栈中还剩余元素 1

在这里插入图片描述

  1. cur_max[3] = 4,将[3+1,4][3 +1,4][3+1,4] (其实只有4本身)依次入栈,和上述同样的操作,读到cur_max[5] = 7,此时栈为空

在这里插入图片描述

  1. cur_max[5] = 7,将[4+1,7][4+1,7][4+1,7]依次入栈,最后再依次出栈作为结果

在这里插入图片描述

#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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于RBAC模型的通用企业权限管理系统

1. 为什么我们需要基于RBAC模型的通用企业权限管理系统 管理信息系统是一个复杂的人机交互系统&#xff0c;其中每个具体环节都可能受到安全威胁。构建强健的权限管理系统&#xff0c;保证管理信息系统的安全性是十分重要的。权限管理系统是管理信息系统中代码重用性最高的模块…

密码学加密算法分类_密码学中的国际数据加密算法(IDEA)

密码学加密算法分类Introduction 介绍 International Data Encryption Algorithm (IDEA) is a type of cryptography as a block cipher algorithm designed by "Xuejia Lai" and "James L.Massey" of ETH-Zrich and was first published in the 1991 yea…

如何定位溢出点位置

程序&#xff1a; #include <stdio.h> void exploit() {system("/bin/sh"); } void func() {char str[20];read(0,str,50);printf("the str is:%s\n",str); } int main() {func();return 0; }关掉保护机制&#xff1a; gcc -no-pie -fno-stack-pro…

【竞赛题解】2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)

B 找山坡 题意&#xff1a;在数组中找到两相等元素相距最大的距离且这两元素间的元素都不小于该两端值 思路&#xff1a;采用单调栈 例如&#xff1a;a[] { 2 3 5 4 6 3 }&#xff0c;栈内存储元素的坐标&#xff08;从1开始&#xff09;&#xff0c;便于计算距离 首先将a[…

操作系统中的处理机调度调度_操作系统中的流程分类和调度

操作系统中的处理机调度调度处理 (Process) In the operating system, there are numerous task and application program run simultaneously. A program is stored in the hard disk or any other form of secondary storage. When the program is executed it must be loade…

NX机制及绕过策略-ret2libc

程序&#xff1a; 1.c #include <stdio.h> void exploit() {system("/bin/sh"); } void func() {char str[0x20];read(0,str,0x50); } int main() {func();return 0; }0x01 NX介绍 溢出攻击的本质在于冯诺依曼计算机模型对数据和代码没有明确区分这一先天性缺…

【竞赛题解】第22次CCF计算机软件能力认证 B

今天&#xff08;准确说是昨天&#xff0c;一下子就过12点了&#xff09;下午刚参加了CSP认证考试&#xff0c;大概是考了220&#xff08;前两题AC&#xff0c;第三题太折磨了懒得看了&#xff0c;后面两题各混了10分&#xff09;&#xff0c;唯一有点参与感的就是B题了&#x…

gbd调试64位程序关键

程序&#xff1a; 4.c&#xff1a; #include<stdio.h> void exploit() {system("/bin/sh"); } void main() {char buf[20];gets(buf); }编译&#xff1a; gcc -no-pie -fno-stack-protector -m64 -o 4.exe 4.cNX保护&#xff0c;栈数据不可执行 使用命令&…

fcfs调度算法_FCFS:先来先服务调度算法

fcfs调度算法The FCFS, which stands for First Come First Serve Scheduling Algorithm, is a non-preemptive scheduling algorithm, which means that if a process once starts executing in the processor, then it cannot be preempted in between the processing. Thus,…

nhibernate学习之三级联(Ternary Associations)篇

1) 学习目标通过进一步学习Nhibernate基础知识&#xff0c;掌握用Nhiberate实现对级联的支持&#xff0c;通过一个简单的用户角色权限系统来体验nhibernate对级联的强大支持。2&#xff09;开发环境和必要准备 开发环境为:windows 2003,Visual studio .Net 2005,Sql server 200…

【竞赛题解】Codeforces Round #715 (Div. 2) C

C. The Sports Festival 题意&#xff1a;对于给定的整型数组aaa&#xff0c;每次选择其中一个元素aia_iai​&#xff08;不能重复选择同一元素&#xff09;&#xff0c;每次计算已选择的元素的极差&#xff08;最大元素减最小元素的差&#xff09;&#xff0c;输出最后极差和…

C和汇编---sizeof运算符和strlen函数

sizeof sizeof是C语言的内置运算符&#xff0c;以字节为单位给出指定类型的大小。 程序&#xff1a; #include <stdio.h>int main(void) {int a8;int b sizeof(a);//printf("a占用字节%u\n",sizeof(a));printf("a占用字节%d\n",b);return 0; }反汇…

[原]Asp.net替换不同版本的Dll文件碰到的问题以及解决办法.

情景还原: 今天一个朋友说网站不能上传图片,我检查后发现一直卡住在上传页面,一直滚动,是个Fckeditor控件2.6.3的. 经过google以后得到的结论是图片上传成功,但是没有返回结果,在服务器上可以看到上传的图片. 说明是上传控件有问题,程序不能返回结果. 再google以后发现有人已经…

【桶】220.存在重复元素 III 【LeetCode】

220.存在重复元素 III 【LeetCode】 给你一个整数数组 nums 和两个整数 k 和 t。请你判断是否存在 两个不同下标i和j&#xff0c;使得 abs(nums[i] - nums[j]) < t&#xff0c;同时又满足 abs(i - j) < k。 如果存在则返回 true&#xff0c;不存在返回 false。 示例 1…

远控免杀专题12--Green-Hat-Suite免杀

0x01 免杀能力一览表 几点说明&#xff1a; 1、上表中标识 √ 说明相应杀毒软件未检测出病毒&#xff0c;也就是代表了Bypass。 2、为了更好的对比效果&#xff0c;大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。 3、由于本机测试时只是安装了360全…

远控免杀专题 13----zirikatu免杀

0x01 免杀能力一览表 几点说明&#xff1a; 1、上表中标识 √ 说明相应杀毒软件未检测出病毒&#xff0c;也就是代表了Bypass。 2、为了更好的对比效果&#xff0c;大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。 3、由于本机测试时只是安装了360全…

UML 的九种模型图

1. UML的模型图 UML 的模型图能够将被建模的系统的某一个方面的某一部分以图形的方式表示出来&#xff0c;不同的视图通过将多个不同的模型图有机组合在一起就能够描述系统模型的某方面的特征。UML的模型图是有模型元素构成的&#xff0c;模型元素以图标的形式直观形象的表达…

【莫队】区间众数(Codeforces Round #716 (Div. 2) D)

D. Cut and Stick &#xff08;赛后补题&#xff09;借本题学习莫队算法以及区间众数的求法 题意&#xff1a;对于整型数组&#xff0c;每次询问[L,R][L,R][L,R]区间问最少分为多少个子序列&#xff0c;使得每个子序列的众数xxx的个数cntxcnt_xcntx​不大于 ⌈len2⌉\left \l…

如何正确使用SqlConnection

以前曾见过有人这样写代码&#xff1a; public class Service1 : IService1{private SqlConnection conn new SqlConnection();public void Method1(){//do something with conn;}public void Method2(){//do something with conn;}public void Method3(){//do something with…

远控免杀专题 14 ---AVIator

0x01 免杀能力一览表 几点说明&#xff1a; 1、上表中标识 √ 说明相应杀毒软件未检测出病毒&#xff0c;也就是代表了Bypass。 2、为了更好的对比效果&#xff0c;大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。 3、由于本机测试时只是安装了360全…