浙江理工大学2024年程序设计竞赛(同步赛)部分题解

A-春天到了,该练习dp了

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

示例1

输入

1
5
1 2 3 4 5
3
1 3 2
1 5 5
3 3 1

输出

19
70
4

备注:

请使用较快的输入输出方式。

C 可以使用 scanf/printf 进行输入输出。

C++ 可以使用 ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) 关闭同步流后,使用 cin/cout 进行输入输出,并使用 \n 替代 endl。

本题主要就是理解题意,根据题意写代码

AC代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e6;
int a[N],b[N],c[N];
signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
			b[i]=b[i-1]+a[i];
		}
		for(int i=1;i<=n;i++)
		c[i]=c[i-1]+i*i;
		int q;
		cin>>q;
		while(q--)
		{
			int l,r,k;
			cin>>l>>r>>k;
			int m=r-l+1;
			cout<<c[m]+b[r]-b[l-1]-c[m-k]<<'\n';
		}
	}
	return 0;
}

G-好像会数学啊

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

兄弟会背叛你,女人会离开你,金钱会诱惑你,生活会刁难你,只有数学不会,不会就是不会,怎么学都不会。


求第一个大于 10^30+50 的质数。

输入描述:

无。

输出描述:

一行一个正整数表示第一个大于 10^30+50 的质数。

可以直接从10^30+50后面加找到最小的质数

#include<bits/stdc++.h>
using namespace std;
int main()
{
    printf("1000000000000000000000000000057");
    return 0;
}

I-神说要有光

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

示例1

输入

5
9
5 1
1 5 b
5 2
2 5 c
5 3
3 6 d
5 4
4 0 e
5 5

输出

aaaaa
aaaaa
aaaac
adaac
dbbbe

本题没有任何算法,只是考了一个简单的思维,读题一步步写就可以了。

AC代码

#include<bits/stdc++.h>
using namespace std;
char s[1010][1010];
int main()
{
  	int n;
  	cin>>n;
  	
  	for(int i=1;i<=n;i++)
  	{
  	   for(int j=1;j<=n;j++)
  	   {
  	   	 s[i][j]='a';
	   }
	}
  	int q;
  	cin>>q;
  	while(q--)
  	{
  		int p,q;
  		char r;
  		cin>>p;
  		if(p==5)
  		{
  			cin>>q;
  			for(int i=1;i<=n;i++)
  			{
  				cout<<s[q][i];
			}
			cout<<endl;
		}
	 	else
		{
		  	if(p==1||p==2)
		  	{
		  		cin>>q>>r;
		  		for(int i=1;i<=n;i++)
  				{
  					if(q==0)
  					break;
  					if(p==1)
  					s[q][i]=r;
  					else
  					s[i][q]=r;
				}
			}
		  	else
		  	{
		  		cin>>q>>r;
		  		for(int i=1;i<=n;i++)
  				{
  					for(int j=1;j<=n;j++)
  					{
  						if(p==3&&i+j==q)
  						s[i][j]=r;
  						if(p==4&&i-j==q)
  						s[i][j]=r;
					}
				}
			}
		}
	}
	return 0;
}

L-今天是个上分的好日子

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

示例1

输入

10

输出

-9

示例2

输入

11101

输出

3

本题需要注意的点就是连胜,当连胜的时候第二把在原来+3的基础上会再+1,第三把会在原来+3的基础上+2,依次类推。

AC代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a,b=0,c=0,d=0;
	string s;
	cin>>s;
	a=s.length();
	for(int i=0;i<a;i++)
	{
		if(s[i]=='1')
		{
			b=b+3;
			c++;
			if(c>=2&&c<=6)
			{
				b+=c-1;
			}
			else if(c>6)
			{
				b=b+5;
			}
		}
		else
		{
			c=0;	
			b=b-12;
		}
}
	
	cout<<b<<endl;
	return 0;
}

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值