Codeforces Round #649 (Div.2)题解
文章目录
- A - XXXXX
- B - Most socially-distanced subsequence
- C - Ehab and Prefix MEXs
A - XXXXX
题意:这个题让你找从开头或者是结尾去掉最少几个数以后总和是不能整除给定的x
思路:如果这个序列总和可以整除给定的x的话,那么我们只要找到一个数可以不被x整除,把他从序列中取出,那么序列中剩余的总和也就不能被整除了。
分别从前从后开始搜索即可:
/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 1e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;
int a[maxn];
int main()
{int t;cin>>t;while(t--){int n,k;cin>>n>>k;ll ans=0;for(int i=0;i<n;i++) scanf("%d",&a[i]),ans+=a[i];int pos1=n-1,pos2=0;if(ans%k==0){for(int i=0;i<n;i++){if(a[i]%k!=0&&a[i]!=0){pos1=i;break;}}for(int i=n-1;i>=0;i--){if(a[i]%k!=0&&a[i]!=0){pos2=i;break;}}//cout<<pos1<<" "<<pos2<<endl;int ans=min(pos1+1,n-pos2);if(ans==n) cout<<-1<<endl;elseprintf("%d\n",n-ans);}else cout<<n<<endl;}return 0;
}
B - Most socially-distanced subsequence
题意:让你从序列中找出某些元素,让其|a1-a2|+|a2-a3|+|a3-a4|+…+|an-1-an|的值最大化,输出你找出对的这些元素**(元素相对位置不可以变化)。**
题解:我们我们可以把这个序列中的所有元素抽象成一个函数图像,那么我们找出这个(函数)上的所有极值点即可,必定极大值和极小值是交替的。我们让他们彼此相减即可。
/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 1e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;
int a[maxn];
int rem[maxn];
int main()
{int t;cin>>t;while(t--){int n;cin>>n;for(int i=0;i<n;i++) scanf("%d",&a[i]);int cnt=1;rem[0]=a[0];for(int i=1;i<n-1;i++){if(a[i]>a[i-1]&&a[i]>a[i+1]) rem[cnt++]=a[i];else if(a[i]<a[i-1]&&a[i]<a[i+1]) rem[cnt++]=a[i];}if(rem[cnt-1]!=a[n-1]) rem[cnt++]=a[n-1];int ans=0;//for(int i=0;i<cnt-1;i++) ans+=abs(rem[i]-rem[i+1]);printf("%d\n",cnt);for(int i=0;i<cnt;i++){printf("%d ",rem[i]);}printf("\n");}return 0;
}
C - Ehab and Prefix MEXs
题意。。。不多哔哔了,描述不清
mex(S)的值为集合S中没有出现过的最小自然数。例如,mex({1,2}) = 0、mex({0,1,2,3}) = 4
题解:我们从哪里下手呢?
首先我们可以看到a[i]严格小于等于i
再者保证a是一个不下降序列
因为所有的数小于1e6所以我们不妨开一个数组来记录一下出现过的数字
用visited数组记录出现过的数字,若出现过标记为true,没有出现过则为false
类似于我图片上的样子
代码:
/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 1e6+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;int a[maxn];
bool visited[maxn];int main()
{int n;cin>>n;memset(visited,false,sizeof(visited));for(int i=1;i<=n;i++){scanf("%d",&a[i]);visited[a[i]]=true;}int pos=0;for(int i=1;i<=n;i++){if(a[i]!=a[i-1]&&i!=1) printf("%d ",a[i-1]);else{while(visited[pos]==true) pos++;printf("%d ",pos++);}}return 0;
}
Codeforces Round #649 (Div.2)题解相关推荐
- Codeforces Round #514 (Div. 2)题解
Codeforces Round #514 (Div. 2)题解 A 喵,直接模拟. B 枚举所有盖章时的,合法的,左上角的位置.能盖的话就盖一下.最后check一下图案是否相等即可 C 一轮一轮的扔 ...
- Codeforces Round #182 (Div. 1)题解【ABCD】
Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...
- 【算法题解】Codeforces Round #817 (Div. 4)题解
文章目录 Codeforces Round #817 (Div. 4)题解 A. Spell Check B. Colourblindness C. Word Game D. Line E. Coun ...
- Codeforces Round #747 (Div. 2)题解
Codeforces Round #747 (Div. 2)题解 (本博客将持续更新以后每场CF div2的题解,喜欢ACM.OI的小伙伴记得点个关注哟) 昨天夜晚刷网络流刷入迷了,渐渐就忘记了我还要 ...
- Codeforces Round #789 (Div. 2)题解
Codeforces Round #789 (Div. 2)题解 A. Tokitsukaze and All Zero Sequence 原题链接 算法标签 贪心 排序 思路 情况一:数组存在零 → ...
- Codeforces Round #748 (Div. 3) 题解 完整A~G
Codeforces Round #748 (Div. 3) 题解 A. Elections 题意 已知竞选中三个候选人的当前得票数 a , b , c a,b,c a,b,c,现在可以增加任何一个人 ...
- Codeforces Round #533 (Div. 2)题解
link orz olinr AK Codeforces Round #533 (Div. 2) 中文水平和英文水平都太渣..翻译不准确见谅 T1.给定n<=1000个整数,你需要钦定一个值t, ...
- Codeforces Round #734 (Div. 3) 题解
Hello大家好,今天给大家带来的是 Codeforces Round #734 (Div. 3) 的全题目讲解. 本文链接:https://www.lanqiao.cn/questions/2040 ...
- Codeforces Round #462 (Div. 2)题解
Codeforces Round #462 (Div. 2) B题--我固执的认为1e18是18位数,导致被hack,花了20分钟才检查出这个错误,很僵硬 Codeforces 934C 题意 给定一 ...
最新文章
- 多激光雷达与相机的外参快速精准标定(arxiv 2021)
- 程序猿真成猴了? | 每日趣闻
- 2020年网站优化思路从哪着手?
- 阿里云数据库2020技术年报新鲜出炉,全力开启牛年新征程!
- web安全认证机制知多少
- ubuntu下安装mysql 杂记
- Java:本地最小语言
- linux 分步编译命令,GCC分步编译C++程序(汇总版)
- 面试官问我:解释一下Dubbo服务暴露
- Java算法之只出现一次的数字
- CPU启动计算机,如何加快双核CPU计算机win7启动速度
- sklearn学习笔记之feature_selection(特征选择)
- c语言计算器自动计算源代码,c语言计算器源代码
- HTML中的img标签无法显示图片的解决方案
- 原理图设计及仿真流程
- 用认知和人性来做最棒的程序员
- VirtualBox虚拟机提示内存0x00000000不能为written问题
- 快速掌握SOLIDWORKS齿轮转动的应用
- 超简单的vim配置高亮
- Windows下如何硬盘安装Ubuntu