AtCoder Beginner Contest 229 部分题解

AtCoder Beginner Contest 229 部分题解,第1张

AtCoder Beginner Contest 229 部分题解

今天打了打ABC,结果觉得这应该是一个我做过的最简单的了(题数做的最多的一次)。话不多说,一起来看看吧!

A - First Grid

题目大意

给你2*2的#.组成的图,问你所有的#是否联通

思路:

每个点都判断一遍,一个点可行就输出

CODE:

#include
using namespace std;
char a[3][3];
int main() {
	for(int i=1;i<=2;i++)
		for(int j=1;j<=2;j++)
			cin>>a[i][j];
	if(a[1][1]=='#'&&a[1][2]=='#'||a[1][1]=='#'&&a[2][1]=='#'||a[1][2]=='#'&&a[2][2]=='#'||a[2][1]=='#'&&a[2][2]=='#') 
		cout<<"Yes"< 

B - Hard Calculation

题目大意

两个数相加,如果发生了进位输出Hard,否则输出Easy。

思路:两个数的每一位都加一遍,有一个超过10的就输出Hard.

CODE:

#include
using namespace std;
string str1,str2; 
int main() {
	cin>>str1>>str2;
	for(int i=str1.size(),j=str2.size();i>=0,j>=0;i--,j--)
		if(int(int(char(str1[i])-'0')+int(char(str2[j])-'0'))>=10) {
			cout<<"Hard"< 

C - Cheese

题目大意

给你若干材料,有两个属性ai和bi,ai是每克材料的美味度,bi是有多少克这个材料。问你最多选w克材料的情况下,可以选出最多多少美味度。

思路:用结构体来做,把美味度从高到低排序就行了

CODE:

#include
using namespace std;
long long n,w,ans;
struct ab {
	long long mw,zl;
} a[300010];
bool cmp(ab a,ab b) {
	return a.mw>b.mw;
}
int main() {
	scanf("%lld %lld",&n,&w);
	for(long long i=1; i<=n; i++)
		scanf("%lld %lld",&a[i].mw,&a[i].zl);
	sort(a+1,a+n+1,cmp);
	for(long long i=1;i<=n;i++) {
		if(w>=a[i].zl) ans+=a[i].zl*a[i].mw,w-=a[i].zl;
		else {
			ans+=w*a[i].mw;
			break;
		}
	}
	printf("%lldn",ans);

	return 0;
}

D - Longest X

题目大意

给你一个‘.’和‘X’组成的字符串,你最多可以将k个位置的.换成X,问你,进行 *** 作之后,连续的X最长是多少?

  • 1≤∣S∣≤2×10^5
  • Each character of S is X or .
  • 0≤K≦2×10^5
  • K is an integer.

思路:可以先确定在[l......r]中有多少个‘.’,后面再按情况来就行了

CODE:

#include
using namespace std;
string str;
int k,len,ans,r;
int f[200010];
int main() {
	cin>>str>>k;
	len=str.size();
	for(int i=1; i<=len; i++)
		if(str[i-1]=='.')
			f[i]=f[i-1]+1;
		else
			f[i]=f[i-1];
	for(int l=0; l 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5610514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存