UVA 記憶化搜尋狀壓dp 1252

2021-07-04 20:42:04 字數 973 閱讀 6114

記憶化 搜尋,題目要求求要猜出每個物體所需要的最小次數

開始理解錯題意了,弄成一次性猜出所有的物體

其實是求猜出每個物體的次數中的最大次數

//dp[s][b]

//s : 代表此時詢問過的集合

//b : 代表此時所要猜到的物體w,在集合s中所具有的特徵

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

typedef long long ll;

typedef pairpii;

#define mem(a,b) memset(a,b,sizeof a)

#define clr(a) memset(a,0,sizeof a);

const int inf = 0x3f3f3f3f;

const int mod = 1e9 + 7;

//#define local

int n,m;

char ch[150][15];

int dp[(1<<12)][(1<<12)];

int a[(1<<12)];

int dfs(int s,int b)

if(cnt<=1)return dp[s][b]=0;

for(int i=0;iif(s & (1return dp[s][b];

}int main()

}cout <<  dfs(0,0) << endl;

}return 0;

}

UVa 10817 狀壓 記憶化搜尋

描述 m個教師,n個求職者,s門課程.每門課程至少需要2個老師教,問符合要求的最小值 分析 首先定義狀態 對於每乙個老師只有教或者不叫兩種決策,而方程想要轉移,很容易看出需要知道此時老師教授的情況.故 定義 f i s1 s2 i表示依考慮到前i個老師 s1為乙個老師教的集合 s2為兩個老師教的集合...

POJ 2817 狀壓DP 記憶化搜尋

這個題的意思是第一行給出case數n 1 n 10 然後給出n個單詞,每個一行,當輸入不是正整數的時候結束。每個單詞最多10個字母。要求的是,按任意順序排列這些單詞,可以在單詞前面加任意個空格,使得相鄰的單詞上下對應的字母數目最多,並輸出最多是多少。先預處理出每兩個單詞相連所能對應的字母數最多的情況...

loj 1021 狀壓dp 記憶化搜尋)

題目大意 給定的乙個某進製下的排列,問它的全排列有多少個能夠整除給定的十進位制下的數字k。思路 記憶化搜尋,dp state r 表示在某狀態下被k除餘數為r有多少個。1 include2 include3 include4 include5 include6 using namespace std...