• 魔术棋子


    棋盘形可行性dp

    这种首先大力设状态:dp[i][j][k]代表考虑到 i,j;mod之后等于k是否可行,那么转移就很显然了,大力N^3转移就好了

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<set>
    #include<map>
    #include<vector>
    #define maxn 101
    #define int long long
    #define SZJ signed
    #include<time.h>
    #define AK main
    #define half (l+r)>>1
    #define SDOI () 
    using namespace std;
    #define rep(i,a,b) for (int i=a;i<=b;++i) 
    #define dep(i,a,b) for (int i=a;i>=b;i--)  
    #define erpe (i,a) for (int i=head[a];i!=-1;i=e[i].next)
    bool dp[maxn][maxn][maxn];
    int n,m,mx,num[maxn][maxn],ans; 
    SZJ AK SDOI
    {
    	cin>>n>>m>>mx;
    	rep(i,1,n) rep(j,1,m) cin>>num[i][j];
    	dp[1][1][num[1][1]%mx]=1;
    	rep (i,1,n) rep(j,1,m) rep(k,0,mx-1)
    	{
    		dp[i][j][k*num[i][j]%mx]|= dp[i-1][j][k];
    		dp[i][j][k*num[i][j]%mx]|= dp[i][j-1][k];
    	}
    	queue<int>q;
    	rep(i,0,mx) if (dp[n][m][i]) ans++,q.push(i);
    	cout<<ans<<endl;
    	while (!q.empty()) {cout<<q.front()<<" ";q.pop();}
    }
    
  • 相关阅读:
    在简单地形上小车运动轨迹的数学表达(一)
    结尾
    第十四章 多线程编程
    第十五章 进程池与线程池
    第十章 信号
    第十一章 定时器
    第十三章 多进程编程
    第八章 高性能服务器程序框架
    KMP 专场 POJ2752
    约瑟夫问题 双链表实现
  • 原文地址:https://www.cnblogs.com/bullshit/p/9909132.html
Copyright © 2020-2023  润新知