CF D. Kefa and Dishes(상태 이동 dp)
3961 단어 dpCodeforces
혼자 가서 주문해. n종에서 m종.모든 요리는 만족도가 있고 그는 k개의 규칙을 제정했다. 만약에 a가 b 전에 먹으면 추가로 만족도를 얻을 수 있다.최대 만족도를 구하다.
아이디어:
문제의 규모가 크지 않기 때문에 (1 ≤ m≤ n ≤ 18, 0 ≤ k≤ n * (n - 1)) 상태이전 dp를 뚜렷하게 사용해야 하는데 무슨 소용이 있습니까?하나의 상태가 필요하다면 st는 요리의 선택 상태를 표시하고 i는 i종 요리를 끝으로 하는 최대치를 표시하며 st의 모든 상황을 두루 돌아다니며 dp[st][i]를 구한다.
#include
#include
#include
using namespace std;
const int MAXN = 1<<18;
typedef long long LL;
int n,m,k;
LL dp[MAXN+10][21];
int bom[30][30];
int a[30];
int Cnt(int st)
{
int res = 0;
for(int i = 0;i < n; i++) {
if(st&(1<return res;
}
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d%d%d",&n,&m,&k);
for(int i = 0;i < n; i++)
scanf("%d",&a[i]);
for(int i = 0;i < k; i++) {
int s,e,v;
scanf("%d%d%d",&s,&e,&v);
s--,e--;
bom[s][e] = v;
}
int maxn = 1<0;
for(int st = 0;st < maxn; st++) {
for(int i = 0;i < n; i++) {
if(st&(1<int flag = false;
for(int j = 0;j < n; j++) {
if(j != i && st&(1<true;
dp[st][i] = max(dp[st][i],dp[st^(1<if(!flag) {
dp[st][i] = a[i];
}
}
if(Cnt(st) == m) {
ans = max(ans,dp[st][i]);
}
}
}
cout<return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【경쟁 프로 전형적인 90문】008의 해설(python)의 해설 기사입니다. 해설의 이미지를 봐도 모르는 (이해력이 부족한) 것이 많이 있었으므로, 나중에 다시 풀었을 때에 확인할 수 있도록 정리했습니다. ※순차적으로, 모든 문제의 해설 기사를 들어갈 예정입니다. 문자열...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.