ABC265E 题解
dAniel_lele · · 题解
蛮经典的一道题。
思路
考虑
代码
#include <bits/stdc++.h>
#define int long long
#define double long double
#define mid ((l+r)>>1)
using namespace std;
const int mod=998244353;
int dp[305][305][305];
unordered_map<int,int> mp;
signed main(){
dp[0][0][0]=1;
int n,m;
cin>>n>>m;
int a,b,c,d,e,f;
cin>>a>>b>>c>>d>>e>>f;
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
mp[(x+1000000007)*(2000000114)+(y+1000000007)]=1;
}
int ans=0;
for(int i=0;i<=n;i++){
for(int j=0;j+i<=n;j++){
for(int k=0;k+j+i<=n;k++){
int px=a*i+c*j+e*k,py=b*i+d*j+f*k;
if(mp[(px+1000000007)*(2000000114)+(py+1000000007)]) continue;
if(i+j+k==n){
ans=(ans+dp[i][j][k])%mod;
continue;
}
dp[i+1][j][k]=(dp[i+1][j][k]+dp[i][j][k])%mod;
dp[i][j+1][k]=(dp[i][j+1][k]+dp[i][j][k])%mod;
dp[i][j][k+1]=(dp[i][j][k+1]+dp[i][j][k])%mod;
}
}
}
cout<<ans;
return 0;
}