acm寒假集训第一讲总结

1.Long Loong

思路:
读取n,使用for循环输出n个“o”

代码:

#include <iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	cout<<"L";
	for(int i=0;i<n;i++)
	{
		cout<<"o";
	}
	cout<<"ng"<<endl;
	return 0;
}

2.YES or YES?

思路:
读取输入的字符串并和每种可能的情况做比较

代码:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	char ch[5];
	char ch1[]="YES",ch2[]="yES",ch3[]="YeS",ch4[]="YEs",ch5[]="yeS",ch6[]="yEs",ch7[]="Yes",ch8[]="yes";
	for(int i=0;i<n;i++)
	{
		cin>>ch;
		if(strcmp(ch,ch1)==0||strcmp(ch,ch2)==0||strcmp(ch,ch3)==0||strcmp(ch,ch4)==0||strcmp(ch,ch5)==0||strcmp(ch,ch6)==0||strcmp(ch,ch7)==0||strcmp(ch,ch8)==0)
		{
			cout<<"YES"<<endl;
		}
		else
		{
			cout<<"NO"<<endl;
		}
	}
	return 0;
}

3.Even? Odd? G

思路:
以字符串形式读取输入的数字,取最后一位判断奇偶性即可

代码:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
	int n;
	char x[65];
	int len;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>x;
		len=strlen(x);
		if((x[len-1]-48)%2==0)
		{
			cout<<"even"<<endl;
		}
		else
		{
			cout<<"odd"<<endl;
		}
	}
	return 0;
}

4.Problem Generator

思路:
读取字符串,统计每个难度共有几道题,再计算要进行m轮比赛还缺少多少道题目

代码:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int n,m,cnt=0;
		int times[7]={0};
		char ch[55];
		cin>>n>>m;
		cin>>ch;
		for(int j=0;j<n;j++)
		{
			switch (ch[j])
			{
				case 'A':
					times[0]++;
					break;
				case 'B':
					times[1]++;
					break;
				case 'C':
					times[2]++;
					break;
				case 'D':
					times[3]++;
					break;
				case 'E':
					times[4]++;
					break;
				case 'F':
					times[5]++;
					break;
				case 'G':
					times[6]++;
					break;
				default:
					break;
			}
		}
		for(int k=0;k<7;k++)
		{
			if(times[k]<m)
			{
				cnt+=(m-times[k]);
			}
		}
		cout<<cnt<<endl;
	}
	return 0;
}

5.rules

思路:
先判读每一天是否超过一半人遵守规则k,再统计遵守规则k的天数是否超过一半

代码:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
	double n,m,k;
	cin>>n>>m>>k;
	int cnt1=0,cnt2=0;
	int x;
	for(int i=0;i<m;i++)
	{
		cnt1=0;
		for(int j=0;j<n;j++)
		{
			cin>>x;
			if(x==k)
			{
				cnt1++;
			}
		}
		if(cnt1>=n/2)
		{
			cnt2++;
		}
	}
	if(cnt2>=m/2)
	{
		cout<<"YES";
	}
	else
	{
		cout<<"NO";
	}
	return 0;
}

学习总结:
通过这次的学习,我学习到了c++的基础语法和一些书写时的技巧,还学习了时间复杂度的计算方法,了解了关于STL的知识,获得了一些有效的解题思路,尽管没能完成hard等级的题目(TLE),但在讲解时了解到了更高效的代码实现方法,不需要计算每一步的变化过程,只需要计算最终结果,从而提高效率,得出答案。

posted @ 2025-01-23 21:58  asdadsdf  阅读(23)  评论(0)    收藏  举报