题意:
给出9个数分别表示有a[i]数字i,现在这些数字都要用上,但是可以附加任何个0。问能被11整数的数的最小位数是多少。
题解:
01背包的变形有点像数位dp对位进行操作。dp[i][j]表示去了i位并且这些位上的和%11位j,dp[i][j]计算出的是奇数位上数的和为j的情况,之后枚举奇数位,得出偶数位,进行比较取得位数的最小值。
#include<iostream>
#include<math.h>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<vector>
#include<map>
#include<set>
using namespace std;
typedef long long ll;
const int oo=0x3f3f3f3f;
const ll OO=1LL<<61;
const ll MOD= 1000000007;
const int maxn=105;
const int maxm=1005;
int a[10];
int dp[205][12];///去了i位并且奇数位上的和模以11为j是否可达 i和j都作为背包的容量
in