0
点赞
收藏
分享

微信扫一扫

牛客白月赛17【题解】

我是小瘦子哟 2022-05-01 阅读 61

目录

小sun的假期【区间合并】

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n,m;
vector< pair<int,int> >ve,ans;
int main(void)
{
	cin>>n>>m;
	while(m--)
	{
		int l,r; cin>>l>>r;
		ve.push_back({l,r});
	}
	sort(ve.begin(),ve.end());
	int l=ve[0].first,r=ve[0].second;
	for(int i=1;i<ve.size();i++)
	{
		int j=i,flag=0,temp=0;
		while(j<ve.size()&&ve[j].first<=r) flag=1,temp=max(temp,ve[j].second),j++;
		if(flag) r=max(r,temp),i=j-1;
		else
		{
			ans.push_back({l,r});
			l=ve[i].first,r=ve[i].second;
		}
	}
	ans.push_back({l,r});
	int sum=0;
	if(ans.size()) sum=max(sum,ans[0].first-1);
	for(int i=1;i<ans.size();i++) 
		sum=max(sum,ans[i].first-ans[i-1].second-1);
	sum=max(sum,n-ans[ans.size()-1].second);
	cout<<sum;
	return 0;
}

扫雷【模拟】

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m;
string s[N];
int solve(int x,int y)
{
	int cnt=0;
	for(int i=x-1;i<=x+1;i++)
		for(int j=y-1;j<=y+1;j++)
		{
			if(i==x&&y==j) continue;
			if(i<0||i>=n||j<0||j>=m) continue;
			if(s[i][j]=='*') cnt++;
		}
	return cnt;
}
int main(void)
{
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>s[i];
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(s[i][j]=='*') cout<<s[i][j];
			else cout<<solve(i,j);
		}
		puts("");
	}
	return 0;
}

异或和

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int n,x,sum=0; cin>>n;
	for(int i=0;i<n;i++) scanf("%d",&x),sum^=x;
	cout<<sum;
	return 0;
}

解密

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int k1,k2;
string s;
int main(void)
{
	cin>>k1>>k2>>s;
	for(int i=0;i<s.size();i++)
	{
		int w=tolower(s[i])-'a';
		for(int j=0;j<26;j++)
		{
			int sum=j*k1+k2;
			if(sum%26==w)
			{
				if(s[i]>='a') cout<<char(j+'a');
				else cout<<char('A'+j);
			}
		}
	}
	return 0;
}

举报

相关推荐

0 条评论