CodeForces Round 933(DIV.3)题解

文章讲述了使用C++编写的三个程序,分别涉及动态内存管理、数组操作(如动态分配和删除)、以及字符串处理(包括字符判断和修改)。程序目的是解决与Rudolf相关的算法问题,如求解数组和整数的组合,以及检查特定字符串模式。
摘要由CSDN通过智能技术生成

A.Rudolf and the Ticket 

#include<iostream>
usiong namespace std;

int main()
{
	int xun;                              //定义总共的测试次数
	cin >> xun;

	for (int i = 0; i < xun; i++)
	{
		int n, m, k;              //定义两个数组的大小以及相加的界限
		cin >> n >> m >> k;
		int* zuo;
		zuo = new int[n];         //利用new进行动态内存分配,使得代码更加的灵活多用,减少了时 
                                  //间的消耗
		for (int j = 0; j < n; j++)//输入第一个组的数有哪些
		{
			cin >> zuo[j];
		}
		int* you;              //同上
		you = new int[m];
		for (int h = 0; h < m;h++)//输入第二个组的数
		{
			cin >> you[h];

		}
		int count = 0;          //统计有多少种情况
		for (int j = 0; j < n; j++)//双重循环将第一组的每一个数都与第二组的每一个数相加一次
		{
			int sum = 0;          //一定放在里头(可以在外面定义,但一定在函数里面赋0值),及 
                                  //时将相加的值归零
			for (int h= 0; h< m;h++)
			{
				sum = zuo[j] + you[h];
				if (sum <= k)      //满足情况加一
					count++;
			}

		}
	cout<<""<< count << endl;
		delete[]zuo;//*****一定要记得delete自己分配的空间,不然随着运行系统就会崩溃*****\\
		delete[]you;//最好就在new完之后马上将delete打出,以防止忘记
                    //(delete一定要在不再需要我们new出来的变量或者数组后)


	}


	return 0;
} 

B. Rudolf and 121

#include<iostream>
using namespace std;

int main()
{
	int xun;                            //测试用例数
	cin >> xun;
	for (int i = 0; i < xun; i++)
	{
		int n;                    //输入数组大小
		cin >> n;
		int* p;
		p = new int[n];
		int ji = 0;
		for (int j = 0; j < n; j++)//输入数组数据
		{
			cin >> p[j];
		}
//这个算法就是从第一个开始每次计算三个,根据题意就是要每一个都减到零吗,那就把我们每次的第一个减到零,那由题可知第二个就要减两倍第一个,第三个减去一倍第一个
//举例现在它输入5个数按顺序是1 3 5 5 2分别是a1,a2,a3,a4,a5
//最前面三个数是1 3 5,1减到零需要减一,3是第二个数就要减二变为1,5就要减一变为4
//现在这五个数就是0 1 4 5 2,再按上述办法下一次就是0 0 2 4 2再一次就变成0 0 0 0 0 
//相当于第一个数是题目中的i-1,我们不断把i-1往后移
		for (int k = 1; k < n-1; k++)//数组最后一个是n-1,最后有个k-1,所以不能取到n-1
		{
			p[k] -= p[k - 1]<<1;
			p[k + 1] -= p[k - 1];
			p[k - 1] = 0;
			if (p[k] < 0)  //如果出现负数那肯定不会满足情况,总不能一负数减正数能减到大于零吧
			{
				ji = 1;
				break;
			}
		}
		if (p[n - 1]!=0 || p[n - 2]!=0)//我们每次都只把三个的第一个减了,到剩下有最后两个, 
         {                                                                 //不要丢了
			ji = 1;
         }

		if (ji)cout << "No" << endl;
		else cout << "Yes" << endl;
		delete[]p;
	}

	return 0;
}

C.Rudolf and the Ugly String

#include<iostream>
using namespace std;
//这个题目其实跟B那题思想是触类旁通的,也是每次读三个,只不过读的是字符型而且要判断两次是否等
//于‘map'或者'pie',唯一我觉得有点坑的就是像“mapie”这个是算的一个,因为相当于先检测到了map然后
//这个p就被用掉了不能再和后面的ie组合;解决也很简单就是我只要读到了“map”或者“pie”就把它变成“ ”
//(空格)我取巧只在读到map后把p变成了空格,因为在这个题目中只会出现这样的叠在一起,但建议读者
//在读到这两个字符串后把他们都空格掉,保持写代码的严谨性,可能在别的题目就不止一种叠加方式
int main()
{
	int xun;
	cin >> xun;
	for (int i = 0; i < xun; i++)
	{
		int l;
		cin >> l;
		char* s;
		s = new char[2*l];
		cin >> s;
		int ji = 0;
		for (int j = 0; j <l-2; j++)
		{
			if (s[j] == 'p'&&s[j+1]=='i'&&s[j+2]=='e')
			{	 
				ji ++;
				continue;
			}
			else if (s[j] == 'm'&&s[j+1]=='a'&&s[j+2]=='p')
			{
				ji++;
				s[j + 2] = ' ';
				//cout <<s[j]<< "," << s[j+1]<<"," << s[j + 2] << endl;
				continue;
			}
			else
				continue;
		}

		cout << "" << ji << endl;

		delete[]s;

	}
	return 0;
}

Codeforces Round 894 (Div. 3) 是一个Codeforces举办的比赛,是第894轮的Div. 3级别比赛。它包含了一系列题目,其中包括题目E. Kolya and Movie Theatre。 根据题目描述,E. Kolya and Movie Theatre问题要求我们给定两个字符串,通过三种操作来让字符串a等于字符串b。这三种操作分别为:交换a中相同位置的字符、交换a中对称位置的字符、交换b中对称位置的字符。我们需要先进行一次预处理,替换a中的字符,然后进行上述三种操作,最终得到a等于b的结果。我们需要计算预处理操作的次数。 根据引用的讨论,当且仅当b[i]==b[n-i-1]时,如果a[i]!=a[n-i-1],需要进行一次操作;否则不需要操作。所以我们可以遍历字符串b的前半部分,判断对应位置的字符是否与后半部分对称,并统计需要进行操作的次数。 以上就是Codeforces Round 894 (Div. 3)的简要说明和题目E. Kolya and Movie Theatre的要求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Codeforces Round #498 (Div. 3) (A+B+C+D+E+F)](https://blog.csdn.net/qq_46030630/article/details/108804114)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Codeforces Round 894 (Div. 3)A~E题解](https://blog.csdn.net/gyeolhada/article/details/132491891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值