[[MALGOSPOT]]
문제를 풀다가 도저히 다른 방법이 생각나지 않아 질문올립니다.
저는 이문제를 비트마스크의 서브셋을 이용하여
남은 DT[남은 문제수][이미처리된 제출들]을 구하였습니다.
처음에는 배열로 잡으니깐 메모리초과가나서 map을 이용하여 구현 하였더니 시간초과가 나옵니다.
MAP을 이용하더라도 체크하는 배열을만들어 MAP에서 값을 탐색하는 시간을 줄여보려고 시도하였는데 잘안됩니다 ㅜㅜ
고수님들... 도와주세요 ㅜㅜ
~~~ c++
#include
#include
#include
}
}
return DT[submit][accept] = d;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
memset(check,false,sizeof(check));
for(int i = 0;i <= n; i++)DT[i].clear();
for(int i = 0; i < m;i++)
{
int a,t;
scanf("%d",&t);
dbit[i] = 0;
for(int j = 0;j < t; j++)
{
scanf("%d",&a);
dbit[i] |= (1 << a);
}
}
printf("%d\n",memo(n,(1 << m) - 1,0));
shinhj88
[[MALGOSPOT]]
문제를 풀다가 도저히 다른 방법이 생각나지 않아 질문올립니다.
저는 이문제를 비트마스크의 서브셋을 이용하여
남은 DT[남은 문제수][이미처리된 제출들]을 구하였습니다.
처음에는 배열로 잡으니깐 메모리초과가나서 map을 이용하여 구현 하였더니 시간초과가 나옵니다.
MAP을 이용하더라도 체크하는 배열을만들어 MAP에서 값을 탐색하는 시간을 줄여보려고 시도하였는데 잘안됩니다 ㅜㅜ
고수님들... 도와주세요 ㅜㅜ
~~~ c++
#include
#include
#include
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
memset(check,false,sizeof(check));
for(int i = 0;i <= n; i++)DT[i].clear();
for(int i = 0; i < m;i++)
{
int a,t;
scanf("%d",&t);
dbit[i] = 0;
for(int j = 0;j < t; j++)
{
scanf("%d",&a);
dbit[i] |= (1 << a);
}
}
printf("%d\n",memo(n,(1 << m) - 1,0));
}
11년 전