P4141 消失之物
题目大意:有n个物体,体积为c[i]。cnt(i,x)表示丢失第i个物体时装满容积为x的背包合法种类。用矩阵输出每一个cnt(i,x)的末位数字,x<=m,i<=n。
(1<=m,n<=2000)
算法思路1:01背包变形,递推,暴力。
想法:
1、分n次背包推出丢失第n个物体时1~m容积背包的合法解数,f[i] 表示当前容积为i的背包所拥有的合法解。
2、不要用long long存储合法解数再输出个位,会爆的。
#include<bits/stdc++.h>
using namespace std;
const int N=2010;
int n,m,c[N];
int f[N];
void bag(){
memset(f,0,sizeof(f)); //初始化
f[0]=1;
//定义“零背包”的唯一合法解1种,也就是什么都不放
for(int i=1;i<n;i++){
for(int j=m;j>=c[i];j--){
f[j