1 条题解

  • 0
    @ 2026-6-9 20:59:06

    非最优解但是很好理解:

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    #define PII pair<int,int>
    const int N=310,P=998244353;
    int dp[N][N][N];map<PII,int>mp;
    int n,m,a,b,c,d,e,f;
    PII calc(int x,int y,int z){return {x*a+y*c+z*e,x*b+y*d+z*f};}
    signed main()
    {
    	cin>>n>>m>>a>>b>>c>>d>>e>>f;
    	for(int i=1;i<=m;i++)
    	{
    		int x,y;cin>>x>>y;
    		mp[{x,y}]=1;
    	}
    	dp[0][0][0]=1;
    	for(int i=0;i<=n;i++)for(int j=0;j<=n;j++)for(int k=0;k<=n;k++)if(i+j+k<=n)
    	{
    		if(!mp[calc(i+1,j,k)])dp[i+1][j][k]=(dp[i+1][j][k]+dp[i][j][k])%P;
    		if(!mp[calc(i,j+1,k)])dp[i][j+1][k]=(dp[i][j+1][k]+dp[i][j][k])%P;
    		if(!mp[calc(i,j,k+1)])dp[i][j][k+1]=(dp[i][j][k+1]+dp[i][j][k])%P;
    	}
    	int ans=0;
    	for(int i=0;i<=n;i++)for(int j=0;j<=n-i;j++)
    		ans=(ans+dp[i][j][n-i-j])%P;
    	cout<<ans;
    	return 0;
    }
    • 1

    信息

    ID
    9980
    时间
    3000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者