求题【玄关】
  • 板块学术版
  • 楼主2345A
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/6/2 18:40
  • 上次更新2024/6/2 21:19:14
查看原帖
求题【玄关】
565070
2345A楼主2024/6/2 18:40

原帖

我做了一些站外题,想在洛谷提交一下,请各位大佬帮忙找找,不甚感激。

我好想记起来了两道题的描述:

要给nn个长方形染色,每个长方形的长和宽分别是xx和yy,中心点的坐标为0,现在求染色的总面积。

我的代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
	int n;
	cin>>n;
	int a[n+10][n+10]={0};
	int x,y;
	int maxA=0,maxB=0;
	for(int i=0;i<n;i++)
	{
		cin>>x>>y;
		if(x>maxA)
		maxA=x;
		if(y>maxB)
		maxB=y;
		for(int j=0;j<x;j++)
		{
			for(int k=0;k<y;k++)
			{
				a[j][k]=1;
			}
		}
	}
	ll ans=0;
	for(int i=0;i<maxA;i++)
	{
		for(int j=0;j<maxB;j++)
		{
			if(a[i][j]==1)
			ans++;
		}
	}
	cout<<ans;
	return 0;
}

(似乎是USACO的题目)
有两只奶牛B和E,她们在要玩nn局游戏,规则是这样的,每一局游戏有ss堆石子,每次奶牛只可以取数量是回文数的石子,B先手,如果B有必胜策略,则输出B,否者输出E。

我还自己编了一个样例

in

1
10

out

E

我的代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int cs=0;
int pd(int n)
{
	int ans=n,sum=n;
	ll b[n+1]={0},c[n+1]={0};
	int i=0;
	while(1)
	{
		if(sum==0)
		break;
		ans=sum%10;
		sum=sum/10;
		b[i]=ans;
		i++;
	}
	int k=0;
	for(int j=i-1;j>=0;j--)
	{
		c[k]=b[j];
		k++;
	}
	for(int j=0;j<n;j++)
	{
		if(b[j]!=c[j])
		return 0;
	}
	return 1;
}
int dg(ll a)
{
	for(ll i=a-1;i>=1;i--)
	{
		if(pd(i)==1&&pd(a-i)!=1)
		{
			return 1;
		}
	}
	return 0;
}
int main()
{
	int n;
	cin>>n;
	ll a[n+10]={0};
	for(int i=0;i<n;i++)
	cin>>a[i];
	for(int i=0;i<n;i++)
	{
		if(a[i]<10)
		{
			cout<<"B\n";
			continue;
		}
		if(pd(a[i])==1)
		{
			cout<<"B\n";
			continue;
		}
		if(dg(a[i])==1)
		{
			cout<<"B\n";
			continue;
		}
		else
		{
			cout<<"E\n";
		}
	}
	return 0;
}
2024/6/2 18:40
加载中...