B:入门mex
B-入门mex_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)
整个数组如果没有0,那么mex就为0,选出来的mex需要满足小于mex的数都存在,那么我们排好序之后找到第一个不连续的值res,如果k<=res,就输出k,例如选3个数,必须要有0,所以012,那么mex为3,选两个数01,mex就为2,如果k>res,那么mex只能为res+1,这样才满足小于mex的数都存在,如果整个数组都可以为连续的一段,那么mex就是最大值加1。
代码:
#include<bits/stdc++.h>
using namespace std;
int a[100009];
int main()
{
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
if(a[1]!=0) cout<<"0"<<endl;
else
{
int ans,res=a[n];
for(int i=2;i<=n;i++)
{
if(a[i]-a[i-1]>1)
{
res=a[i-1];
break;
}
}
if(k<=res)
cout<<k<<endl;
else
{
cout<<res+1<<endl;//整个数组整体都是连续的数字
}
}
return 0;
}
D:AND and SUM
D-AND and SUM_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)
输入n,m,满足x+y=m,我们可以想到n+(m-n)=m,所以我们令x=n,y=m-n,那么我们还需要满足x&y=n这个条件;注意当满足n+(m-n)=m时,最大就是2n=m,所以如果2n>m,那么肯定不可以。
代码:
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);
#define int long long
using namespace std;
const int N=1e5+9;
int n,m;
void solve()
{
if(2*n>m)
cout<<"No"<<endl;
else
{
if((n&(m-n))==n)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
signed main()
{
int t;
cin>>t;
while(t--)
{
cin>>n>>m;
solve();
}
return 0;
}
E:完全平方数
E-完全平方数_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)
代码:
#include<bits/stdc++.h>
using namespace std;
int a[100009];
int main()
{
int n;
cin>>n;
int ans=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
int x=sqrt(a[i]);
if(x*x==a[i])
{
ans++;
}
}
cout<<ans<<endl;
return 0;
}
H:x(简单版本)
H-x(简单版本)_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)
sum从1开始,加上每一项的值,如果该项的值大于sum,就输出,否则一直加,最后输出sum。
代码:
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);
#define int long long
using namespace std;
const int N=1e5+9;
int a[N],n,b[N];
void solve()
{
int sum=1;
for(int i=1;i<=n;i++)
{
if(a[i]>sum)
{
cout<<sum<<endl;
return ;
}
else
sum+=a[i];
}
cout<<sum<<endl;
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
solve();
return 0;
}
J:找最大值
J-找最大值_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)
代码:
#include<bits/stdc++.h>
using namespace std;
int a[100009];
int main()
{
int n;
cin>>n;
int max=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]%2!=0)
{
if(a[i]>max)
{
max=a[i];
}
}
}
cout<<max<<endl;
return 0;
}
K:替换大师
K-替换大师_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)
分别记录在左括号后面出现的逗号,当遇到右括号时, 将括号内的逗号变为句号。
代码:
#include<bits/stdc++.h>
using namespace std;
int a[100009];
int vis[100009];
int main()
{
string s;
int n;
cin>>n;
cin>>s;
int l,r,k,j=1;
for(int i=0;i<n;i++)
{
if(s[i]=='(')
l=i;
else if(s[i]==','&&i>l)
{
a[j]=i;
j++;
}
else if(s[i]==')')
{
r=i;
while(j!=0)
{
if(a[j]>l&&a[j]<r)
s[a[j]]='.';
j--;
}
j=1;
}
}
cout<<s<<endl;
return 0;
}
L:泰拉瑞亚
L-泰拉瑞亚_2023河南萌新联赛第(三)场:郑州大学 (nowcoder.com)
分两种情况:先看只能使用一次的飞镖并且伤害值大于等于最大的多次使用的伤害值,判断能不能每次飞镖只使用一次就可以击败,不可以的话就在看使用多次的。
使用多次的肯定选择伤害值最大的,看剩下的生命值还有多少来判断需要使用几次。
代码:
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);
using namespace std;
struct s
{
int x,y;
}a[1000009];
bool cmp(s a,s b)
{
return a.x>b.x;
}
int main()
{
int n,h;
cin>>n>>h;
for(int i=0;i<n;i++)
cin>>a[i].x>>a[i].y;
sort(a,a+n,cmp);
int max=a[0].x;
long long sum=0,cnt=0;
for(int i=0;i<n;i++)
{
if(a[i].y>=max)
{
sum+=a[i].y;
cnt++;
if(sum-h>=0)
{
cout<<cnt<<endl;
return 0;
}
}
}
long long b=h-sum,ans;
ans=cnt;
if(b%max) ans+=b/max+1;
else ans+=b/max;
cout<<ans<<endl;
return 0;
}