第十三个测试点TLE其他全部200ms以内以内
  • 板块P4933 大师
  • 楼主hefeibazhong
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/29 11:23
  • 上次更新2024/6/29 14:59:32
查看原帖
第十三个测试点TLE其他全部200ms以内以内
1183375
hefeibazhong楼主2024/6/29 11:23

代码如下

#include<iostream>
#include<vector>
#include<cstring>

using namespace std;
int INF=998244353;
vector<int>g[200005];
int h[10005],f[10005][10005];//
void lesson1()
{
	//cout<<1;
	int n;
	scanf("%d",&n); 
	
	for(int i=1;i<=n;i++)scanf("%d",&h[i]);
	memset(f,0,sizeof(f));

	//g[h[1]].push_back(1);//
	//cout<<1;
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++){
			int k=h[j]-h[i];
			int l=h[i]-k;
			f[i][j]=0;
			//cout<<i<<' '<<j<<" "<<k<<" "<<l<<"!\n";
			if(l>=0)//
			for(int t=0;t<g[l].size();t++)
			{
				//cout<<i<<" "<<j<<" "<<l<<" "<<t<<"?\n";
				f[i][j]+=f[g[l][t]][i];
				f[i][j]%=INF;
				//cout<<1;
			}
			f[i][j]+=1;
			//f[i][j]%=INF;//
			ans+=f[i][j];
			ans%=998244353;
		}
		//cout<<"a";
		g[h[i]].push_back(i);
	}/*
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			printf("f[%d][%d]=%d  ",i,j,f[i][j]);
		}
		cout<<"\n";
	}//*/
	printf("%d",(ans+n)%INF);//
}
void lesson2()
{
	for(int i=1;i<=10;i++)cout<<g[i].size();
}
int main()
{
	lesson1();
	return 0;
}
2024/6/29 11:23
加载中...