Codforces 401D

제목 링크: CF 401D
원래 디지털 DP의 제목인 줄 알고 바로 템플릿을 씌웠는데 바이너리만으로 해당 비트가 이미 선택되었음을 나타내고 선택한 순서가 나타나지 않는 것을 발견했다.
문제풀이를 보니 일반적인 dp처럼 정의된 것으로 dp[i][j]로 집합 i의 점이 선택되었고%m 결과는 j의 방안 총수임을 나타냈다.
마지막 dp【1<#include #include #include #include #include #include #include #include #include #include #define LL long long #define mod 1000000007 #define inf 0x3f3f3f3f #define sqr(a) (a)*(a) #define For(i,m,n) for(int i=m;i<=n;i++) #define Dor(i,n,m) for(int i=n;i>=m;i--) #define lan(a,b) memset(a,b,sizeof(a)) using namespace std; LL n,m; LL dp[1<<18][110]; LL a[20]; LL num[10]; LL f[20]; int len(LL n) { int p=0; while(n) { a[p++]=n%10; num[n%10]++; n/=10; } return p; } int main() { while(~scanf("%lld%lld",&n,&m)) { lan(num,0); lan(dp,0); int p=0; while(n) { a[p++]=n%10; num[n%10]++; n/=10; } sort(a,a+p); for(int i=0;i

좋은 웹페이지 즐겨찾기